Mavi-Yeşil Dağıtım

Blue-Green deployment is a release strategy that minimizes downtime and risk by running two identical production environments, 'Blue' (current version) and 'Gre...

Mavi-Yeşil Dağıtım, yeni uygulama sürümlerini dağıtmayla ilişkili riski azaltmak ve kesinti süresini en aza indirmek için tasarlanmış bir yazılım sürüm stratejisidir. Bu yaklaşım, 'Mavi' ve 'Yeşil' olarak adlandırılan iki özdeş üretim ortamının sürdürülmesini içerir.

Herhangi bir zamanda, bir ortam (örneğin, Mavi) mevcut canlı uygulama sürümünü çalıştırır ve tüm üretim trafiğine hizmet verir. Diğer ortam (Yeşil) boşta kalır veya test için kullanılır. Uygulamanın yeni bir sürümü dağıtıma hazır olduğunda, boşta olan ortama (Yeşil) dağıtılır.

Yeni sürüm Yeşil ortamına dağıtılıp kapsamlı bir şekilde test edildikten sonra (entegrasyon testleri, performans testleri ve potansiyel olarak küçük bir kullanıcı alt kümesi veya dahili personel ile duman testleri dahil), trafik Mavi ortamından Yeşil ortamına geçirilir. Bu geçiş genellikle tüm gelen istekleri Yeşil ortama yönlendiren bir yük dengeleyici veya yönlendirici tarafından yönetilirken, Mavi ortamı boşta kalır.

Temel avantajı, dağıtım sırasında neredeyse sıfır kesinti süresidir. Geçişten sonra Yeşil ortamındaki yeni sürümle ilgili herhangi bir sorun ortaya çıkarsa, trafik anında Mavi ortamına geri geçirilebilir, bu da hızlı bir geri alma mekanizması sağlar. Mavi ortamı daha sonra bir sonraki güncellemeyi dağıtmak için kullanılabilir veya Yeşil ortamıyla eşleşecek şekilde güncellenebilir.

Dezavantajları, iki özdeş üretim ortamını sürdürme gerekliliğini içerir, bu da altyapı maliyetlerini ve karmaşıklığını ikiye katlar. Özellikle veritabanı şemaları veya durum açısından iki ortam arasındaki tutarlılığı sağlamak da zor olabilir. Hatalı kod dağıtımını önlemek için hazırlık (staging) ortamında kapsamlı testler kritik öneme sahiptir, çünkü geri alma yalnızca önceki sürüm kararlıysa etkilidir.

        graph LR
  Center["Mavi-Yeşil Dağıtım"]:::main
  classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
  classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
  classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
  classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
  linkStyle default stroke:#4b5563,stroke-width:2px;

      

🧒 5 yaşındaki gibi açıkla

Bir tiyatro oyunu için iki özdeş sahne hayal edin. Oyuncular Mavi Sahne'de performans sergiliyor. Bir sonraki perde hazır olduğunda, gösteri Mavi'de devam ederken Yeşil Sahne'de mükemmel bir şekilde kuruyorsunuz. Ardından, yeni perde için seyircinin dikkatini anında Yeşil Sahne'ye kaydırıyorsunuz, Mavi Sahne'yi yedek olarak hazır bırakıyorsunuz.

🤓 Expert Deep Dive

Mavi-Yeşil dağıtımı, artımlı bir dağıtım yerine altyapı çoğaltmasına odaklanan bir kanarya sürümü veya dönen dağıtım biçimidir. Temel mekanizma, iki özdeş sunucu havuzu arasında trafiği değiştirmek için harici trafik yönlendirmesine (örneğin, DNS, yük dengeleyici yapılandırması, ters proxy) dayanır. Veritabanı yönetimi önemli bir zorluk sunar; stratejiler arasında her iki ortam tarafından erişilen tek bir veritabanı örneğinin sürdürülmesi (şema değişiklikleri geriye dönük uyumlu değilse uyumluluk sorunları riski taşır) veya dikkatli senkronizasyon ve geçiş sırasında potansiyel veri geçiş adımlarıyla veritabanı çoğaltmasının kullanılması yer alır. Durum yönetimi, özellikle durum bilgisi olan uygulamalar için sorunsuz geçişi sağlamak üzere dikkatli bir şekilde ele alınmalıdır. Geri alma yeteneği, uygulama kodu hataları için oldukça etkilidir ancak veri bozulması veya kalıcı altyapı yanlış yapılandırmalarıyla ilgili sorunlar için daha az etkilidir. Yedekli altyapıyı sürdürmenin maliyet yükü, yüksek kullanılabilirlik ve azaltılmış dağıtım riski iş değeriyle tartılmalıdır.

📚 Kaynaklar