Azure Geliştirici CLI ile tam yığın dağıtımı

Ön uç ve arka uç hizmetlerini birleştiren tam yığın uygulamaları, modern web geliştirmede yaygın bir desendir. Azure Geliştirici CLI'sı (azd), ön ucun ve arka ucun ayrı hizmetler olarak barındırıldığı tam yığın uygulamaları dağıtmayı destekler. Bu makale, azd kullanarak tam yığın uygulamaların nasıl dağıtılacağını açıklar ve etkili dağıtım stratejilerini ve avantajlarını vurgular.

Tam yığın kurulum nedir?

ile tam yığın dağıtımı azd genellikle şunlardan oluşur:

  • Ön uç hizmeti: Genellikle React, Angular, Vue veya Blazor gibi çerçevelerle oluşturulmuş, kullanıcıya yönelik bir web uygulaması. Ön uç statik bir site veya kapsayıcılı uygulama olarak barındırılabilir.
  • Arka uç hizmeti: İş mantığı, veri erişimi ve tümleştirmeleri işleyen bir API veya hizmet katmanı. Uygulamanın sunucu tarafı genellikle kapsayıcılarda veya sunucusuz işlevler olarak barındırılır.
  • Paylaşılan kaynaklar: Veritabanları, depolama hesapları, anahtar kasaları ve her iki hizmetin de kullanabileceği diğer Azure kaynakları.

By using azd, her iki hizmeti de bir azure.yaml dosyada tanımlayabilir ve kod olarak altyapı kullanarak (Bicep veya Terraform) birlikte sağlayabilirsiniz.

Azure Geliştirici CLI yaşam döngüsü

Azure Geliştirici CLI'sı, farklı yaşam döngüsü olaylarına sahip yapılandırılmış bir iş akışını izler:

Paket, sağlama ve dağıtma aşamalarıyla Azure Geliştirici CLI yaşam döngüsünü gösteren diyagram.

  1. Paket: Uygulama kaynak kodunuzu oluşturun ve yapıtları dağıtım için hazırlayın.
  2. Sağlama: Bicep veya Terraform kullanarak Azure altyapı kaynakları oluşturun veya güncelleştirin.
  3. Dağıtma: Paketlenmiş uygulama kodunuzu sağlanan altyapıya dağıtın.

Komut üç azd up aşamayı da sıralı olarak çalıştırır. Daha ayrıntılı denetim için , azd packageve azd provision kullanarak azd deployher aşamayı bağımsız olarak da çalıştırabilirsiniz. Bu yaşam döngüsünü anlamak, özellikle zamanlama ve sıranın önemli olduğu tam yığın dağıtımlarında hizmetler arasındaki bağımlılıkları yönetmek için gereklidir.

Yaşam döngüsü ve iş akışı özelleştirmesi azd hakkında daha fazla bilgi için bkz. Azd up iş akışını keşfetme.

Altyapı tasarımında dikkat edilmesi gerekenler

ile azdtam yığın uygulaması tasarlarken, ön ucunuz ve arka ucunuz için uygun Azure barındırma hizmetlerini seçin:

Hizmet türü Hosting seçenekleri Kullanım örneği
Ön uç Azure Static Web Apps, Azure App Service, Azure Container Apps Statik siteler, SPA'lar, sunucu tarafından işlenen uygulamalar
Arka uç Azure Container Apps, Azure App Service, Azure İşlevleri, Azure Kubernetes Service API'ler, mikro hizmetler, sunucusuz işlevler

Azure'da uygulama barındırma hakkında daha fazla bilgi edinin.

Ön uç ve arka uç uygulamaları arasındaki bağımlılıkları anlama

Tam yığın dağıtımları genellikle her hizmetin tam olarak yapılandırılabilmesi için önce diğer hizmetle ilgili bilgilere ihtiyaç duyduğu döngüsel bağımlılık zorluklarıyla karşılaşır. Bu bağımlılıkları anlamak etkili dağıtım iş akışları tasarlamanıza yardımcı olur.

Tam yığın dağıtımlarında ön uç ve arka uç hizmetleri arasındaki döngüsel bağımlılığı gösteren diyagram.

Ön uç için arka uç URL'si gerekir: Ön uç uygulamanızın genellikle derleme zamanında veya çalışma zamanında arka uç API uç noktası URL'sini bilmesi gerekir. Ancak arka uç hizmetinin Azure'a dağıtılana kadar URL'si yoktur.

Arka uç için ön uç URL'si gerekiyor: Arka uç hizmetinizin CORS ilkelerini yapılandırmak için ön uç URL'sine ihtiyacı olabilir, ancak ön uç dağıtılana kadar BIR URL'ye sahip değildir.

Paylaşılan kaynak bağımlılıkları: Her iki hizmet de veritabanları, anahtar kasaları veya depolama hesapları gibi paylaşılan kaynaklara bağımlı olabilir. Her iki hizmetin de bunları kullanacak şekilde yapılandırılabilmesi için önce bu kaynakların sağlanması gerekir.

Ortama özgü yapılandırma: Farklı ortamlar (geliştirme, hazırlama, üretim) farklı uç nokta URL'leri ve yapılandırmaları gerektirir, ancak sağlama tamamlanana kadar bu değerler bilinmez.

Yapılandırma stratejilerini anlama

Azure Geliştirici CLI'sı bu bağımlılıkları iki yaklaşımla ele almaktadır:

  • Dağıtım zamanı yapılandırması: Sağlama ve dağıtım sırasında bağımlılıkları çözme
  • Çalışma zamanı yapılandırması: Uygulama çalıştırıldığında bağımlılık yapılandırmasını ertele

Bu yaklaşımlar, uygulamanızı oluştururken yaptığınız tasarım kararlarını temsil eder. Tek bir stratejiyi özel olarak kullanabilir veya mimarinize ve gereksinimlerinize bağlı olarak her ikisini birleştirebilirsiniz.

Tam yığın dağıtımları için dağıtım zamanı ile çalışma zamanı yapılandırma stratejilerini karşılaştıran diyagram.

Dağıtım zamanı yapılandırması

Dağıtım zamanı yapılandırması, hizmet bağlantıları ve yapılandırmalarının azd provision ve azd deploy aşamaları sırasında belirlenip kilitlendiği anlamına gelir. Bu yaklaşımı kullanarak, hizmetleri çalışmaya başlamadan önce belirli uç nokta URL'leri, bağlantı dizeleri ve diğer bağımlılık bilgileriyle yapılandırırsınız. Bu yapılandırma, ortam değişkenleri olarak veya dağıtımla birlikte paketlenmiş yapılandırma dosyalarında dağıtılan hizmetin ortamının bir parçası haline gelir.

Altyapı öncelikli sağlama: azd up veya azd provision çalıştırdığınızda, önce altyapı oluşturulur. Bu adım, dağıtım başlamadan önce gerekli URL'leri ve bağlantı dizelerini oluşturur ve bağımlı hizmetlerin ihtiyaç duydukları bilgilere sahip olmasını sağlar.

Çıkış değişkenleri: Bicep ve Terraform, sağlamadan sonra URL'ler ve bağlantı dizeleri gibi değerlerin çıkışını alabilir. Bu çıkışlar dağıtım aşamasında ortam değişkenleri olarak kullanılabilir hale gelir, böylece hizmetleri başlamadan önce doğru uç noktalarla yapılandırabilirsiniz.

Sıralı dağıtım: Karmaşık senaryolar için hizmetleri belirli bir sırada dağıtmanız gerekebilir. Dağıtım sırasını denetlemek için azd kullanın, bağımlı hizmetler dağıtılmadan önce önkoşul hizmetlerinin çalıştığından emin olun.

Güncelleme veya ekleme şablonu: Azure Doğrulanmış Modüller (AVM), container-app-upsert ve azd'nin iki aşamalı iş akışıyla sorunsuz çalışan kapsayıcı uygulama şablonları sağlar. Sağlama sırasında altyapı ve ilk kapsayıcı oluşturulur. Dağıtım sırasında, azd veritabanı bağlantı dizeleri veya hizmet URL'leri gibi sağlama sırasında oluşturulan değerleri içeren güncelleştirilmiş ortam değişkenleriyle kapsayıcı görüntüsünü ekler. Bu düzen, önce altyapının var olmasını sağlayarak ve ardından kapsayıcı yapılandırmasını gerekli tüm bağımlılık bilgileriyle güncelleştirerek tavuk ve yumurta sorununu çözer.

Kapsayıcı API arka ucuna sahip react ön ucu için örnek iş akışı:

  1. Paket, sağlama ve dağıtma aşamalarını sırayla yürüten komutunu çalıştırın azd up.
  2. Sağlama sırasında Bicep, AVM container-app-upsert modüllerini kullanarak Azure Container Apps altyapısı oluşturur ve arka uç API'si URL'sini oluşturur.
  3. Dağıtım sırasında, azd ön uç için API URL'si de dahil olmak üzere her iki kapsayıcıyı da doğru ortam değişkenleriyle otomatik olarak yukarı ekler.
  4. Her iki hizmet de doğru yapılandırmayla başlar. Kapsayıcıların gelecekteki çalıştırılması sırasında azd up veya azd deploy yeni yapılandırma değerleriyle güncellenir.

