İçeriğe geç
Çılgın Yazılım

DevOps ve Sistem Yönetimi

CI/CD Nedir? Küçük Ekipler İçin Otomatik Dağıtım Kurgusu

CI/CD büyük şirketlere özel bir lüks değil. Üç kişilik bir ekipte bile test, kalite kontrolü ve dağıtımı otomatikleştirmek haftada saatler kazandırır.

Çılgın Yazılım Güncellendi: 3 dk okuma

CI/CD Nedir? Küçük Ekipler İçin Otomatik Dağıtım Kurgusu
İçindekiler
  1. Neden gerekli? Elle dağıtımın gizli maliyeti
  2. Hattın temel adımları
  3. Küçük ekip için sade bir başlangıç
  4. Ortam tutarlılığı ve konteynerler
  5. Sırların hat içinde yönetimi
  6. Geri alma (rollback) planı
  7. Hattı hızlı tutmak
  8. Kalite kapıları: neyi engellemeli?
  9. Ölçün: DORA metrikleri
  10. Sonuç

CI/CD, kod değişikliğinden yayına kadar olan yolu otomatikleştirme pratiğidir. Amaç sadece hız değildir; asıl kazanç, aynı adımların her seferinde aynı şekilde çalışmasıdır. Elle yapılan dağıtımda unutulan bir adım vardır; otomatik hatta yoktur.

CI/CD hattının aşamalarını gösteren özet görsel
Her adım başarısız olduğunda hat durur; bozuk kod canlıya ulaşamaz.

Neden gerekli? Elle dağıtımın gizli maliyeti

Elle yapılan bir yayın süreci genelde şöyledir: dosyaları aktar, göçleri çalıştır, önbelleği temizle, birkaç sayfayı elle kontrol et. Ortalama yirmi dakika sürer ve haftada iki kez yapılırsa ayda üç saat eder. Asıl maliyet ise burada değil, unutulan adımlarda ortaya çıkar: önbellek temizlenmediği için eski sürümün görünmesi, göç çalıştırılmadığı için tabloların uyumsuz kalması gibi.

Hattın temel adımları

  1. Tetikleme: Kod ana dala itildiğinde veya birleştirme isteği açıldığında hat otomatik başlar.
  2. Kurulum: Bağımlılıklar temiz bir ortamda kurulur. "Benim makinemde çalışıyordu" sorunu burada biter.
  3. Statik denetim: Kod stili ve statik analiz araçları çalışır; biçim tartışmaları koda değil araca bırakılır.
  4. Test: Birim ve entegrasyon testleri çalışır. Başarısız olursa hat durur ve birleştirme engellenir.
  5. Yapı: Dağıtılacak paket üretilir ve sürüm etiketiyle işaretlenir.
  6. Dağıtım: Test ortamına otomatik, canlıya onay sonrası gönderilir.

Küçük ekip için sade bir başlangıç

Hepsini birden kurmaya çalışmak yaygın bir hatadır. Aşamalı ilerleyin:

  • 1. hafta: Sadece testleri çalıştıran bir hat. Başka hiçbir şey yok.
  • 2-3. hafta: Kod stili denetimi ve statik analiz eklenir.
  • 1. ay: Test ortamına otomatik dağıtım.
  • 2. ay: Canlıya tek düğmeyle, onaylı dağıtım ve geri alma komutu.

Bu sıra, ekibin hatta güven duymasını sağlar. Güven oluşmadan otomatik canlı dağıtım kurmak, ilk hatada tüm sürecin terk edilmesine yol açar.

Ortam tutarlılığı ve konteynerler

Geliştirme makinesiyle sunucunun farklı sürümler çalıştırması, en çok zaman kaybettiren sorunlardan biridir. Konteyner kullanımı bu farkı ortadan kaldırır: uygulama, çalışması için gereken her şeyle birlikte paketlenir. Küçük projelerde konteyner zorunlu değildir, ancak PHP, veritabanı ve eklenti sürümlerinin bir dosyada tanımlı olması bile ciddi kolaylık sağlar.

Sırların hat içinde yönetimi

Otomatik dağıtım, sunucu erişim bilgilerine ihtiyaç duyar. Bu bilgiler asla depoda tutulmamalı, hattın kendi sır yönetimi kullanılmalıdır. Ayrıca dağıtım hesabına yalnızca gereken yetkiler verilmelidir; hattın tüm sunucuda tam yetkili olması, hattı ele geçiren birine tüm sistemi vermek demektir.

Geri alma (rollback) planı

İyi bir dağıtım süreci, geri alınabilir olduğu ölçüde iyidir. Bunun için üç şey gerekir: her sürümün etiketlenmiş olması, önceki sürümün sunucuda durması ve veritabanı değişikliklerinin geriye uyumlu yapılması.

