13 Şubat 2023 Pazartesi

CI/CD (Continuous Integration/Continuous Delivery)



CI : Sürekli Entegrasyon

CD: Sürekli Teslimat, Sürekli Dağıtım

CI/CD’yi, yeni kodu entegre ederken geliştirme ve operasyon ekiplerinin yaşayacağı sorunlara çözüm olabilmek adına uygulanan bir süreç olarak tanımlayabiliriz.

CI/CD, bir uygulamanın yaşam döngüsü boyunca, devam eden bir otomasyonu ve sürekli izlemeyi tarifler. (entegrasyon, test, teslimat ve dağıtım aşamaları)

CI(continuous Integration), Developerlar tarafından uygulamaya eklenen her yeni kod değişikliklerinin, düzenli olarak, build edilmesi, test edilmesi ve paylaşımlı bir repositoryde (Gitlabi Github vs.) tutulması gerekir. Bir uygulamanın aynı anda geliştirme aşamasında olan birbiriyle çelişebilecek bileşenlerinin oluşturabileceği sorunlara karşı bir çözüm olarak geliştirilmiştir.

CD(continuous delivery), geliştiricinin uygulamaya eklediği her değişikliğin otomatik olarak hata testlerinin yapılması ve GitHub gibi bir havuza yüklenmesini ifade eder. Operasyon ekibi de, bu havuzdan kodun üretim ortamına dağıtımını yapar.





CI’de “build, test ve merge” işlemleri var, 

CD’de havuza otomatik sürüm çıkıyoruz fakat deploy etmiyoruz, ikinci CD’de ise üretim ortamına otomatik dağıtım yapıyoruz.

Modern uygulamalar için, aynı uygulamanın farklı özelliklerini aynı anda yazan farklı geliştiriciler vardır. Nihayi hedef, tüm bu farklı özellikler bir araya getirildiğinde sağlıklı çalışan bir uygulamaya sahip olabilmektir. Diğer taraftan, eğer yalıtılmış olarak bir geliştirici çalışıyorsa, uygulamada yaptığı bir değişiklik, diğer geliştiricilerin  yaptığı değişikliklerle çelişebilir, çakışabilir.

CI’da uygulamayı build etmeyi otomatikleştirdik, unit ve integration testlerini otomotize bir şekilde yaptık, CD’de, doğrulanmış kodumuzu ortak havuzumuzda artık otomatik olarak sürümlüyoruz/yayınlıyoruz. Dolayısıyla, etkili bir CD için, uygulama yaşam döngüsü için zaten planlanmış bir CI’ın yerleşik bir şekilde çalışır olmasını sağlamamız gerekir. CD yani sürekli teslimin amacı, bir anlamda, üretim ortamına dağıtmak için her daim hazır olan bir kod tabanına sahip olmaktır diyebiliriz. Sürekli teslimde, kod değişikliklerinin birleştirilmesinden “üretime hazır yapıların” teslimine kadar her aşama, test ve kod yayınlama otomasyonunu içerir. Bu sürecin sonunda, operasyon ekibi, uygulamayı üretime hızlı ve kolay bir şekilde dağıtabilir.

İyi tasarlanmış bir CI/CD ardışık sürecinin son aşaması sürekli dağıtımdır, ikinci CD. Sürekli teslimat, üretime hazır bir yapının bir kod deposuna yayınlanmasını otomatikleştirirken, sürekli dağıtım, bir uygulamanın üretim ortamına yayınlanmasını/dağıtılmasını otomatikleştirir. Sürekli dağıtım, iyi tasarlanmış test otomasyonunu gerektirir


reference

https://www.linkedin.com/feed/update/urn:li:activity:6860660386396422144/

Hiç yorum yok:

Yorum Gönder