Çalışma zamanı yapılandırması

Çalışma zamanı yapılandırması, uygulama dağıtım sırasında değil çalıştırıldığında uygulamaların yapılandırmayı yüklemesine olanak tanır. Bu yaklaşım, uygulamanızı yeniden dağıtmadan hizmet uç noktalarını, bağlantı dizelerini ve ilkeleri güncelleştirme esnekliği sağlar.

Yapılandırma kaynakları: Uygulamalar çalışma zamanı yapılandırmasını iki birincil kaynaktan yükleyebilir:

  • Yerel yapılandırma dosyaları: Uygulamanızın yanı sıra gibi config.jsonbir yapılandırma dosyası dağıtın. Uygulama, geçerli uç nokta URL'lerini, kimlik doğrulama ayarlarını ve diğer yapılandırma değerlerini almak için başlangıçta bu dosyayı yükler. Bu yaklaşım React, Angular, Vue ve Blazor WebAssembly gibi uygulama tarayıcıda başlatıldığında yapılandırma getirebilen istemci tarafı çerçeveler için iyi çalışır.

  • Bulut yapılandırma hizmetleri: Tüm ortamlarda yapılandırmayı merkezi olarak yönetmek için Azure Uygulama Yapılandırması veya benzer hizmetleri kullanın. Uygulamalar, geçerli değerleri almak için başlangıçta veya isteğe bağlı olarak yapılandırma hizmetini sorgular. Bu yaklaşım, birden çok hizmetin eşgüdümlü yapılandırma güncelleştirmelerine ihtiyaç duyduğu mikro hizmet mimarileri için kullanışlıdır.

Avantajlar: Her iki yaklaşımda da yapılandırma değişiklikleri yeniden dağıtılmadan hemen kullanılabilir hale gelir. Dağıtım işlem hattınız aracılığıyla yapılandırma dosyasını güncelleştirin veya Azure portal aracılığıyla Azure Uygulama Yapılandırması'ndaki değerleri değiştirin. Uygulama yeniden başlatıldığında veya yapılandırmasını yenilediğinde yeni değerleri alır. Bu desen özellikle şunlar için kullanışlıdır:

  • Arka uç API URL'lerini, kimlik doğrulama uç noktalarını ve mikro hizmet konumlarını bulması gereken ön uç uygulamaları
  • Ön uç URL'leri değiştikçe CORS ilkelerini güncelleştirmesi gereken arka uç hizmetleri
  • Geliştirme, hazırlama ve üretim ortamlarında farklı yapılandırmaya ihtiyaç duyan hizmetler

Arka uç API'sini keşfeden React ön ucu için örnek iş akışı:

  1. Altyapıyı sağlamak ve her iki hizmeti de dağıtmak için komutunu çalıştırın azd up .
  2. Dağıtım sonrası kancası arka uç URL'sini içeren bir config.json dosya oluşturur ve bunu ön ucun depolama konumuna yükler.
  3. React uygulaması, başlangıçta API uç noktasını bulmak için config.json alır.
  4. Uç noktayı daha sonra güncelleştirmek için ön ucu yeniden dağıtmadan değiştirin config.json .

Bu yaklaşım, derleme zamanında tüm içeriğin önceden işlendiği statik olarak oluşturulan sitelerde çalışmaz.

Dağıtım iş akışınızı planlama

