logologo
Ai badge logo

Bu madde yapay zeka desteği ile üretilmiştir.

GitLab

fav gif
Kaydet
viki star outline
gitlab.png
GitLab
Adı
GitLab
Kurucuları
Dmitriy ZaporozhetsSid Sijbrandij
Kuruluş Yılı
2011
Lisans Türü
MIT (Topluluk Sürümü)Ticari Lisans (Enterprise Edition)
Geliştirici
GitLab Inc.
Paketler
GitLab Community Edition (CE) – Açık kaynakGitLab Enterprise Edition (EE) – Ticarikurumsal destekli
Temel Bileşenler
GitLab RailsRedisPostgreSQLGitalySidekiqWorkhorseNGINX
Web Sitesi
https://about.gitlab.com
Kayıtlı Merkezi
San FranciscoKaliforniyaABD
Desteklenen Platformlar
Linux (resmi)DockerKubernetesBulut servisleri (AWSGCPAzure)

GitLab, 2011 yılında Dmitriy Zaporozhets ve Sid Sijbrandij tarafından San Francisco, Kaliforniya'da kurulmuştur. Yazılım geliştirme süreçlerini hızlandırmayı, hataları erken aşamalarda tespit etmeyi ve süreci otomatikleştirmeyi amaçlayan bir platformdur. GitLab, yazılım geliştirme yaşam döngüsünün tüm aşamalarını kapsayan açık kaynaklı ve entegre bir DevOps platformudur. Sürekli Entegrasyon (CI) ve Sürekli Dağıtım (CD) gibi temel DevOps metodolojilerini uygulamak, güvenlik testlerini otomatikleştirmek, konteyner yönetimini sağlamak gibi işlemleri tek bir sistem altında birleştirir.


GitLab'ın yapısı, DevOps metodolojilerinin yanı sıra yazılım güvenliğini de entegre eden DevSecOps yaklaşımını destekleyecek şekilde tasarlanmıştır. Bu platform, yazılım geliştirme ekiplerinin daha verimli çalışmasına olanak tanırken, yazılım süreçlerinin hızlandırılmasını, güvenliğini ve kalitesini artırmayı hedefler.

GitLab’ın Temel Özellikleri

Kod Yönetimi (Version Control System)

GitLab, Git sürüm kontrol sistemini temel alır. Kullanıcılar; dallanma, birleştirme (merge request), commit geçmişi ve kod gözden geçirme gibi işlevleri doğrudan GitLab arayüzünden gerçekleştirebilir. Bu, ekiplerin asenkron ve güvenli kod geliştirme süreçlerini kolaylaştırır.

CI/CD (Continuous Integration & Continuous Deployment)

GitLab CI/CD, her commit sonrasında otomatik test, derleme ve dağıtım akışlarını destekler. YAML tabanlı gitlab-ci.yml dosyasıyla pipeline tanımları kolayca oluşturulabilir. GitLab Runner’lar, bu süreçleri çalıştıran ajanlardır ve hem lokal hem de Kubernetes ortamlarında çalıştırılabilir.

Proje ve Sürüm Yönetimi

  • Issue takip sistemi
  • Kanban panoları
  • Milestone bazlı sürüm planlaması
  • Otomatik sürüm numaralandırma ve etiketleme

GitLab, sadece geliştiriciler için değil, ürün yöneticileri ve proje yöneticileri için de kapsamlı araçlar sunar.

DevSecOps Uyumlu Güvenlik Özellikleri

GitLab, yazılım güvenliğini yaşam döngüsünün her aşamasına entegre eder:

  • Static Application Security Testing (SAST)
  • Dynamic Application Security Testing (DAST)
  • Container Scanning
  • License Compliance

Bu güvenlik testleri, pipeline'lar aracılığıyla otomatik biçimde tetiklenebilir.

GitLab Mimarisi

GitLab’ın esnek ve ölçeklenebilir mimarisi, özellikle büyük kurumların yüksek trafikli yazılım süreçlerini yönetebilmesini sağlar. Aşağıdaki bileşenler, bu mimarinin temelini oluşturur:


