İçeriğe geç
BilgiKütüphanesi
DevOps

CI/CD Nedir? Sürekli Entegrasyon ve Sürekli Teslim

CI/CD, kodun yazımından yayına kadar olan süreci otomatikleştiren uygulamalar bütünüdür. Continuous Integration sık birleştirme ve otomatik testle hataları erken yakalar; Continuous Delivery/Deployment yayını güvenli bir rutine dönüştürür. Merkezinde derleme-test-dağıtım aşamalarından oluşan pipeline vardır.

İlk yayın: 2 dk okuma2 kaynak

CI/CD, modern yazılım geliştirmede kodun yazıldığı andan kullanıcıya ulaştığı ana kadar geçen süreci otomatikleştiren bir uygulamalar bütünüdür. Kısaltma iki (bazen üç) kavramı birleştirir: Continuous Integration (Sürekli Entegrasyon) ve Continuous Delivery / Continuous Deployment (Sürekli Teslim / Sürekli Dağıtım). Amaç, yazılımı küçük parçalar halinde, sık sık ve güvenle yayınlayabilmektir.

CI/CD'nin çözdüğü sorun, geleneksel geliştirmenin klasik acısıdır: Geliştiriciler haftalarca ayrı ayrı çalışır, sonra tüm değişiklikleri birleştirmeye çalışırken büyük çatışmalar ve beklenmedik hatalarla boğuşur — bu zorlu birleştirme sürecine sektörde "entegrasyon cehennemi" denir. CI/CD bu riski sürekli ve küçük adımlara bölerek dağıtır.

Continuous Integration (Sürekli Entegrasyon)

Sürekli entegrasyonun temel kuralı basittir: Geliştiriciler değişikliklerini sık sık (günde birkaç kez) ortak ana koda birleştirir. Her birleştirmede otomatik bir süreç devreye girer:

  1. Kod derlenir.
  2. Otomatik testler (birim, entegrasyon testleri) çalıştırılır.
  3. Sonuç geliştiriciye hemen bildirilir.

Böylece bir hata ortaya çıktığında, onu yaratan değişiklik birkaç saat içinde yazılmış küçük bir parçadır; haftalar önceki devasa bir yığın değil. Hata ne kadar erken yakalanırsa, düzeltmesi o kadar ucuzdur.

Continuous Delivery ve Continuous Deployment

CI'nin devamı olan bu iki kavram sık karıştırılır:

  • Continuous Delivery (Sürekli Teslim): Testlerden geçen her değişiklik, otomatik olarak yayına hazır hale getirilir. Ancak canlıya alma kararı yine de bir insanın onayına bağlıdır — tek tıkla yayınlanabilecek durumdadır, ama otomatik yayınlanmaz.
  • Continuous Deployment (Sürekli Dağıtım): Bir adım ileri gider. Tüm otomatik aşamalardan geçen değişiklik, insan onayı olmadan doğrudan üretime yayınlanır. Bu, sürece ve test kapsamına çok yüksek güven gerektirir.

İkisinin de hedefi aynıdır: Yayını nadir, riskli ve stresli bir olay olmaktan çıkarıp, sıradan ve güvenli bir rutine dönüştürmek.

Pipeline: İşin aktığı hat

CI/CD'nin kalbinde pipeline (işlem hattı) vardır. Pipeline, kodun geçtiği otomatik aşamaların sıralı bir dizisidir: Derleme, test, güvenlik taraması, paketleme ve dağıtım gibi. Her aşama başarılı olursa bir sonrakine geçilir; biri başarısız olursa hat durur ve kimse bozuk kodu bir sonraki adıma taşımaz. Pipeline tanımı genellikle bir YAML dosyasında, kodun yanında tutulur; böylece sürecin kendisi de sürüm kontrolüyle izlenir.

Temel faydalar

  • Daha hızlı geri bildirim: Hatalar dakikalar içinde, yazan kişi konuyu hâlâ hatırlarken yakalanır.
  • Daha düşük risk: Küçük ve sık yayınlar, büyük ve seyrek yayınlardan çok daha az risklidir; sorun çıkarsa geri alması da kolaydır.
  • Tekrarlanabilirlik: İnsan eliyle yapılan manuel adımlar otomatikleştiği için, "benim makinemde çalışıyordu" türü sürprizler azalır.
  • Hız: Ekip, elle test ve dağıtıma harcadığı zamanı asıl geliştirmeye ayırır.

Nereden başlamalı?

CI/CD'ye başlamanın en doğal yolu, zaten kullandığınız kod deposunun sunduğu araçtır — GitHub Actions, GitLab CI/CD ya da benzeri bir sistem. İlk hedef iddialı olmamalı: Önce her değişiklikte otomatik olarak testleri çalıştıran basit bir pipeline kurmak bile büyük bir kazançtır. Sağlam bir otomatik test takımı olmadan CI/CD'nin değerinin sınırlı kalacağını unutmamak gerekir; sürecin güvenilirliği, testlerin güvenilirliği kadardır. GitLab ve GitHub'ın resmi belgeleri, ilk pipeline'ı adım adım kurmak için kapsamlı rehberler sunar.

Benzer İçerikler