Tam yığın dağıtımınızı tasarlarken şu faktörleri göz önünde bulundurun:

  1. Bağımlılıkları belirleme: Diğer hizmetlerden hangi hizmetlerin bilgi sahibi olması gerektiğini eşleyin. Tek yönlü bağımlılıklar (veritabanına bağlı api gibi) için, sağlama platformu (Bicep veya Terraform) sıralamayı otomatik olarak işler. Döngüsel bağımlılıklar (başlangıçta birbirlerinin URL'lerine ihtiyaç duyan ön uç ve arka uç hizmetleri gibi) için, dağıtım zamanı veya çalışma zamanı yapılandırma stratejilerini kullanarak koordinasyon tasarlamanız gerekir.
  2. Dağıtmadan önce sağlama: Uygulama kodunu dağıtmadan önce tüm altyapının mevcut olduğundan emin olun.
  3. Ortam değişkenlerini kullanma: Azd ortam değişkenlerini kullanarak altyapı ve uygulama katmanları arasında yapılandırmayı geçirin.
  4. Birden çok ortam için tasarım: Yapılandırmanın geliştirme, hazırlama ve üretim ortamları arasında nasıl farklılık gösterdiğini planlayın.
  5. Dağıtım sırasını göz önünde bulundurun: Bazı senaryolarda hizmetlerin belirli bir sırayla dağıtılması gerekebilir.

Komut, azd up sağlamayı otomatik olarak çalıştırarak ve ardından tek bir iş akışında dağıtım yaparak çoğu dağıtım senaryosunu işler. Standart tek uygulamalar için bu yaklaşım düzgün çalışır ve en az yapılandırma gerektirir.

Döngüsel bağımlılıklara sahip tam yığın gibi daha karmaşık dağıtımlar için:

  • Hizmet siparişini yapılandırma: Dosyanızda azure.yaml hizmetleri dağıtılmasını istediğiniz sırayla tanımlayın. Hizmetleri varsayılan olarak paralel olarak dağıtırken azd , gerektiğinde sıralı dağıtımı zorunlu kılmak için kancaları kullanabilirsiniz.

  • İş akışı adımlarını özelleştirme: Dosyanızda azd up özel workflows bir özellik tanımlayarak varsayılan azure.yaml iş akışını geçersiz kılın. Örneğin, uygulama kaynak kodunuzu oluşturmadan önce sağlamayı çalıştırmak için varsayılan davranışı değiştirebilirsiniz:

    name: todo-nodejs-mongo
    metadata:
      template: todo-nodejs-mongo@0.0.1-beta
    workflows:
      up: 
        steps:
          - azd: provision
          - azd: package
          - azd: deploy
    

    Bu kalıp, derleme işleminizin yalnızca kaynak sağlama tamamlandıktan sonra elde edilebilen yapılandırma değerlerine ihtiyacı olduğunda kullanışlıdır.

  • Ayrı sağlama ve dağıtma: azd up yerine azd provision ve azd deploy komutlarını ayrı ayrı çalıştırın. Bu ayrım, uygulama kodunu dağıtmadan önce altyapı yapılandırmasını doğrulamanız gerektiğinde veya dağıtım sorunlarını giderirken kullanışlıdır. Altyapıyı bir kez sağlayabilir, ardından uygulama kodunu yeniden sağlamaya gerek kalmadan birden çok kez dağıtabilir ve yeniden dağıtabilirsiniz.

  • Kancalarla özelleştirme: Sağlama ve dağıtım aşamaları arasında özel mantık yürütmek için dosyanıza öncesi ve sonrası kancaları ekleyin. Yapılandırma dosyalarını doldurmak, ortam durumunu doğrulamak veya karmaşık dağıtım dizilerini koordine etmek için kancaları kullanın.

En iyi yöntemler

ile azdtam yığın uygulamaları oluştururken şu en iyi yöntemleri izleyin:

  1. Bağımlılıkları erken eşleyin: Tasarım aşamasında hangi hizmetlerin diğer hizmetlerden bilgilere ihtiyacı olduğunu belirleyin. Bicep veya Terraform'un otomatik olarak işlediği tek yönlü bağımlılıklar ile dağıtım zamanı veya çalışma zamanı yapılandırma stratejileri gerektiren döngüsel bağımlılıklar arasında ayrım yapın.
  2. Doğru yapılandırma stratejisini seçin: Hizmetlerin dağıtım sırasında yapılandırmasının kilitlenmesi gerektiğinde dağıtım zamanı yapılandırmasını kullanın. Yapılandırmayı yeniden dağıtmadan güncelleştirme esnekliğine ihtiyacınız olduğunda çalışma zamanı yapılandırmasını kullanın. Uygun olduğunda her iki stratejiyi de birleştirin.
  3. Azure Doğrulanmış Modülleri (AVM) kullanma: Kapsayıcı uygulamaları için gibi container-app-upsert Bicep modüllerinden yararlanın. Bu desenler döngüsel bağımlılıkları çözmek için 'nin iki aşamalı iş akışıyla azdsorunsuz çalışır.
  4. gerektiğinde iş akışlarını özelleştirme: Basit dağıtımlar için varsayılan ayarlarla kullanın azd up . Döngüsel bağımlılıkları olan karmaşık senaryolar için dosyanızdaki workflows özelliği özelleştirerek azure.yaml paket, sağlama ve dağıtma adımlarının sırasını denetleyin.
  5. Çalışma zamanı yapılandırmasından yararlanma: Ortamlar arasında maksimum esneklik için Azure Uygulama Yapılandırması'nı veya yerel yapılandırma dosyalarını kullanarak yeniden dağıtmadan güncelleştirebileceğiniz hizmet uç noktalarını ve ayarlarını yönetin.
  6. Ortamlar arasında test: Yapılandırma stratejinizin, hizmet URL'lerinin ve yapılandırmalarının farklı olduğu geliştirme, hazırlama ve üretim ortamlarında doğru çalıştığından emin olun.

Sonraki Adımlar