Sürekli Teslimat
- İngilizcesi
- Continuous Delivery
- Okunuşu
- kıntinyuıs diliveri
Günlük kullanımda iki ad da yaygın.
Kısaca
Sürekli teslimat, her değişikliği otomatik bir pipeline ile derleyip test ederek canlıya hazırlayan ve yazılımı her an yayınlanabilir tutan pratiktir.
Sürekli teslimat (CD) nedir?
CI/CD'deki CD'nin karşılığı olan sürekli teslimat, yazılımı her an canlı ortama çıkarılabilecek durumda tutma pratiğidir. Sürekli entegrasyondan geçen her değişiklik otomatik bir dağıtım hattında (deployment pipeline) ilerlemeye devam eder; böylece yayın yapmak riskli bir proje olmaktan çıkar ve çoğu zaman tek tıkla verilen rutin bir karara dönüşür. Jez Humble ve David Farley bu yaklaşımı 2010'da yayımlanan Continuous Delivery kitaplarında tarif etti.
Bir dağıtım hattı uygulamayı bir kez derler, sonra aynı çıktıyı, örneğin bir konteyner imajını, bir dizi aşamadan geçirir: birim testleri, bir test ya da staging ortamına dağıtım, otomatik kabul testleri ve bazen performans ve güvenlik kontrolleri. Her ortam aynı otomatik yolla oluşturulup dağıtıldığı için canlıya dağıtım, iyice prova edilmiş bir sürecin bir kez daha çalıştırılmasından ibarettir. Bir şeyler ters giderse önceki sürüm de aynı kolaylıkla yeniden dağıtılabilir.
Sürekli dağıtım (continuous deployment) bir adım daha ileri gider ve son insan onayını kaldırır: pipeline'ı geçen her değişiklik otomatik olarak, çoğu zaman günde birçok kez, canlıya çıkar. Bunun için çok güvenilir bir test takımı, iyi bir izleme ve canary dağıtımları, otomatik geri almalar ve feature flag'ler gibi güvenlik ağları gerekir; feature flag'ler, yeni bir özellik hazır olana dek kapalı kalırken kodun canlıya dağıtılmasını sağlar.
Sürekli teslimat ile sürekli dağıtım aynı CD kısaltmasını paylaşır ve kolayca karıştırılır. Fark tek bir adımdır: sürekli teslimatta her değişiklik çıkmaya hazırdır ve canlıya ne zaman gideceğine bir kişi karar verir; sürekli dağıtımda ise kararı pipeline verir. Hazır bir bavul düşünün: sürekli teslimat bavulu hep hazır tutar, siz de istediğiniz an yola çıkarsınız; sürekli dağıtım ise bavul hazırlanır hazırlanmaz yola çıkar.
Önemli noktalar
- Sürekli teslimat, her değişikliği her an canlıya çıkarılabilir durumda tutar.
- Otomatik bir dağıtım hattı bir kez derler ve aynı çıktıyı her aşamadan geçirir.
- Sürekli teslimatta canlıya çıkışı bir kişi onaylar.
- Sürekli dağıtımda pipeline'ı geçen her değişiklik otomatik olarak yayına girer.
- Feature flag'ler, kodu dağıtmayı bir özelliği kullanıcılara açmaktan ayırır.
Örnek
on: { push: { branches: [main] } }
jobs:
staging:
runs-on: ubuntu-latest
environment: staging
steps:
- uses: actions/checkout@v5
- run: ./deploy.sh staging
production:
needs: staging # runs only after staging succeeded
runs-on: ubuntu-latest
environment: production # with required reviewers: continuous delivery
steps: # without them: continuous deployment
- uses: actions/checkout@v5
- run: ./deploy.sh productionSık sorulan sorular
Sürekli teslimat ile sürekli dağıtım arasındaki fark nedir?
Sürekli teslimatta pipeline'ı geçen her değişiklik canlıya hazırdır, ama ne zaman yayınlanacağını bir kişi seçer. Sürekli dağıtımda elle yapılan bir adım yoktur: geçen her değişiklik otomatik olarak canlıya çıkar.
Sürekli teslimat için sürekli entegrasyon gerekli mi?
Evet. Sürekli teslimat CI'ın üzerine kurulur: yalnızca sürekli entegrasyonla birleştirilmiş, derlenmiş ve test edilmiş değişiklikler hattın geri kalanında ilerleyebilir. CI olmadan teslim edilecek güvenilir bir şey yoktur.
Sürekli dağıtım riskli mi?
Seyrek ve büyük sürümlerden daha az riskli olabilir, çünkü her dağıtım küçüktür ve kolayca geri alınır. Yine de güçlü otomatik testler, sorunları hızla fark eden bir izleme ve hasarı sınırlayan canary dağıtımları ve feature flag'ler gibi araçlar gerektirir.
İlgili sayfalar
- CI/CDDevOps ve Bulut, s. 9CI/CD, kod değişikliklerini sık sık derleyen, test eden ve yayınlayan otomatik pratikler bütünüdür; yazılım kullanıcılara hızlı ve güvenli biçimde ulaşır.
- Sürekli EntegrasyonDevOps ve Bulut, s. 56Sürekli entegrasyon, kod değişikliklerini ana branch'e en az günde bir kez birleştirip her birleştirmeyi otomatik derleme ve testlerle doğrulama pratiğidir.
- Blue-Green DeploymentDevOps ve Bulut, s. 4Blue-green deployment, iki özdeş canlı ortam kullanan ve tüm trafiği eski sürümden yeni sürüme tek seferde geçiren bir yayın stratejisidir.
- Canary DeploymentDevOps ve Bulut, s. 6Canary deployment, yeni bir yazılım sürümünü önce kullanıcıların küçük bir bölümüne sunar, sağlığını kontrol eder ve ardından kademeli olarak herkese yayar.
- Feature FlagDevOps ve Bulut, s. 21Feature flag, koddaki bir özelliği çalışma zamanında açıp kapatan bir anahtardır; ekipler kodu herkese aynı anda yayınlamadan dağıtabilir.
- RollbackDevOps ve Bulut, s. 48Rollback, yeni bir dağıtım hatalara, kesintilere ya da beklenmedik başka sorunlara yol açtığında yazılımı önceki, sorunsuz sürüme döndürme işlemidir.
Kaynaklar
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin