Düzenle

Aracılığıyla paylaş


Azure Spring Apps'te uygulamalar için mavi/yeşil dağıtımlar

Azure Spring Apps
GitHub
Azure DevOps

Bu makalede, Azure Spring Apps'te uygulamalar için yüksek kullanılabilirliğe sahip mavi/yeşil dağıtım çözümü açıklanmaktadır.

Mavi/yeşil dağıtım düzeni, uygulamanın mevcut bir sürümünün (mavi sürüm olarak adlandırılır) ve uygulamanın yeni bir sürümünün dağıtılmasını (yeşil sürüm olarak adlandırılır) içerir. Bu dağıtım, yeni uygulama sürümünü bağımsız olarak yeniden başlatmanıza, ısınmanıza ve test etmenizi sağlar. Uygulamanın yeni sürümü çalıştırıldıktan sonra uygulamaya geçebilir ve yeni gelen trafiği bu sürüme yönlendirebilirsiniz. Uygulamanın kullanıcısı için, yeni sürümün dağıtımı görünür kapalı kalma süresi olmadan gerçekleşir. Mavi/yeşil dağıtım, yeni bir dağıtım beklendiği gibi çalışmazsa canlı sürümü etkilemeden yeni bir sürümü bırakmayı kolaylaştırır.

Mimari

Aşağıdaki diyagramda bu yaklaşımın mimarisi gösterilmiştir:

GitHub, GitHub Actions ve Azure Spring Apps kullanan mavi/yeşil dağıtım mimarisini gösteren diyagram.

Bu mimarinin bir Visio dosyasını indirin.

Bileşenler

Bu çözüm aşağıdaki bileşenleri kullanır:

  • Azure Spring Apps , Java Spring Boot ve Steeltoe .NET Core uygulamalarını çalıştırmaya yönelik modern bir mikro hizmet platformudur. Hizmet, mikro hizmetleri çalıştırmak için ortak kodu ortadan kaldırır ve bulutta hızlı bir şekilde sağlam uygulamalar geliştirmenize yardımcı olur. Ayrıca Azure Spring Apps'i kullanarak uygulama başına kod dağıtabilirsiniz.

  • GitHub , sürüm denetimi ve işbirliği sağlayan bir kod barındırma platformudur. GitHub, Git dağıtılmış sürüm denetimi, kaynak kodu yönetimi ve diğer özellikleri sağlar.

  • GitHub Actions , bir deponun içinden yazılım geliştirme ve dağıtım iş akışlarını otomatikleştirmenize yardımcı olur. Tam otomatik sürekli tümleştirme ve sürekli teslim (CI/CD) kurulumu oluşturmak için platformu kullanabilirsiniz. Gözden geçirenlere ihtiyaç duyma gibi kuralları yapılandırabileceğiniz ortamlar oluşturmak için GitHub Actions'ı da kullanabilirsiniz.

İş Akışı

Çözüm mimarisi aşağıdaki iş akışını uygular:

  1. Geliştirici bir uygulamada değişiklik yapar. GitHub deposu, Azure Spring Apps'e dağıtılması gereken uygulama kodunu barındırıyor. Uygulama kodunda yapılan her değişiklik kaynak denetimi altında gerçekleşir. GitHub aşağıdaki görevleri tamamlar:

    • Değişikliklerin gözden geçirildiğinden emin olun.

    • İstenmeyen veya yetkisiz değişiklikleri önleyin.

    • Kalite denetimlerinin tamamlandığından emin olun.

  2. GitHub deposu ayrıca kod değişikliklerini oluşturmak ve gerekli kalite denetimlerini tamamlamak için bir GitHub Actions iş akışına sahiptir. Kod derlendiğinde GitHub Actions iş akışı, uygulama kodunun en son sürümünü Azure Spring Apps'e dağıtır. GitHub Actions iş akışı aşağıdaki adımları içerir:

    1. Geçerli etkin üretim ortamını belirleyin.

    2. Kodu üretim dışı bir ortama dağıtın. Üretim dışı bir ortam yoksa ortamı oluşturun.

      Dağıtımın bu noktasında, üretim dağıtımındaki uygulamanın eski (mavi) sürümü tüm üretim trafiğini almaya devam eder.

    3. Dağıtım gözden geçirmesini ve yeni uygulamanın onayını bekleyin.

      Bu adım, yeni dağıtılan uygulamaya (yeşil sürüm) başlama ve ısınma süresi verir.

      Onaydan önce uygulamanın üretim dışı URL'sini kullanarak yeni sürümü doğrulayabilir ve hazır olduğundan emin olabilirsiniz.

    4. Onaydan sonra üretim dağıtımını ve üretim dışı dağıtımı değiştirin.

      Tüm üretim trafiği artık uygulamanın yeni sürümüne yönlendirilir.

      Not

      Yeni dağıtımı reddederseniz GitHub ortamları değiştirmez. Önceki sürüm üretim trafiğini almaya devam eder.

    5. Onay ve trafik geçişi yaptıktan sonra eski üretim dağıtımını silin.

      Bu temizleme adımı daha uygun maliyetli bir kurulum oluşturur.