GitLab Rails: GitLab’ın temel servisidir. Web arayüzü, REST API ve birçok arka uç hizmetini yöneten ana bileşendir. Kullanıcı etkileşimlerinin büyük çoğunluğu bu katmanda gerçekleşir.


PostgreSQL: GitLab tarafından kullanılan ilişkisel veritabanı yönetim sistemidir. Tüm kullanıcı verileri, projelere ait metaveriler, sürüm geçmişi ve yapılandırma bilgileri burada saklanır.


Redis: Oturum yönetimi, önbellekleme ve iş kuyruklarının yönetimi için kullanılan yüksek hızlı, bellek içi veri deposudur. GitLab’ın performansını artırmak için kritik öneme sahiptir.


Sidekiq: Arka planda çalışan işleri yönetmek üzere yapılandırılmış işleyici sistemidir. E-posta bildirimleri, pipeline tetikleyicileri gibi zamanlama gerektiren görevler bu yapı aracılığıyla yürütülür.


Nginx: Kullanıcıdan gelen HTTP ve HTTPS isteklerini GitLab bileşenlerine yönlendiren bir ters proxy (reverse proxy) sunucusudur. Aynı zamanda TLS şifreleme trafiğini sonlandırma görevini de üstlenir.


Gitaly: Git deposu işlemlerinin merkezi olarak yürütülmesini sağlayan özel arka plan servisidir. Git işlemleri (örneğin, klonlama, çekme, birleştirme) Gitaly tarafından yüksek verimlilikle gerçekleştirilir.


GitLab Workhorse: HTTP katmanında çalışan bir proxy sunucusudur. Büyük dosya yükleme, API isteği yönlendirme ve içerik dönüştürme gibi operasyonları optimize eder ve ana Rails uygulamasına yük bindirmeden destek sağlar.


Prometheus + Grafana: GitLab’ın sistem kaynaklarını ve performans metriklerini izlemek için kullanılan gözlemleme araçlarıdır. Prometheus veri toplarken, Grafana bu verileri görsel olarak analiz edilebilir hale getirir.


GitLab, bu bileşenlerin yatay olarak dağıtılabildiği reference architecture’lar da sunar. Yüksek erişilebilirlik (HA) ve yük dengeleme gereksinimlerine göre PostgreSQL cluster'ları, Gitaly sunucuları ve CI Runner node'ları ayrı ayrı konuşlandırılabilir.

GitLab Uygulama Mimarisi: Bileşen Tabanlı Bir İnceleme

Aşağıda sunulan mimari şema, GitLab'ın monolitik ancak modüler yapısını yansıtarak, sistem bileşenlerinin birbirleriyle nasıl etkileşime girdiğini detaylı biçimde ortaya koymaktadır. GitLab’ın mimarisi, kullanıcıdan gelen HTTP/SSH isteklerinin iç sistem bileşenleri (Rails, Redis, PostgreSQL, Gitaly vb.) tarafından nasıl işlendiğini gösterir. Bu yapı, hem yazılım geliştirme ekiplerinin verimliliğini artırmakta hem de yüksek erişilebilirlik ve performans hedeflerine ulaşılmasını mümkün kılmaktadır. (https://panlw.github.io/15365441001781.html)

Gitlab Uygulama Mimarisi- Gitlab

Giriş Noktaları ve Yönlendirme Katmanı

NGINX

  • GitLab sistemine gelen tüm HTTP (80) ve HTTPS (443) istekleri, ilk olarak NGINX tarafından karşılanır.
  • NGINX, ters proxy (reverse proxy) görevini üstlenerek gelen trafiği GitLab Workhorse bileşenine yönlendirir.
  • Aynı zamanda TLS sonlandırma işlemi de bu katmanda gerçekleştirilir.

