Hazırlama
Kuruluşun yüksek güvenilirlik gereksinimlerini karşılayan mevcut bir mimariye kendi geliştirmelerinizi ekleyeceksiniz. Burada alıştırmalarla başarılı olmak için ihtiyacınız olan arka plan bağlamını ele alacağız.
Sorun bağlamı
Contoso Shoes'un, trafikte önemli bir artış yaratması beklenen bir sonraki yüksek profilli ürün lansmanı için hazır olması gerekir. Son iki yılda, web sitesinin yarım gün kadar çevrimdışı olmasına neden olan birkaç olay oldu. Sistem geliştirme/test ortamında tamamen test edilmedi ve bazı hatalar üretime girdi. İşleçler kök nedenleri hızla belirleyemediğinden sorun giderme ve düzeltme uzun sürdü.
Bazı bileşenler kullanılamadığında bazı zorluklar yaşanmıştır. Azure Key Vault yanlış yapılandırıldığında işlemdeki ölçeği genişletme işlemleri etkilendi. Ayrıca bölgesel kesintiler için herhangi bir strateji yoktur. Yakın tarihli bir olayda Batı Avrupa bölgesinin tamamı battı. İş yükü yalnızca o bölgede çalıştığından, şirket bölge yedek olana kadar mali zarara katlanmak zorunda kaldı.
Geçerli mimari
Bu sınamayı tamamlamanız için Contoso Shoes'un geçerli mimarisini iyi anlamanız gerekir. Şimdi API katmanına odaklanalım.
Bileşenler
Bu mimarinin tüm bileşenleri tek bir bölgeye dağıtılır.
Azure Uygulaması Hizmet planının Standart S2 SKU,uygulamayı barındıran işlem platformunu sağlar. Otomatik ölçeklendirme etkinleştirildi. Geliştirme ortamında Temel B1 SKU'su kullanılır.
Azure Uygulaması Hizmeti, api kodunu bir kapsayıcıda çalıştıran uygulama platformunu sağlar. App Service Kimlik Doğrulaması özelliği yetkilendirme için etkinleştirilmiştir.
Dağıtım yuvaları bir dağıtım hazırlamanızı ve ardından bunu üretim dağıtımıyla değiştirmenizi sağlar. Bunlar yalnızca üretimde kullanılır.
Azure Container Registry kapsayıcılı API kodunu depolar ve iş yükü ekibinin oluşturduğu ve yönettiği Sürekli Tümleştirme/Sürekli Teslim (CI/CD) işlem hatları aracılığıyla gönderilir. Hem üretim hem de geliştirme/test ortamı kapsayıcı kayıt defterini kullanır.
SQL API ile Azure Cosmos DB , iş yüküyle ilgili tüm durumu depolar. Cosmos DB veritabanı hesabının Paylaşılan aktarım hızı modelinde birkaç kapsayıcı içeren tek bir veritabanı vardır. Azure Cosmos hesabı Sunucusuz kapasite modunu kullanır. Üretim için bir örnek ve geliştirme/test için bir örnek vardır.
Azure Key Vault , api'nin bir istek akışının parçası olarak bir dış, üçüncü taraf API'ye HTTP POST çağrısı yapması için gereken gizli dizileri depolar. Uygulama, Azure Uygulaması Hizmeti'nin uygulama yapılandırmasındaki bir Key Vault başvurusu aracılığıyla gizli dizilere erişir. Üretim için bir Key Vault ve geliştirme/test için bir anahtar kasası vardır.
Azure Log Analytics, çözümde kullanılan tüm bileşenlerin tüm Azure Tanılama ayarlarının günlüklerini ve ölçümlerini depolamak için birleşik havuz olarak kullanılır. Üretim için bir çalışma alanı ve geliştirme/test için bir çalışma alanı vardır.
Azure Uygulaması lication Insights, API'den telemetri ve günlükleri yakalamak için kullanılır. Application Insights, ayrılmış bir log analytics çalışma alanına yazmadan bağımsız modu kullanır. Üretim ve geliştirme/test ortak bir örneği paylaşmaz.
Azure Pipelines , iş yükünü üretim öncesi ve üretim ortamlarında derleyen, test eden ve dağıtan CI/CD için kullanılır. İş yükü ekibi, çözümlerindeki tüm altyapıyı da yöneten işlem hatlarını yönetir. Bicep, Kod Olarak Altyapı (IaC) için teknoloji seçimidir.
Tasarım seçenekleri
Bileşen listesinde, dağıtım damgası bir isteği işlemeye katılan hizmetlerden oluşur. Bu hizmetler Arasında App Services, API kodu ve Cosmos DB bulunur. Damga ayrıca işlevsiz bileşenleri de içerir: Key Vault ve Container Registry. Uygulamanın performans ve dayanıklılık çerçevesine üçüncü taraf bağımlılığı vardır. Sistem tarafından yönetilen kimlikler damga damgasının bileşenleri arasında kullanılır.
Damga pulunda App Services, yüke göre otomatik olarak ölçeklendirilecek şekilde yapılandırılır.
Üretim ve geliştirme/test için ayrı ortamlar kullanılır. Üretim ortamında App Service planının Standart SKU'su kullanılır. Şirket, uygulamayı üretime dağıtmadan önce bir yuvaya önceden hazırlayabilmek için bu seçimi yaptı. Geliştirme/test ortamı, maliyet iyileştirmesi için Temel SKU'yu kullanır. Her iki ortamın da kendi hizmet örnekleri vardır. Ortamlar yalnızca Container Registry'yi paylaşır.
Kapsayıcılı API kodu, App Service'te çalışan tek bir kapsayıcı görüntüsünde teslim edilir. API'de, çeşitli ön uçların hem okuma hem de yazma işlemleri için kullandığı birden çok HTTP uç noktası vardır. Ön uçlar bu modülün kapsamı dışındadır, ancak bu durumun görev açısından kritik durumu için büyük bir kapsamdadır. Kod, bazı temel telemetri verilerini yakalamak için Application Insights ile izlendi. Bu kodu geliştiren ekip, API kapsayıcı görüntüsü ve CI/CD işlem hatları için CI/CD işlem hattını da yönetir.
Avantajlar ve Dezavantajlar
Ancak, her şeyde olduğu gibi, mevcut mimariyle de dengeler vardır. İş gereksinimleri, güvenilirlik ve operasyonlara göre maliyet iyileştirmeye öncelik verdi. Maliyet sınırlarını aşmamak için mimari gelişmemiştir. Bileşenler, platformun sunduğu güvenilirlik özelliklerinden yararlanırken kısa kalıyor. Örneğin, işlem için SKU seçimi iş yükünün Kullanılabilirlik Alanları kullanmasını engeller. Telemetri için, Application Insights'ın Log Analytics ile tümleşik olmayan eski bir sürümü kullanılır.
Ayrıca iş yüküne erişim fazlasıyla yaygın bir işlemdir. Örneğin, sanal ağ tümleştirmesi olmadan tüm Azure hizmetlerine doğrudan genel İnternet üzerinden erişilebilir.
Çözüm geliştirildiğinde, uygulama geliştirme ekibi devOps ekipleri için araçları kolaylaştırmak için geliştirme/test ve üretimi aynı abonelikte birlikte kullanarak tek bir Azure Aboneliği kullandı. Ancak üretim kaynakları ve geliştirme/test kaynakları tamamen yalıtılmış değildir. Bazı kaynaklar iki ortam arasında paylaşılır, ancak Contoso Shoes çözümlerinin geri kalanından yalıtılmış bir abonelik alır.
Ayrıca geliştirme/test ortamı, geliştirme ve Soru-Cevap ekibinin tüm üyeleri arasında paylaşılan tek bir ortamdır. Ekiplerin boyutu ve aralarındaki koordinasyonun daha yüksek bir yalıtım derecesine ihtiyacı olmadığından bu seçim gerekçelendirildi. Ekip ve çözüm geliştikçe, iş akışı yaşam döngüleri arttıkça tek geliştirme/test ortamı tümleştirme karmaşıklığının artmasına neden oldu. Değişim sıklığı ve güvenilirlik üzerindeki etkisi pahalı olmuştur.
Proje belirtimi
Şirket, beklenen yük artışını işleyebilmesi için çözüm mimarisine özellikler eklemek istiyor. İş gereksinimleri şunlardır:
- Mimariyi birden çok bölgeye genişleterek bölgesel hatalara dayanabilecek özellik oluşturma
- Müşterilere coğrafi olarak daha yakın olan bir bölgede daha hızlı hizmet vererek müşteri deneyimini geliştirin
- Azure yol haritasıyla uyumlu hale getirme ve Azure hizmetlerinin sunduğu en son güvenilirlik özelliklerinden yararlanma
- Sorunları erken yakalayın ve genel bir sistem durumu modeli oluşturarak sistemdeki basamaklı etkilerini algılayın
Bu gereksinimler yalnızca geliştirme planlarının öncelikli listesidir. Uygulama ekibi, bu çözümün güvenilirliğini görev açısından kritik standartlara getirmek için tüm tasarım alanlarının dikkate alınması gerektiğinin farkındadır. Emin olun, yaklaşan alıştırmalarda ele alınan yönlerde onlara yardımcı olduktan sonra çözümlerini ve operasyonlarını geliştirmeyi bırakmayacaklardır.
Takıma hoş geldiniz! Contoso Shoes önerilerinizi duymak için sabırsızlanıyor.
Ayarlama
Bu Sınama Projesi'nde, önceki bölümde yer alan önceliklendirilmiş öğelerden başlayarak Contoso Shoes'un güvenilirlik sonuçlarını elde etmelerine yardımcı olacak bir mimar rolünü üstleneceksiniz.
- Mimariyi görselleştirmek için mimari diyagram oluşturma aracını kullanmanızı öneririz.
- Hizmetlerden ve özelliklerinden memnunsanız bu sınama için Bir Azure aboneliğine ihtiyacınız yoktur.