Alternatifler

Bu çözüm, dağıtımı otomatikleştirmek için GitHub Actions'ı kullanır. Alternatif olarak Azure Pipelines'ı veya başka bir CI/CD otomasyon sistemini de kullanabilirsiniz. Senaryo dağıtımı bölümünde sağlanan örnek, Azure CLI deyimlerini mümkün olduğunca kullanır, böylece bu kurulumu başka bir otomasyon aracına kolayca çevirebilirsiniz. Bir ortam ayarlamak ve bu ortam üzerinde onay akışı oluşturmak için CI/CD aracını kullanın.

Bu mimaride hedef hizmet olarak Azure Spring Apps ile Dağıtımlar kullanılır. alternatif olarak Azure Uygulaması Hizmeti hazırlama yuvalarını kullanabilirsiniz. Yuva, bir yuva değiştirme işlemi yapılmadan önce yeniden yüklenebilen, ısınabilen ve test edilebilen uygulamanın yeni sürümünü içerir. Yuva değişimi, yeni sürümü üretime geçirir. Bu işlem hizmette yerleşiktir, bu nedenle kurulum kolaydır.

Başka bir alternatif olarak, web uç noktalarını barındıran herhangi bir Azure hizmetini bir yük dengeleme çözümünün arkasına yerleştirebilirsiniz. Bu yaklaşımı kullanırsanız Azure hizmetinin ikinci bir örneğini oluşturabilir ve burada uygulamanızın yeni bir sürümünü dağıtabilirsiniz. Sonraki adım olarak yük dengeleme çözümündeki trafiği uygulamanın yeni sürümünü barındıran Azure hizmetine geçirerek sıfır kapalı kalma süresi dağıtımı oluşturabilirsiniz. Mavi/yeşil dağıtıma yönelik bu yaklaşımın önemli bir yönetim yükü gerektirdiğini unutmayın.

Senaryo ayrıntıları

Bazı bulut uygulamaları için çalışma süresini mümkün olduğunca yüksek tutmak kritik önem taşır. Bir çözüm, maliyetleri iki katına çıkan yüksek kullanılabilirlik yapılandırması kullanmaktır. Bir diğer çözüm de, kesinti sonrasında uygulamayı başka bir bölgede yeniden ortaya çıkaran bir olağanüstü durum kurtarma planıdır. İkincinin maliyeti daha düşük olabilir, ancak uygulamanın tamamını yeniden çevrimiçi duruma getirmek zaman alır.

Bu makalede, bir uygulamanın yeni sürümünün dağıtımı sırasında yüksek kullanılabilirlik sağlamaya yönelik bir süreç açıklanmaktadır. Geleneksel bir yapılandırmada, uygulamanın yeni bitleri uygulamayı barındıran hizmete dağıtılır. Bu yapılandırma genellikle uygulamanın yeniden yüklenmesine ve yeniden başlatılmasına yol açar. Bu işlem sırasında uygulama kullanılamaz.

Bu çözüm, mavi/yeşil dağıtım uygulamak için Azure Spring Apps'i kullanır ve uygulamaların dağıtımını otomatikleştirmeye yönelik adresleri kullanır.

Olası kullanım örnekleri

Bu çözüm, yüksek kullanılabilirlik gerektiren tüm kuruluşlara fayda sağlayabilir. Çözüm, kapalı kalma süresinin iş ve gelir kaybına yol açabileceği e-ticaret ve oyun gibi sektörler için özellikle uygundur.

Sıfır kapalı kalma süresi dağıtımları uygulayarak kullanılabilirliğinizi daha da geliştirebilirsiniz. Daha fazla bilgi için bu makalenin Alternatifler bölümüne bakın.

Dikkat edilmesi gereken noktalar

Aşağıdaki çözümde dikkat edilmesi gerekenler, Azure İyi Tasarlanmış Çerçeve'nin yapı taşlarını uygular. Bu çerçeve, bir iş yükünün kalitesini artırmak için kullanılabilecek bir kılavuz ilke kümesidir. Daha fazla bilgi için bkz . Microsoft Azure İyi Tasarlanmış Çerçeve.

Kullanılabilirlik

Bu çözüm, yeni bir sürümün dağıtımı sırasında uygulamanızın kullanılabilirliğini korumanıza yardımcı olur. Azure Spring Apps'in sağladığı genel SLA'yı artırmaz. Platformdaki hizmet hataları uygulamanızı yine de etkileyebilir.

Bir çözümün yapılandırmanızın genel SLA'sını artırmasını istiyorsanız birden çok bölgede yüksek kullanılabilirliğe sahip bir Azure Spring Apps hizmeti ayarlamayı inceleyin. Bu yaklaşımda, genel bir yük dengeleme çözümüyle yapılandırmayı öne alırsınız.

Ölçeklenebilirlik

Bu çözüm uygulama başına çalışır, bu nedenle mikro hizmet uygulamaları için çok uygundur. Ayrıca uygulama ekiplerinin, genel çözümün çalışma süresini etkilemeden diğer uygulama ekiplerinden bağımsız olarak çalışmasını sağlar.