GitLab Shell

  • Kullanıcıların SSH (TCP 22) üzerinden gerçekleştirdiği Git işlemleri, doğrudan GitLab Shell üzerinden yönetilir.
  • GitLab Shell, istemci isteklerini Rails uygulamasına yönlendiren ve kimlik doğrulamasını sağlayan bir arayüz görevi görür.

Uygulama Katmanı

GitLab Workhorse

  • NGINX’ten gelen isteklerin işlenmesini optimize eden bir ara katmandır.
  • Büyük dosya yüklemeleri, API çağrılarının ön işlemesi ve içerik önbellekleme gibi görevleri üstlenir.
  • Gerektiğinde istekleri doğrudan Unicorn (veya modern kurulumlarda Puma) sunucusuna iletir.

Unicorn (GitLab Rails)

  • GitLab’ın asıl uygulama mantığını yürüten sunucudur. REST API uç noktalarını ve web arayüzünü barındırır.
  • Kullanıcı arabirimi, proje yönetimi, issue takibi ve pipeline tetikleyicileri gibi işlevler bu katmanda gerçekleşir.
  • Redis ve PostgreSQL ile sürekli etkileşim halindedir.

Destek ve Arka Plan Katmanları

Redis

  • Hem önbellekleme (cache) hem de iş kuyruğu yönetimi için kullanılmaktadır.
  • GitLab Workhorse, Unicorn, Sidekiq ve Gitaly gibi bileşenler Redis ile veri alışverişi yapar.
  • Redis, kullanıcı oturumlarının yönetimi ve iş yüklerinin sıraya alınması açısından kritiktir.

PostgreSQL

  • GitLab’ın tüm yapısal ve kullanıcı verileri PostgreSQL ilişkisel veritabanında saklanır.
  • Projeler, commit geçmişi, kullanıcı bilgileri ve metadata verileri burada tutulur.
  • Rails sunucusu bu veritabanı ile doğrudan bağlantı kurar.

Sidekiq

  • Arka planda çalışan görevleri (arka plan işleri) işleyen bileşendir.
  • E-posta bildirimleri, webhook tetikleyicileri, zamanlanmış işler ve CI süreçleri burada yürütülür.
  • Redis üzerinden sıraya alınan görevleri çeker ve işler.

Depo Katmanı

Gitaly

  • GitLab’ın kaynak kod yönetimini sağlayan özel bileşenidir.
  • Tüm Git işlemleri (klonlama, push/pull, diff, blame vs.) Gitaly sunucusu üzerinden yönetilir.
  • Verimlilik açısından ayrı bir katmanda çalıştırılır ve GitLab Rails ile entegre çalışır.

Yardımcı Hizmetler

GitLab Pages (TCP 8090)

  • GitLab, projelerin statik içeriklerini yayınlamayı destekleyen GitLab Pages bileşenini içerir.
  • Örneğin, Jekyll veya Hugo ile oluşturulmuş belgeler bu sunucuda yayınlanabilir.
  • İstekler, NGINX üzerinden Pages sunucusuna yönlendirilir.

Kapsayıcı (Container) ve Kayıt Sistemleri

GitLab, Docker tabanlı geliştirme ve dağıtım süreçlerine tam destek sağlar. Kullanıcılar kendi container registry’lerini GitLab üzerinden oluşturabilir, yönetebilir ve pipeline’larla entegre edebilirler. Bu sayede dış bağımlılıklar azalır, süreçler kapalı devre güvenli bir ortamda sürdürülür.

Eğitim ve Dokümantasyon Olanakları

GitLab, açık kaynak doğası gereği zengin bir eğitim ve dokümantasyon altyapısına sahiptir. GitLab University, CI temellerinden gelişmiş pipeline yapısına kadar birçok konuda interaktif öğrenme yolları sunar.

Akademik ve Endüstriyel Kullanım Örnekleri

  • Zürih Üniversitesi (Vassallo, 2020): GitLab’ın, öğrenci projelerinde sürekli entegrasyon ve geri bildirim sistemi olarak kullanıldığı belgelenmiştir.
  • OSTI & DOE (ABD Enerji Bakanlığı): GitLab, enerji sistemleri yazılımının sürüm kontrolü ve kod bütünlüğünü korumak için aktif kullanılmaktadır.
  • Springer (2020): GitLab, bilimsel araştırmalarda veri analitiği pipeline'larının kontrolü için önerilen sistemler arasında gösterilmektedir.


