DevOps ve Sürekli Teslimat
DevOps ve sürekli teslimat, yazılım geliştirme ve operasyonları otomasyon, hızlı geri bildirim ve yazılımı sürekli olarak yayınlanabilir durumda tutan bir dağıtım hattı aracılığıyla birleştiren uygulamalardır.
Tanım
DevOps, teslimat döngüsünü kısaltmak amacıyla yazılım geliştirme ve BT operasyonlarını entegre eden kültürel ve teknik uygulamalar bütünüdür; sürekli teslimat ise yazılımın her an güvenilir bir şekilde yayınlanabilmesi için derleme, test ve dağıtımı otomatikleştiren mühendislik disiplinidir.
Kapsam
Bu konu, sürekli entegrasyon ve sürekli teslimat/dağıtım hatlarını; derleme, test ve yayın otomasyonunu; kod olarak altyapıyı (infrastructure as code); konfigürasyon yönetimini; izleme ve gözlemlenebilirliği; geliştirme ve operasyonlar arasındaki kültürel işbirliğini; ve dağıtım sıklığı, öncü süre (lead time), değişiklik-hata oranı ve ortalama kurtarma süresi gibi metrikleri kapsamaktadır.
Temel sorular
- Bir dağıtım hattı, kod taahhüdünden (commit) üretime giden yolu nasıl otomatikleştirmektedir?
- Hangi uygulamalar, kaliteyi korurken yazılımı sürekli olarak yayınlanabilir durumda tutmaktadır?
- Sürekli entegrasyon, teslimat ve dağıtım birbirinden nasıl farklılaşmaktadır?
- Hangi metrikler, yazılım teslimat performansını güvenilir bir şekilde göstermektedir?
Temel kuramlar
- Dağıtım hattı
- Her değişiklik, derleme, otomatik testler ve aşamalı dağıtımdan oluşan otomatik bir hat üzerinden akmakta, hızlı geri bildirim sağlamakta ve geçen her sürümün yayın için bir aday olmasını güvence altına almaktadır.
- DevOps'un Üç Yolu
- Kim'in prensipleri, geliştirme ve operasyonlardan akışı optimize etmeyi, geri bildirim döngülerini güçlendirmeyi ve yüksek performanslı teknoloji organizasyonlarının temeli olarak sürekli deney ve öğrenme kültürünü teşvik etmeyi tanımlamaktadır.
- DORA teslimat performansı metrikleri
- Araştırmalar, yüksek performanslı yazılım teslimat organizasyonlarını düşük performanslı olanlardan istatistiksel olarak ayıran dört anahtar metriği (dağıtım sıklığı, değişiklikler için öncü süre, değişiklik-hata oranı ve hizmeti geri yükleme süresi) belirlemektedir.
Klinik önem
DevOps ve sürekli teslimat, yayın döngülerini aylardan saatlere indirmekte, otomasyon ve küçük parti boyutları aracılığıyla dağıtım riskini azaltmakta ve hem istikrarı hem de verimi artırmaktadır; ampirik çalışmalar bu uygulamaları daha iyi örgütsel performansla ilişkilendirmektedir.
Kanıt ve kılavuzlar
Yıllık DevOps Durum raporları ve Accelerate araştırma programı, sürekli teslimat uygulamalarının yazılım teslimatı ve örgütsel performansla ilişkili olduğuna dair ampirik kanıtlar sunmaktadır.
Tarihçe
DevOps terimi, çevik sistem yönetimi ve kod olarak altyapı (infrastructure-as-code) hareketlerinden yaklaşık 2009 yılında ortaya çıkmış, geliştirme ve operasyonlar arasındaki duvarı yıkmayı hedeflemiştir. Humble ve Farley, sürekli teslimatı 2010 yılında kodifiye etmiş ve sonraki ampirik araştırmalar, yüksek performanslı ekipleri ayırt eden metrikleri resmileştirmiştir.
Tartışmalar
- Sürekli dağıtım ve sürekli teslimat arasındaki fark
- Geçen her değişikliğin otomatik olarak üretime dağıtılıp dağıtılmayacağı (sürekli dağıtım) veya manuel bir yayın kararı beklenip beklenmeyeceği (sürekli teslimat) tartışılmaktadır; cevap risk toleransına, düzenleyici bağlama ve otomatik doğrulamanın olgunluğuna bağlıdır.
Öne çıkan isimler
- Jez Humble
- David Farley
- Gene Kim
- Nicole Forsgren
- Patrick Debois
İlgili konular
Temel eserler
- humble2010
- kim2016
- forsgren2018
Sıkça sorulan sorular
- Sürekli teslimat ve sürekli dağıtım arasındaki fark nedir?
- Sürekli teslimatta, hattı geçen her değişiklik yayınlanabilir durumdadır, ancak üretime dağıtım kararı kasıtlı bir insan eylemidir; sürekli dağıtımda ise bu son adım da otomatiktir, böylece geçen her değişiklik otomatik olarak yayınlanır.
- DevOps bir rol mü yoksa bir uygulama mı?
- DevOps, öncelikli olarak geliştirme ve operasyonları kapsayan kültürel ve teknik uygulamalar bütünüdür, tek bir iş unvanı değildir; bunu sadece yeniden adlandırılmış bir operasyon rolü olarak görmek, ortak sahiplenme ve otomasyon vurgusunu gözden kaçırmak anlamına gelir.