Geriye uyumluluk pratikte şu demektir: yeni sürüm eski veritabanı şemasıyla, eski sürüm de yeni şemayla bir süre çalışabilmelidir. Sütun adı değiştirmek yerine yeni sütun ekleyip iki sürüm boyunca ikisini birden yazmak, geri dönüşü mümkün kılar.

Hattı hızlı tutmak

On beş dakika süren bir hat, geliştiricinin odağını dağıtır ve zamanla atlanmaya başlar. Hızlandırma yolları: bağımlılıkları önbelleğe almak, testleri paralel çalıştırmak, yavaş uçtan uca testleri yalnızca ana dalda koşmak ve yalnızca değişen bölümleri test etmek. Hedef, birleştirme öncesi hattın beş dakikanın altında bitmesidir.

Kalite kapıları: neyi engellemeli?

Hattın değeri, yanlış kodu durdurabilmesindedir. Ancak fazla katı kurallar ekibi hattı atlatmaya iter. Dengeyi kurmak için kuralları ikiye ayırın: engelleyenler ve uyaranlar.

Engelleyici olması gerekenler kısadır: testlerin geçmesi, projenin derlenmesi ve bilinen kritik güvenlik açığı bulunan bağımlılıkların olmaması. Uyarı seviyesinde kalabilecekler ise kod stili tercihleri, test kapsamı yüzdesindeki küçük düşüşler ve karmaşıklık ölçütleridir. Bu ayrım yapılmadığında, biçimsel bir uyarı yüzünden acil bir düzeltmenin yayınlanamaması gibi durumlar ortaya çıkar ve ekibin hatta olan güveni zedelenir.

Ölçün: DORA metrikleri

Sürecin işe yarayıp yaramadığını dört sayı gösterir: dağıtım sıklığı, değişikliğin yayına ulaşma süresi, başarısız dağıtım oranı ve arıza sonrası toparlanma süresi. Bu ölçütler ve arkasındaki araştırma için DORA yayınları iyi bir referanstır. Küçük ekiplerde bile bu dört sayıyı takip etmek, sürecin gerçekten iyileşip iyileşmediğini gösterir.

Sonuç

CI/CD, büyük ekiplerin lüksü değil küçük ekiplerin kaldıracıdır. Sadece testleri çalıştıran bir hatla başlayın, güven oluştukça otomasyonu genişletin ve her adımda geri alma yolunu açık tutun. Yayın yapmanın sıradanlaştığı gün, ekibin hızının kalıcı olarak arttığı gündür.

Beğeniniz benzer içerikleri öne çıkarmamıza yardımcı olur.

Sık sorulan sorular

CI ile CD arasındaki fark nedir?

CI (sürekli entegrasyon) her değişikliğin otomatik derlenip test edilmesidir. CD ise testi geçen sürümün otomatik olarak dağıtıma hazırlanması veya doğrudan yayınlanmasıdır. CI olmadan CD tehlikelidir.

Küçük ekipler için CI/CD gereksiz değil mi?

Tam tersine, küçük ekiplerde daha çok kazandırır çünkü elle yapılan işleri üstlenecek ayrı bir operasyon ekibi yoktur. Sadece testleri çalıştıran basit bir hat bile üretimdeki hataların önemli kısmını keser.

Dağıtım sırasında site kapanmalı mı?

Kısa süreli bir bakım penceresi küçük projelerde kabul edilebilir. Kesintisiz dağıtım isteniyorsa yeni sürüm ayrı bir dizine kurulup bağlantı (symlink) değiştirilerek geçiş yapılabilir.

Veritabanı göçleri otomatik çalışmalı mı?

Evet, ancak geri alınabilir olmalıdır. Sütun silme gibi geri dönüşü olmayan işlemler iki aşamaya bölünmeli: önce kullanımdan kaldırılmalı, birkaç sürüm sonra silinmelidir.

Yazan

Çılgın Yazılım

Ben Evren Çılgın; yazılım geliştirme, web teknolojileri ve sistem tasarımı alanlarında uzmanlaşmış bir geliştiriciyim. Uzun yıllardır hem frontend hem de backend tarafında üretken, ölçeklenebilir ve kullanıcı dostu çözümler üretiyorum.

Hakkımızda Bize ulaşın

Bu konuda bir projeniz mi var?

İhtiyacınızı birkaç cümleyle anlatın; uygun yaklaşımı birlikte belirleyelim.

Projenizi Anlatın

İlgili yazılar

Yorumlar

Henüz yorum yok. Sorunuzu ya da deneyiminizi ilk siz yazın.

Yorum yazın

Yorumunuz onaylandıktan sonra yayınlanır. Ekibimiz gerekirse konuyla ilgili bir yanıt da paylaşır.

Yayınlanmaz; yalnızca gerektiğinde size ulaşmak için.

En az 10 karakter.

Tüm yazılar