Nedir kardeşim bu Continuous Delivery ? Ha delivery ha deployment, ne farkı var?

Posted by & filed under , .

Continuous Delivery (CD), Continuous Deployment. Bu aralar SDLC’i hızlandırmak isteyen her kurumun ağzından eksik etmediği şeyler.

Nedir bu Continuous Delivery?

Öncelikle şunu belirtelim, continuous delivery, continuous deployment demek değildir. Diyecekseniz ki kelimeler bu kadar mı önemli, evet önemli, çünkü CD sürecini kurumunuza getirdiğinizde, ölçececeğiniz KPI’larda, bu iki farklı kelime farkı yaratan unsur olacak.

Continuous Delivery, yeni ‘feature’ içeren uygulamanızı, onun konfigurasyonunu, veritabanı scriptini, ıvırını-zıvırını, ya üretim ortamına almanız ya da CI adımından sonraki son test stage’ine kadar almanız demektir.

Continuous Deployment ise, yukarda bahsedilen tüm öğeleri hiç bir manuel işlem olmadan üretim ortamına almanız demektir.

Continuous Delivery ile Continuous Deployment arasındaki en temel fark, deliveryde üretim ortamına alınma işleminin zorunlu olmaması. Manuel olarak bir süreci tetikleyerek de bunu yapabilirsiniz. Fakat deployment’da bu işlem otomatik olmalı.

Puppet’dan aldığım bu görsel de gayet açıklayıcı.

E kardeşim o zaman herkes deployment yapar, ne gerek var delivery’e diyor olabilirsiniz. Eğer örneğin bir finans şirketinde çalışıyorsanız ve üretim ortamına çıkışınız belirli regülasyonlara tabiise, ya da üretim ortamına alacağınız ‘feature’, kullanılamaması, kesintisi durumunda çok büyük işsel kayıplara sebep olacaksa ve geri alamayacağınız bir özellikse continuous deployment yapmanız, tüm ‘that’s why it’s business value’ yaklaşımına aykırı olacağı için anlamsız olacaktır.

Bakınız: sırf yazılımcı yazdığı kodun kullanıldığını görsün diye mutlu etmek 🙂

Continuous Deployment daha çok cloud ortamında sunucularını hızlıca geri dönebilen, ortak componenti ve veritabanları olmayan, blue-green, canary gibi release/deployment türlerini hızlıca kullanabilen, işin hatasız olacağını çok geniş verilerle,regresyonlarla koşan, business’ın tüm sorumluluk bendedir, kesinti mesinti hepsinin hesabını ben veriyorum’u diyebildiği şirketlerde kullanıldığını söyleyebiliriz.

Delivery ise, yukardaki tüm endişelere sahip, en ufak hizmet kesintisinde verecek hesabı çok olan şirketler için ideal.

Delivery DevOps pratikleri için olmazsa olmaz, ama deployment olmazsa da olur.

Peki delivery ya da deployment, neden yapmalıyız?

  • Testi sola kaydırdığın sürece, düşük riskli ve hızlı sürümler için. Teste hızlı çıktığın, manuel onaya gelene kadar daha hızlı geldiğin için, ‘faster time to market’.
  • Kesinlikle yine testi sola kaydırdığın sürece, yüksek kalite.
  • Daha az insan çabası. Sürekli otomasyon.
  • Yine testi sola kaydırıp her yerde sürekli otomatik test yaparak, ‘daha iyi ürün.’
  • Süreçle oyalanıp ömür çürüten yazılımcı, operasyoncu, businesscı yerine mutlu ekipler.