Blue-Green Dağıtımı
İki eksiksiz üretim ortamı vardır; trafik birinden diğerine kaydırılır — yeni ortam sorun çıkardığında anında ve tamamen geri dönüşe imkân verir.
Dağıtım ve Hazırlık · Adım 05 · Çalışma Biçimimiz
Geliştirme ve Entegrasyon doğrulanmış yazılım üretir; fakat doğrulanmış olması onun canlı olduğu anlamına gelmez. Bu aşama, yazılımın gerçek üretim trafiğine nasıl, ne zaman ve ne kadar güvenli şekilde açılacağını belirler ve onu işletmekle sorumlu kişilerin yazılım gelmeden önce hazır olmasını sağlar.
OpenQCore'da dağıtım, tek seferlik geri döndürülemez bir an olarak değil, kontrol altına alınmış bir risk açılımı olarak ele alınır. Bir sürüm, kod üretime ulaştığında "tamam" sayılmaz — kademeli olarak açılıp gerçek koşullar altında izlendiğinde ve güvenli olduğu doğrulandığında tamamlanmış sayılır; aksi durumda geri dönmeyi sağlayan tanımlı bir yol olmalıdır.
Bu soru değil
"Kod gönderilmeye hazır mı?"
Bunun yerine şu soru
"Bu değişikliği gerçek kullanıcılara, beklenmedik etkilerin yayılmasını sınırlayacak şekilde nasıl sunarız — ve gerekirse bunu hızlıca geri alabilir miyiz?"
Kademeli Teslimat · Risk Sınırlandırma · Geri Alınabilirlik · Hazırlık · Yetkinleştirme
Neden Dağıtım Doğrulamayı Takip Eder
Önceki aşama bir değişikliğin testler altında kabul kriterlerini karşıladığını teyit eder. Ancak bu, o değişikliğin gerçek üretim yükü, gerçek kullanıcı davranışı veya test ortamında tamamen çoğaltılamayan diğer sistemlerle olan etkileşimler altındaki davranışını doğrulamaz. Dağıtım ve Hazırlık tam da bu farkın var olması ve bu farkı güvenli şekilde kapatmanın ayrı bir disiplin gerektirmesi nedeniyle gereklidir.
Dağıtıma Hazır → Kontrollü Üretime Açma
Neden Dağıtım Disiplini Önemlidir
Geliştirme ve Entegrasyon'da değinilen aynı DORA araştırması — Forsgren, Humble ve Kim'in Accelerate (2018) çalışması — teslimat hızı metriklerini bu aşamada özellikle önemli olan iki kararlılık metriğiyle birlikte ele alır.
Dağıtım Sıklığı
Organizasyonun üretime ne sıklıkla başarıyla sürüm verdiği.
Forsgren, Humble & Kim, Accelerate (2018); DORA, State of DevOps research.
Hizmeti Geri Getirme Süresi
Bir dağıtım üretimi etkilediğinde servisin toparlanmasının ne kadar sürdüğü.
Forsgren, Humble & Kim, Accelerate (2018); DORA, State of DevOps research.
Bu araştırmada yüksek performans gösteren kuruluşlar yalnızca sık dağıtım yapmakla kalmaz — bir sorun çıktığında kurtarma süresini kısa tutacak şekilde dağıtım yaparlar. OpenQCore, bunları birbirinin alternatifi olarak değil tek bir hedef olarak ele alır: bu aşamadaki uygulamalar, dağıtımların hem sık hem de hızlıca geri alınabilir olmasını sağlamaya yöneliktir.
Aşamalı Dağıtım Stratejileri
Humble ve Farley'in etkili çalışması Continuous Delivery (2010) ile tanımlanan uygulamalar, bir değişikliğin dağıtılmasını onu kullanıcılara açmaktan ayırır — OpenQCore bu ayrımı yazılımın üretime ulaşma biçimi için temel bir tasarım kararı olarak ele alır.
İki eksiksiz üretim ortamı vardır; trafik birinden diğerine kaydırılır — yeni ortam sorun çıkardığında anında ve tamamen geri dönüşe imkân verir.
Yeni sürüm önce gerçek trafiğin küçük bir bölümüne açılır, tanımlı sinyallerle izlenir ve bu sinyaller olumlu kaldığında kademeli olarak genişletilir.
Kod, kullanıcılar için etkinleştirilmeden üretime dağıtılabilir — kodu yayınlamak ile bir özelliği kullanıma açmak ayrı süreçler haline gelir.
Dağıtım Ortamları ve Ortama Geçiş
Bir değişiklik geliştirme, hazırlık ve üretim gibi tanımlı ortamlardan geçer; her ortam geçişinde açık bir doğrulama yapılır, tek bir testin ardından doğrudan yayınlanmaz.
Değişikliğin izole olarak oluşturulduğu ve ilk doğrulamasının yapıldığı yer.
Değişikliğin üretime benzer koşullar, yapılandırma ve entegrasyonlar altında doğrulandığı yer.
Değişikliğin gerçek trafiğe — kademeli olarak ve izlenerek — açıldığı yer.
Geri Alma ve Kurtarma Tasarımı
Sistem zaten bozulmuşken karar verilen bir geri alma stratejisi baskı altında, eksik bilgiyle ve genellikle çok geç verilen bir karardır. OpenQCore, bir değişiklik dağıtılmadan önce geri alma yolunu belirler — bir şeyler ters gittikten sonra değil.
Geri almayı tetikleyecek belirli sinyallerin önceden kararlaştırılması — anlık değerlendirmelerle değil.
Dağıtımın getirdiği veri veya şema değişiklikleri göz önüne alındığında geri almanın güvenli olup olmadığının açıkça değerlendirilmesi.
Geri alma gerekiyorsa hizmetin ne kadar hızlı geri getirilmesi gerektiğini belirten hedef.
Altyapı Kodla Yönetimi ve Tekrarlanabilirlik
Dağıtım adımları, bir kişinin doğru sırayı hafızasında tutmasına bağlı manuel işlemler yerine kod olarak tanımlanır — sürüm kontrolünde, gözden geçirilmiş ve her seferinde aynı şekilde çalıştırılır. Bu, yukarıda bahsedilen sürekli dağıtım araştırma alanının temel uygulamalarından biridir: tam olarak yeniden üretilemeyen bir dağıtım süreci doğrulanamaz ve güvenle otomatikleştirilemez.
Dağıtım Risk Değerlendirmesi
Geliştirme ve Entegrasyon aşamasında yapılan tehdit modellemesine uygun olarak, her dağıtım ilerlemeden önce kendi risk profili açısından değerlendirilir.
Bu değişiklik beklenmedik şekilde davranırsa kaç kullanıcı, sistem veya iş akışının etkileneceği.
Gerekirse bu değişikliğin ne kadar hızlı ve temiz biçimde geri alınabileceği.
Hangi alt sistemlerin veya ekiplerin bu dağıtımdan etkileneceği ve bunların bilgilendirilip bilgilendirilmediği.
Aşamalı Yayılma Süreci
Canary (küçük oran) → Belirlenen sinyalleri izle → Maruziyeti genişlet → Belirlenen sinyalleri izle → Tam yayılma. Bu dizide herhangi bir noktada geri alma planlı bir sonuçtur — acil bir doğaçlama değil. Bir sonraki aşamaya geçiş, zamanla otomatik gerçekleşen bir varsayılan değil; mevcut aşamada toplanan kanıtlara dayanılarak verilen bir karardır.
Bu yaklaşım, Google'ın Site Reliability Engineering (2016) çalışmasında anlatılan hata bütçesi kavramını yansıtır: sistemin harcayabileceği, tanımlanmış ve kabul edilebilir bir kararsızlık miktarıdır; böylece sürüm hızı ile güvenilirlik arasındaki takas örtük değil, açık ve ölçülebilir bir karar haline gelir.
Hazırlık: Dokümantasyon ve Ekip Hazırlığı
Dağıtım genellikle yazılım üretimde çalışmaya başladığında tamamlanmış sayılır. OpenQCore ise bunu, yazılımı işletmekten, desteklemekten ve sorun gidermekten sorumlu kişilerin gerçekten hazır olmasıyla tamamlanmış sayar.
Yaygın operasyonel görevler, bilinen hata durumları ve bunlara nasıl müdahale edileceğini belgeleyen prosedürler.
Olaylara müdahale etmekle sorumlu kişilerin gerekli erişimlere, bağlama ve yükseltme yollarına sahip olduklarının teyidi.
Sistemin bundan sonra sahibi olacak ekip veya kuruluşa işletme bilgisi ve anlayışının açık şekilde devredilmesi.
Dağıtım Karar Noktası
Her planlı dağıtım ilerlemeden önce tanımlanmış bir karar noktasına ulaşır.
Risk değerlendirmesi, geri alma planı ve hazır olma koşulları karşılandı — dağıtım gerçekleştiriliyor.
Tespit edilen bir risk henüz yeterince giderilmedi — dağıtım, giderilene kadar bekletilir.
Dağıtılan bir değişiklik tanımlı bir geri alma koşulunu tetikledi — önceki durum geri yüklenir.
Bir dağıtım, standart bir geri almadan öte resmi bir olay müdahalesi gerektirecek bir etki yarattı.
Hiç geciktirmeyen ya da geri almayan bir dağıtım kapısı risk değerlendirmesi yapmıyor; sadece bir takvim kaydı tutuyor.
Bu Aşamanın Çıktıları
Kapsama bağlı olarak bu aşama şunları üretir:
Bu değişikliğin ve benzerlerinin dağıtımı için kullanılan, tekrarlanabilir ve belirli prosedür.
Bu dağıtımı geri almak için tanımlanmış tetik koşulları, izlenecek prosedür ve kurtarma hedef süresi.
Değişikliğin geliştirme, staging ve üretim ortamları arasında nasıl ilerlediğini ve her aşamada nelerin doğrulandığını belgeleyen doküman.
Dağıtımdan önce değerlendirilen etki alanı, geri döndürülebilirlik ve bağımlılıkların ortaya çıkma riski.
Çalıştırma kılavuzları, nöbet hazır olma onayı ve devretme öncesi tamamlanan bilgi aktarımı.
Her aşamada gözlemlenen göstergeler ve tam yayına genişlemeyi destekleyen kanıtlar.
Dağıtımdan İzleme ve Optimizasyona
Dağıtım ve Yetkinleştirme, üretimde güvenle çalışan bir sistem ve onu işletmekle sorumlu kişilerin hazır olmasını sağlar. Ancak bu, sistemin zaman içinde nasıl davrandığına dair sürekli bir anlayış veya onu iyileştirmek için yapılandırılmış bir mekanizma sağlamaz. Bu amaç, metodolojinin bir sonraki ve son aşamasının konusudur.
Kontrollü Üretim Maruziyeti → Operasyonel Hazırlık → İzleme ve Optimizasyon
Adım 06
Canlı bir sistemin nasıl davrandığını gözlemleyin ve gerçek kanıtlara dayanarak sürekli geliştirin.
Araştırma ve Metodolojik Kaynaklar
Forsgren, N., Humble, J. ve Kim, G. — Accelerate: The Science of Lean Software and DevOps (2018); Google Cloud, DORA State of DevOps araştırması
Yukarıda bahsedilen dağıtım sıklığı ve kurtarma süresi ölçümlerinin kaynağı.
Humble, J. ve Farley, D. — Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation (2010)
Yukarıda söz edilen dağıtım/yayın ayrımı, blue-green dağıtım yaklaşımı ve kod olarak altyapı (infrastructure-as-code) ilkelerinin kaynağı.
Beyer, B., Jones, C., Petoff, J. ve Murphy, N. R. (eds.) — Site Reliability Engineering: How Google Runs Production Systems (2016)
Yukarıdaki kademeli dağıtım bölümünde bahsedilen error budget (hata bütçesi) kavramının kaynağı.