Bu çözüm, her uygulamanın kendi mavi/yeşil dağıtım iş akışına sahip olduğu uygulama başına temelinde de en iyi şekilde çalışır. Uygulamaları aynı iş akışında birleştirirseniz, bu yapılandırma hızla karmaşık hale gelir, bu nedenle bu yaklaşımı önermeyiz.

Güvenlik

Güvenlik, kasıtlı saldırılara ve değerli verilerinizin ve sistemlerinizin kötüye kullanılmasına karşı güvence sağlar. Daha fazla bilgi için bkz . Güvenlik sütununa genel bakış.

Depo izinlerini ayarlamanın yanı sıra, Azure Spring Apps'e dağıtmak istediğiniz kodu barındıran Git depolarında aşağıdaki güvenlik önlemlerini uygulamayı göz önünde bulundurun:

  • Dal koruması. Uygulamanızın üretim durumunu temsil eden dalları, değişikliklerin doğrudan gönderilmesini önleyin. Her değişiklik teklifinin çekme isteği (PR) olarak gönderilmesini zorunlu kılar. Otomatik denetimler yapmak için PR'leri kullanın. Denetimler, çekme isteğinin oluşturduğu veya değiştirildiği kod üzerinde tüm kodu derlemeyi ve birim testlerini çalıştırmayı içerebilir.

  • Çekme isteği incelemesi. Dört göz ilkesini uygulamak için PR'lerde en az bir gözden geçiren olması gerekir. GitHub kod sahipleri özelliğini, bir depodaki belirli dosyaları gözden geçirmekle sorumlu olan bireyleri veya ekipleri tanımlamak için de kullanabilirsiniz.

  • Sabit bir tarih. Mevcut değişikliklerin üzerinde yalnızca yeni işlemelere izin ver. Sabit geçmiş özellikle denetim amaçları için önemlidir.

  • Diğer güvenlik önlemleri. GitHub kullanıcılarınızın çok faktörlü kimlik doğrulamasını etkinleştirmesini iste. Ayrıca, yalnızca daha sonra değiştirilmeyecek imzalı işlemelere izin verin.

Ayrıca yalnızca bir Azure Spring Apps hizmetine dağıtmanızı öneririz. Bir üretim kurulumunda, kodunuzu üretim ortamına dağıtmadan önce diğer ortamlarda test etmelisiniz. Üretim ortamınız tercihen geliştirme ve test ortamınızdan farklı bir ortamda olmalıdır.

Azure Spring Apps hizmetiniz için ek güvenlik hakkında bilgi için bkz . Azure Spring Apps'i sanal ağda dağıtma. Önerilen dağıtımı uygularsanız GitHub'da barındırılan çalıştırıcıları kullanamazsınız. Dağıtım iş akışı için kendi çalıştırıcınızı kullanmanız gerekir.

DevOps

GitHub Actions iş akışları aracılığıyla bu kurulumun otomasyonu DevOps üretkenliğini artırır. En kullanışlı özelliklerden biri, beklenmedik şekilde davranan değişiklikleri hızla geri döndürme özelliğidir. Yalnızca yeni dağıtımı reddedin.

Teams genellikle aynı uygulama için birden çok ortamı yönetir. Bir uygulamanın farklı Azure Spring Apps hizmetlerine dağıtılan birkaç sürümünün olması normaldir. Tek gerçeklik kaynağı olan Git deposu, şu anda bir kümeye dağıtılan uygulamaların sürümlerini gösterir.

Maliyet iyileştirme

Maliyet iyileştirme, gereksiz giderleri azaltmanın ve operasyonel verimlilikleri iyileştirmenin yollarını aramayı içerir. Daha fazla bilgi için bkz . Maliyet iyileştirme sütununa genel bakış.

Maliyetleri tahmin etmek için Azure fiyatlandırma hesaplayıcısını kullanın.

Azure Spring Apps'in Temel katmanı ve Standart katmanı vardır. Ayrıntılar için bkz . Azure Spring Apps fiyatlandırması. Mavi/yeşil dağıtım stratejisini kullandığınızda, dağıtımınız çalışırken fazladan sanal SPU için yalnızca kısa bir süre için ödeme yapabilirsiniz.

GitHub ücretsiz bir hizmet sunar. Ancak, kod sahipleri veya gerekli gözden geçirenler gibi güvenlikle ilgili gelişmiş özellikleri kullanmak için Ekip planına ihtiyacınız vardır. Daha fazla bilgi için GitHub fiyatlandırma sayfasına bakın.

Senaryo dağıtımı

Bu yapılandırmanın bir örneği için bkz . Azure Spring Apps uygulamaları için otomatik mavi/yeşil dağıtım GitHub deposu. Depo, Bir Bicep şablonu kullanarak Azure Spring Apps hizmetinizi ayarlama adımlarını da içerir.

Katkıda Bulunanlar

Microsoft bu içeriği korur. Aşağıdaki katkıda bulunan özgün içeriği geliştirdi.

Asıl yazar:

Nonpublic LinkedIn profillerini görmek için LinkedIn'de oturum açın.

Sonraki adımlar