GitLab, çağdaş yazılım geliştirme ihtiyaçlarına cevap verebilecek tam entegre bir DevOps platformudur. Sürüm kontrolü, CI/CD, güvenlik, izleme ve iş birliği gibi tüm ihtiyaçlar tek bir yapı altında sağlanırken; açık kaynak yapısı, özelleştirilebilirliği ve kurumsal uyumu sayesinde her ölçekte organizasyona hitap etmektedir.


GitLab’ın sunduğu modüler mimari ve yüksek ölçeklenebilirlik kapasitesi, geleceğin otomatize yazılım üretim süreçleri için ideal bir temel sunmaktadır.

Kaynakça

GitLab. “CI/CD Pipelines.” GitLab Documentation. https://docs.gitlab.com/ci/. Erişim tarihi: 15 Mayıs 2025.

GitLab. “Container Registry.” GitLab Documentation. https://docs.gitlab.com/user/packages/container_registry/. Erişim tarihi: 15 Mayıs 2025.

GitLab. “Development Architecture.” GitLab Documentation. https://docs.gitlab.com/development/architecture/. Erişim tarihi: 15 Mayıs 2025.

GitLab. “Features.” GitLab.com. https://about.gitlab.com/features/. Erişim tarihi: 15 Mayıs 2025.

GitLab. “GitLab CI Fundamentals.” GitLab University. https://university.gitlab.com/learning-paths/gitlab-ci-fundamentals. Erişim tarihi: 15 Mayıs 2025.

GitLab. “Reference Architectures.” GitLab Documentation. https://docs.gitlab.com/administration/reference_architectures/. Erişim tarihi: 15 Mayıs 2025.

GitLab. “Runner.” GitLab Documentation. https://docs.gitlab.com/runner/. Erişim tarihi: 15 Mayıs 2025.

GitLab. “Security Hardening.” GitLab Documentation. https://about.gitlab.com/security/hardening/. Erişim tarihi: 15 Mayıs 2025.

Pan, Liwen. “GitLab Architecture: Internal Components Overview.” panlw.github.io. https://panlw.github.io/15365441001781.html. Erişim tarihi: 15 Mayıs 2025.

Simplilearn. “What Is GitLab?” Simplilearn Git Tutorial. https://www.simplilearn.com/tutorials/git-tutorial/what-is-gitlab. Erişim tarihi: 15 Mayıs 2025.

Springer. “A Comparative Study on CI/CD Tools in Research.” Springer Open Access. https://link.springer.com/content/pdf/10.1186/s41469-020-00087-8.pdf. Erişim tarihi: 15 Mayıs 2025.

TechTarget. “GitLab Definition.” TechTarget WhatIs. https://www.techtarget.com/whatis/definition/GitLab. Erişim tarihi: 15 Mayıs 2025.

Vassallo, Cristina, Alberto Bacchelli, Harald Gall, ve Michele Lanza. “CI/CD Feedback in Student Software Engineering Projects.” Proceedings of the 2020 IEEE/ACM 42nd International Conference on Software Engineering: Software Engineering Education and Training (ICSE-SEET). ZORA Repository, University of Zurich. https://www.zora.uzh.ch/id/eprint/198329/1/VassalloFSE2020.pdf. Erişim tarihi: 15 Mayıs 2025.

OSTI. “Modern DevOps Infrastructure for Scientific Applications.” U.S. Department of Energy (OSTI)https://www.osti.gov/servlets/purl/1594298. Erişim tarihi: 15 Mayıs 2025.

Sen de Değerlendir!

0 Değerlendirme

Yazar Bilgileri

Avatar
Ana YazarRamazan Cüneyt Küçük14 Mayıs 2025 08:38
KÜRE'ye Sor