Deployment (Yayına Alma) Nedir?
Kısa tanım
Deployment (yayına alma), bir yazılımın yeni sürümünün test edilmiş build çıktısının canlı ortama kurulup çalışır hâle getirilmesi sürecidir. Dosyaların veya container imajlarının sunuculara aktarılmasını, veritabanı değişikliklerinin uygulanmasını, yeni sürümün başlatılıp sağlık kontrolünden geçirilmesini ve trafiğin ona yönlendirilmesini kapsar. Deployment teknik kurulumu anlatır; özelliğin kullanıcılara açılması olan release'ten ayrı düşünülebilir.
Diğer adları: Yayına Alma, Canlıya Alma, Dağıtım, Deploy, Software Deployment

Deployment ve release aynı şey değil
Günlük dilde “canlıya aldık” cümlesi iki farklı olayı anlatabilir. Deployment, yeni kodun canlı altyapıya kurulup çalışmaya başlamasıdır. Release ise bir özelliğin kullanıcılara açılmasıdır. İkisi çoğu projede aynı anda olur, ama ayrılabilir: yeni bir ödeme ekranı, bir özellik bayrağının (feature flag) arkasında kapalı olarak canlıya deploy edilir, önce şirket içinde denenir, ardından kullanıcıların bir kısmına ve sonra herkese açılır.
Bu ayrım riski azaltır. Kodun kurulması ile davranışın değişmesi farklı anlara bölündüğünde, sorunlu bir özelliği kapatmak için yeni bir deployment gerekmez; bayrağı kapatmak yeter.
Bir deployment'ın adımları
- Artifact seçimi: Build sürecinden çıkan ve testlerden geçen paket ya da container imajı, sürüm etiketiyle belirlenir.
- Veritabanı değişiklikleri: Gerekli migration'lar uygulanır.
- Yeni sürümün başlatılması: Yeni örnekler ayağa kalkar ve sağlık kontrolünden geçer.
- Trafiğin aktarılması: Yük dengeleyici veya reverse proxy istekleri yeni sürüme yönlendirir.
- Gözlem: Hata oranı, yanıt süreleri ve iş metrikleri bir süre yakından izlenir.
- Temizlik: Eski sürüm, geri dönüş ihtiyacı kalmayınca kapatılır.
Bu adımların elle yapılması hem yavaştır hem de her seferinde farklı sonuç doğurabilir. CI/CD hatları, deployment'ı her seferinde aynı biçimde çalışan bir komuta indirger.
Deployment stratejileri
| Strateji | Nasıl çalışır? | Kesinti ve risk |
|---|---|---|
| Recreate | Eski sürüm durdurulur, yenisi başlatılır | Kısa bir kesinti olur; basit ama kaba |
| Rolling | Örnekler birer birer yeni sürümle değiştirilir | Kesinti yok; geçiş sırasında iki sürüm birlikte çalışır |
| Blue-green | Yeni sürüm ayrı bir ortamda hazırlanır, trafik tek hamlede çevrilir | Geri dönüş anlıktır; kaynak ihtiyacı iki katına çıkar |
| Canary | Yeni sürüm önce trafiğin küçük bir kısmına verilir, sorun yoksa artırılır | Hatanın etkisi sınırlı kalır; iyi izleme gerektirir |
Ayrıntılar için blue-green deployment ve canary deployment maddelerine bakabilirsiniz. Hangi strateji seçilirse seçilsin, sorun çıktığında önceki sürüme dönüş yolu deployment başlamadan bellidir.
En zor kısım: veritabanı
Kod geri alınabilir; silinmiş bir sütun ise kolayca geri gelmez. Rolling ve canary stratejilerinde eski ve yeni sürüm bir süre aynı veritabanını birlikte kullanır, bu yüzden şema değişiklikleri iki sürümle de uyumlu olmalıdır. Yaygın yöntem “genişlet ve daralt” (expand and contract) yaklaşımıdır: önce yeni sütun eklenir ve iki sürüm de çalışmaya devam eder; kod yeni sütuna geçtikten ve veri taşındıktan sonra, ayrı bir deployment'ta eski sütun kaldırılır.
Başarılı bir deployment nasıl anlaşılır?
Komutun hatasız bitmesi yeterli değildir. Deployment sonrasında kritik sayfaların ve uç noktaların yanıt verdiğini doğrulayan kısa duman testleri (smoke test) çalıştırılmalı, hata oranı ve yanıt süreleri önceki sürümle karşılaştırılmalıdır. Hangi eşik aşıldığında geri dönüleceği önceden yazılı olursa, kriz anında tartışma yerine karar uygulanır. Kullanıcıların bakım sırasında görebileceği sayfalar için de doğru durum kodunun döndürülmesi, arama motorlarının geçici kesintiyi kalıcı bir sorun gibi algılamasını önler.

