Azure'da görev açısından kritik iş yükleri için operasyonel yordamlar
Güvenilir ve etkili işlemler mümkün olduğunda otomasyon ilkelerine ve kod olarak yapılandırmaya dayanmalıdır. Bu yaklaşım, DevOps süreçlerine önemli bir mühendislik yatırımı gerektirir. Otomatik işlem hatları, uygulama ve altyapı kodu yapıtlarını dağıtmak için kullanılır. Bu yaklaşımın avantajları, minimum el ile operasyonel yordamlarla tutarlı ve doğru operasyonel sonuçları içerir.
Bu tasarım alanı, etkili ve tutarlı operasyonel yordamların nasıl uygulanıp uygulana bilir.
Önemli
Bu makale, Azure Well-Architected Framework görev açısından kritik iş yükü serisinin bir parçasıdır. Bu seriyi bilmiyorsanız görev açısından kritik iş yükü nedir? ile başlamanızı öneririz.
DevOps işlemleri
DevOps , geliştirme ve operasyonel süreçleri ve ekipleri tek bir mühendislik işlevinde birleştirir. Uygulama yaşam döngüsünün tamamını kapsar ve dağıtım işlemlerini hızlı, verimli ve güvenilir bir şekilde yürütmek için otomasyon ve DevOps araçlarını kullanır. DevOps süreçleri sürekli tümleştirmeyi ve sürekli teslimi (CI/CD) destekler ve sürekli geliştirme kültürünü teşvik eder.
Görev açısından kritik bir uygulamanın DevOps ekibinin şu görevlerden sorumlu olması gerekir:
- CI/CD otomasyonu aracılığıyla uygulama ve altyapı kaynaklarının oluşturulması ve yönetilmesi.
- Uygulama izleme ve gözlemlenebilirlik.
- Uygulama bileşenleri için Azure rol tabanlı erişim denetimi (RBAC) ve kimlik yönetimi.
- Uygulama bileşenleri için ağ yönetimi.
- Uygulama kaynakları için maliyet yönetimi.
DevSecOps , uygulama yaşam döngüsü boyunca güvenlik izleme, uygulama denetimleri ve kalite güvencesini geliştirme ve operasyonlarla tümleştirerek DevOps modelini genişletir. DevOps ekipleri, güvenliğin belirli bir yayın aşamasında veya geçitte değil geliştirme yaşam döngüsü boyunca birleştirildiğinden emin olmak için güvenlik açısından hassas ve yüksek düzeyde düzenlenmiş senaryolar için gereklidir.
Tasarım konusunda dikkat edilmesi gerekenler
Sürüm ve güncelleştirme işlemi. Uygulama bileşenlerinde veya temel altyapıda yapılan değişiklikler için el ile gerçekleştirilen işlemlerden kaçının. El ile gerçekleştirilen işlemler tutarsız sonuçlara yol açabilir.
Merkezi BT ekiplerine bağımlılıklar. Bu bağımlılıklar uçtan uca işlemleri engellediğinden, merkezi işlevlerde sabit bağımlılıklar olduğunda DevOps işlemlerinin uygulanması zor olabilir.
Kimlik ve erişim yönetimi. DevOps ekipleri, veritabanı yönetimi için AppDataOps gibi çeşitli teknik işlevler için ayrıntılı Azure RBAC rollerini göz önünde bulundurabilir. DevOps rollerine sıfır güven modeli uygulama.
Tasarım önerileri
Yapılandırma ayarlarını ve güncelleştirmelerini kod olarak tanımlayın. Anahtar veya gizli dizi döndürme ve izin yönetimi gibi görevler de dahil olmak üzere tutarlı sürüm ve güncelleştirme işlemlerini etkinleştirmek için kod aracılığıyla değişiklik yönetimi uygulayın. Yerleşik otomatik güncelleştirme mekanizmaları yerine zamanlanmış işlem hattı çalıştırmaları gibi işlem hattıyla yönetilen güncelleştirme işlemlerini kullanın.
Uygulama kaynaklarının örneklemesi veya yönetimi için merkezi işlemleri veya sağlama işlem hatlarını kullanmayın. Bunun yapılması, gürültülü komşu senaryolarıyla ilişkili olanlar gibi dış uygulama bağımlılıklarını ve ek risk vektörlerini tanıtır.
Merkezi sağlama süreçlerini kullanmanız gerekiyorsa, bağımlılıkların kullanılabilirlik gereksinimlerinin görev açısından kritik gereksinimlerle tam olarak uyumlu olduğundan emin olun. Merkezi ekiplerin, uçtan uca uygulamanın bütüncül kullanıma hazır hale getirilmesi için saydamlık sağlaması gerekir.
Temel platform geliştirmeleri ve güvenilirliği artırmak için her sprint sırasında mühendislik kapasitesinin bir oranını ayırın. Bu geliştirmelere kapasitenin yüzde 20-40'ını ayırmanızı öneririz.
Temel tasarım ilkeleriyle uyumlu ortak mühendislik ölçütleri, başvuru mimarileri ve kitaplıklar geliştirin. Azure İlkesi kullanan ilke temelli bir yaklaşım aracılığıyla güvenilirlik, güvenlik ve işlemler için tutarlı bir temel yapılandırma uygulayın.
Ayrıca, kuruluşunuzun daha geniş uygulama ekosistemi içindeki diğer iş yüklerinde ortak tasarım desenleri için Azure ilkeleri ve Terraform kaynakları gibi ortak mühendislik ölçütlerini ve ilişkili yapıtları da kullanabilirsiniz.
Kritik uygulama ortamlarında sıfır güven modeli uygulama. İşlemlerin tutarlı olduğundan ve yalnızca CI/CD işlemleri veya otomatik operasyonel yordamlar aracılığıyla gerçekleştiğinden emin olmak için Microsoft Entra Privileged Identity Management gibi teknolojileri kullanın.
Ekip üyelerinin herhangi bir ortama ayakta yazma erişimi olmaması gerekir. Daha kolay test ve hata ayıklama sağlamak için geliştirme ortamlarında özel durumlar oluşturmak isteyebilirsiniz.
Üretim ortamlarına tam zamanında erişim için acil durum süreçlerini tanımlayın. Kimlik doğrulama sağlayıcısında ciddi sorunlar olması durumunda kırıp kıran hesapların mevcut olduğundan emin olun.
Operasyonel yordamları ve tetikleyicileri sürekli geliştirmek için AIOps kullanmayı göz önünde bulundurun.
Uygulama işlemleri
Uygulama tasarımı ve platform önerileri operasyonel yordamları etkiler. Ayrıca, özellikle yüksek kullanılabilirlik ve kurtarma için çeşitli Azure hizmetleri tarafından sağlanan operasyonel özellikler de vardır.
Tasarım konusunda dikkat edilmesi gerekenler
Azure hizmetlerinin yerleşik işlemleri. Azure hizmetleri, bölgesel yedeklilik ve coğrafi çoğaltma gibi yerleşik (varsayılan olarak etkin) ve yapılandırılabilir platform özellikleri sağlar. Uygulamanın güvenilirliği bu işlemlere bağlıdır. Azure Cosmos DB için çoklu yazma dağıtım yapılandırması gibi bazı yapılandırılabilir özellikler ek ücrete neden olur. Kesinlikle gerekmedikçe özel çözümler oluşturmaktan kaçının.
İşletimsel erişim ve yürütme süresi. Gerekli işlemlerin çoğu Azure Resource Manager API veya Azure portal aracılığıyla kullanıma sunulur ve erişilebilir. Ancak bazı işlemler için destek mühendislerinin yardımı gerekir. Örneğin, Azure Cosmos DB veritabanının düzenli yedeklemesinden veya silinen bir kaynağın kurtarılmasından geri yükleme işlemi yalnızca Azure desteği mühendisleri tarafından bir destek olayı aracılığıyla gerçekleştirilebilir. Bu bağımlılık uygulamanın kapalı kalma süresini etkileyebilir. Durum bilgisi olmayan kaynaklar için, destek mühendislerinin silinen kaynakları kurtarmayı denemesini beklemek yerine yeniden dağıtmanızı öneririz.
İlke uygulama. Azure İlkesi, görev açısından kritik uygulamalar için ortak mühendislik ölçütleriyle uyumluluğu sağlamak amacıyla güvenlik ve güvenilirlik temellerini zorunlu kılmaya ve denetlemeye yönelik bir çerçeve sağlar. Daha açık belirtmek gerekirse Azure İlkesi, yetkili kullanıcıların gerçekleştirebileceği eylemleri kısıtlayarak RBAC'yi tamamlayarak Azure Resource Manager kontrol düzleminin önemli bir parçasını oluşturur. Platform hizmetleri genelinde önemli güvenlik ve güvenilirlik kurallarını zorunlu kılmak için Azure İlkesi kullanabilirsiniz.
Kaynakların değiştirilmesi ve silinmesi. Azure kaynaklarının değiştirilmesini veya silinmesini önlemek için bu kaynakları kilitleyebilirsiniz . Ancak kilitler dağıtım işlem hatlarında yönetim ek yükü getirir. Çoğu kaynak için, kaynak kilitleri yerine sıkı kısıtlamalara sahip güçlü bir RBAC işlemi öneririz.
Tasarım önerileri
Yük devretme yordamlarını otomatikleştirme. Etkin/etkin bir modelde, yük devretme müdahalesi gerektirmediğinden emin olmak için sistem durumu modeli ve otomatik ölçeklendirme işlemleri kullanın. Etkin/pasif model için yük devretme yordamlarının otomatik olduğundan veya işlem hatları içinde en azından codified olduğundan emin olun.
Bunu destekleyen hizmetler için Azure'da yerel otomatik ölçeklendirmenin kullanımına öncelik belirleyin. Yerel otomatik ölçeklendirmeyi desteklemeyen hizmetler için, hizmetleri ölçeklendirmek için otomatik işlem süreçlerini kullanın. Ölçeklenebilirlik elde etmek için ölçek birimlerini birden çok hizmetle kullanın.
Yedekleme ve geri yükleme için platforma özel özellikleri kullanarak bunların RTO/RPO ve veri saklama gereksinimlerinizle uyumlu olduğundan emin olun. Gerektiğinde uzun süreli yedekleme saklama için bir strateji tanımlayın.
Azure Front Door tarafından sağlananlar gibi SSL sertifika yönetimi ve yenilemesi için yerleşik özellikleri kullanın.
Dış ekipler için yardım gerektiren kaynaklar için bir kurtarma işlemi oluşturun. Örneğin, veri platformu yanlış değiştirilirse veya silinirse kurtarma yöntemleri iyi anlaşılmalı ve bir kurtarma işlemi uygulanmalıdır. Benzer şekilde, kayıt defterinde yetkisi alınmış kapsayıcı görüntülerini yönetmek için yordamlar oluşturun.
Standart iş sürekliliği hazırlıklarının bir parçası olarak üretim dışı kaynaklar ve veriler üzerinde kurtarma işlemlerini önceden uygulayın.
Kritik uyarıları belirleyin ve hedef kitleleri ve sistemleri tanımlayın. Uygun paydaşlara ulaşmak için açık kanallar tanımlayın. Beyaz gürültüden kaçınmak ve operasyonel paydaşların uyarıları yoksaymasını ve önemli bilgileri kaçırmasını önlemek için yalnızca eyleme dönüştürülebilir uyarılar gönderin. Uyarıyı iyileştirmek ve gözlemlenen beyaz gürültüyü gidermek için sürekli iyileştirme uygulayın.
tüm uygulama hizmetlerinde işletimsel özelliklerin ve güvenilir bir yapılandırma temelinin uygun şekilde kullanılmasını sağlamak için ilke temelli idare ve Azure İlkesi uygulayın.
Kısa ömürlü bölgesel kaynaklarda kaynak kilitleri kullanmaktan kaçının. Bunun yerine, işletimsel güncelleştirmeleri denetlemek için RBAC ve CI/CD işlem hatlarının uygun kullanımına güvenin. Uzun süreli genel kaynakların silinmesini önlemek için kaynak kilitleri uygulayabilirsiniz.
Güncelleştirme yönetimi
Görev açısından kritik tasarım, kısa ömürlü durum bilgisi olmayan uygulama kaynakları ilkesini güçlü bir şekilde onaylar. Bu ilkeyi uygularsanız, genellikle yeni bir dağıtım ve standart teslim işlem hatları kullanarak bir güncelleştirme gerçekleştirebilirsiniz.
Tasarım konusunda dikkat edilmesi gerekenler
Azure yol haritalarıyla hizalama. Platform kaynaklarının ve çalışma zamanı bağımlılıklarının düzenli olarak güncelleştirilmesi için iş yükünüzü Azure yol haritalarıyla hizalayın.
Güncelleştirmelerin otomatik olarak algılanması. Güncelleştirmeleri izlemek ve otomatik olarak algılamak için işlemleri ayarlayın. GitHub Dependabot gibi araçları kullanın.
Test ve doğrulama. Herhangi bir sürümden önce üretim bağlamında paketlerin, bileşenlerin ve bağımlılıkların yeni sürümlerini test edin ve doğrulayın. Yeni sürümlerde hataya neden olan değişiklikler olabilir.
Çalışma zamanı bağımlılıkları. Çalışma zamanı bağımlılıklarını uygulamada yaptığınız diğer değişiklikler gibi değerlendirin. Eski sürümler güvenlik açıklarına neden olabilir ve performansı olumsuz etkileyebilir. Uygulama çalışma zamanı ortamını izleyin ve güncel tutun.
Bileşen hijyeni ve temizlik. Kullanılmayan kaynakların yetkisini alın veya kaldırın. Örneğin, kapsayıcı kayıt defterlerini izleyin ve kullanmadığınız eski görüntü sürümlerini silin.
Tasarım önerileri
Bu kaynakları izleyin ve güncel tutun:
- Uygulama barındırma platformu. Örneğin, Azure Kubernetes Service (AKS) içinde Kubernetes sürümünü düzenli olarak güncelleştirmeniz gerekir, özellikle de eski sürümler için destek devam etmediğinden. Ayrıca cert-manager ve Azure Key Vault CSI gibi Kubernetes üzerinde çalışan bileşenleri güncelleştirmeniz ve AKS'deki Kubernetes sürümüyle hizalamanız gerekir.
- Dış kitaplıklar ve SDK'lar (.NET, Java, Python).
- Terraform sağlayıcıları.
Bileşenleri güncelleştirmek için el ile gerçekleştirilen işlem değişikliklerinden kaçının. El ile yapılan değişikliklerin yalnızca acil durumlarda kullanımını göz önünde bulundurun. Kaymayı önlemek ve yinelenmeyi önlemek için kaynak depoda el ile yapılan değişiklikleri yeniden mutabık hale getirmek için bir süreciniz olduğundan emin olun.
görüntülerin eski sürümlerini Azure Container Registry kaldırmak için otomatik bir yordam oluşturun.
Gizli dizi yönetimi
Anahtar, gizli dizi ve sertifika süre sonu, uygulama kesintisinin yaygın bir nedenidir. Görev açısından kritik bir uygulama için gizli dizi yönetimi gerekli güvenliği sağlamalı ve maksimum güvenilirlik gereksinimlerinizle uyumlu olacak uygun bir kullanılabilirlik düzeyi sunmalıdır. Yönetilen bir hizmet kullanarak veya güncelleştirme yönetiminin bir parçası olarak anahtar, gizli dizi ve sertifika döndürmeyi düzenli aralıklarla gerçekleştirmeniz ve kod ve yapılandırma değişiklikleri için işlemler uygulamanız gerekir.
Birçok Azure hizmeti, bağlantı dizelerine/anahtarlarına güvenmek yerine Microsoft Entra kimlik doğrulamasını destekler. Microsoft Entra Kimliğinin kullanılması operasyonel ek yükü büyük ölçüde azaltır. Gizli dizi yönetimi çözümü kullanıyorsanız, diğer hizmetlerle tümleştirilmelidir, bölgesel ve bölgesel yedekliliği desteklemeli ve kimlik doğrulaması ve yetkilendirme için Microsoft Entra kimliğiyle tümleştirme sağlamalıdır. Key Vault bu özellikleri sağlar.
Tasarım konusunda dikkat edilmesi gerekenler
Gizli dizi yönetimine üç yaygın yaklaşım vardır. Her yaklaşım gizli dizi deposundan gizli dizileri okur ve bunları farklı bir zamanda uygulamaya ekler.
Dağıtım zamanı alma. Bu yaklaşımın avantajı, gizli dizi yönetimi çözümünün yalnızca dağıtım zamanında kullanılabilir olması gerektiğidir çünkü bu süreden sonra doğrudan bağımlılıklar yoktur. Örnek olarak gizli dizileri bir Kubernetes dağıtımına veya Kubernetes gizli dizisine ortam değişkeni olarak ekleme verilebilir.
Gizli dizi yönetim sistemindeki RBAC izinlerini basitleştiren gizli dizilere yalnızca dağıtım hizmet sorumlusunun erişebilmesi gerekir.
Ancak bu yaklaşımın dezavantajları vardır. Hizmet sorumlusu erişimini denetlemeye ve alınan gizli dizileri korumaya ilişkin uygulamada DevOps araçlarına RBAC karmaşıklığını tanıtır. Ayrıca, gizli dizi yönetimi çözümünün güvenlik avantajları uygulanmaz çünkü bu yaklaşım yalnızca uygulama platformundaki erişim denetimine dayanır.
Gizli dizi güncelleştirmelerini veya döndürmeyi uygulamak için tam bir yeniden dağıtım gerçekleştirmeniz gerekir.
Uygulama başlatma alma. Bu yaklaşımda gizli diziler uygulama başlangıcında alınır ve eklenir. Bunun avantajı, gizli dizileri kolayca güncelleştirebilmeniz veya döndürebilmenizdir. Gizli dizileri uygulama platformunda depolamanız gerekmez. En son değeri getirmek için uygulamanın yeniden başlatılması gerekir.
Gizli Dizi Deposu CSI Sürücüsü ve akv2k8s için Azure Key Vault Sağlayıcısı yaygın depolama seçenekleridir. Başvuruda bulunulmuş uygulama ayarları Key Vault yerel bir Azure çözümü de kullanılabilir.
Bu yaklaşımın bir dezavantajı, gizli dizi yönetimi çözümünde bir çalışma zamanı bağımlılığı oluşturmasıdır. Gizli dizi yönetimi çözümünde bir kesinti yaşanırsa, çalışmakta olan uygulama bileşenleri istekleri sunma işlemine devam edebilir . Herhangi bir yeniden başlatma veya ölçeği genişletme işlemi büyük olasılıkla hataya neden olabilir.
Çalışma zamanı alma. Uygulama platformunun bile gizli dizilere hiçbir zaman erişimi olmadığından, çalışma zamanında gizli dizileri uygulamanın içinden almak en güvenli yaklaşımdır. Uygulamanın gizli dizi yönetim sisteminde kimliğini doğrulaması gerekir.
Ancak, bu yaklaşım için uygulama bileşenleri doğrudan bağımlılık ve gizli dizi yönetim sistemine bağlantı gerektirir. Bu, bileşenleri ayrı ayrı test etmenizi zorlaştırır ve genellikle sdk kullanımını zorunlu kılar.
Tasarım önerileri
Mümkün olduğunda, bağlantı dizelerini veya anahtarları kullanmak yerine hizmetlere bağlanmak için Microsoft Entra kimlik doğrulamasını kullanın. Uygulama platformunda gizli dizileri depolamanız gerekmeyecek şekilde bu kimlik doğrulama yöntemini Azure tarafından yönetilen kimliklerle birlikte kullanın.
Key Vault'daki süre sonu ayarından yararlanın ve yaklaşan süre sonu için uyarı yapılandırma. Standart sürüm işlemini kullanarak tüm anahtar, gizli dizi ve sertifika güncelleştirmelerini gerçekleştirin.
Bir hatanın tek bir dağıtım damgasına olası etkisini azaltmak için Key Vault örneklerini bölgesel damganın parçası olarak dağıtın. Genel kaynaklar için ayrı bir örnek kullanın. Bu kaynaklar hakkında bilgi için görev açısından kritik iş yükleri için tipik mimari düzenine bakın.
Hizmet sorumlusu kimlik bilgilerini veya API anahtarlarını yönetme gereksinimini önlemek için mümkün olduğunca Key Vault erişmek için hizmet sorumluları yerine yönetilen kimlikleri kullanın.
Çalışma zamanında yetkilendirme hatası oluştuğunda gizli dizilerin yeniden alındığından emin olmak için kodlama desenleri uygulayın.
Çözüm içinde düzenli aralıklarla çalışan tam otomatik bir anahtar döndürme işlemi uygulayın.
Yaklaşan süre sonu uyarıları almak için Azure Key Vault'da süresi dolmak üzere olan bildirime yakın anahtarı kullanın.
VM'leri kullanırken IaaS'ye özgü dikkat edilmesi gerekenler
IaaS VM'lerini kullanmanız gerekiyorsa, bu belgenin önceki bölümlerinde açıklanan yordamlardan ve uygulamalardan bazıları farklılık gösterebilir. VM'lerin kullanımı yapılandırma seçeneklerinde, işletim sistemlerinde, sürücü erişiminde, düşük düzeyli işletim sistemi erişiminde ve yükleyebileceğiniz yazılım türlerinde daha fazla esneklik sağlar. Dezavantajları artan operasyonel maliyetler ve PaaS hizmetlerini kullandığınızda genellikle bulut sağlayıcısı tarafından gerçekleştirilen görevlerin sorumluluğundadır.
Tasarım konusunda dikkat edilmesi gerekenler
- Tek tek VM'ler yüksek kullanılabilirlik, alanlar arası yedeklilik veya coğrafi olarak yedeklilik sağlamaz.
- Vm'ler dağıtıldıktan sonra otomatik olarak güncelleştirilmez. Örneğin, Windows Server 2019'da dağıtılan bir SQL Server 2019 otomatik olarak daha yeni bir sürüme güncelleştirilmez.
- Bir VM'de çalışan hizmetler, kod olarak altyapı aracılığıyla dağıtmak ve yapılandırmak istiyorsanız özel işlem ve ek araçlara ihtiyaç duyar.
- Azure, platformunu düzenli aralıklarla güncelleştirir. Bu güncelleştirmeler VM'nin yeniden başlatılmasını gerektirebilir. Yeniden başlatma gerektiren Güncelleştirmeler genellikle önceden duyurulur. Bkz. Azure'da sanal makineler için bakım ve Planlı bakım bildirimlerini işleme.
Tasarım önerileri
VM'lerde el ile gerçekleştirilen işlemlerden kaçının ve değişiklikleri dağıtmak ve dağıtmak için uygun işlemleri uygulayın.
- Azure Resource Manager (ARM) şablonları, Bicep, Terraform veya diğer çözümler gibi kod olarak altyapı çözümlerini kullanarak Azure kaynaklarının sağlanmasını otomatikleştirin.
VM'lerin dağıtımı, güncelleştirmeler, yedekleme ve kurtarma için operasyonel işlemlerin yerinde ve düzgün bir şekilde test edilmiş olduğundan emin olun. Dayanıklılığı test etmek için uygulamaya hata ekleyin, hataları not edin ve bu hataları azaltın.
Daha yeni bir sürüm düzgün çalışmazsa bilinen son iyi duruma geri dönmek için stratejilerin uygulandığından emin olun.
Durum bilgisi olan iş yükleri için sık sık yedeklemeler oluşturun, yedekleme görevlerinin etkili çalıştığından emin olun ve başarısız yedekleme işlemleri için uyarılar uygulayın.
VM'leri izleyin ve hataları algılayın. İzleme için ham veriler çeşitli kaynaklardan gelebilir. Sorunların nedenlerini analiz edin.
Zamanlanmış yedeklemelerin beklendiği gibi çalıştığından ve gerektiğinde düzenli yedeklemelerin oluşturulduğundan emin olun. İçgörüler elde etmek için Yedekleme merkezi'ni kullanabilirsiniz.
Ölçek, otomatik ölçeklendirme ve alanlar arası yedeklilik gibi özellikleri etkinleştirmek için VM'ler yerine Sanal Makine Ölçek Kümeleri kullanımına öncelik tanıyın.
Korunması gereken özel görüntüler yerine Azure Market standart görüntülerin kullanımına öncelik verme.
Gerektiğinde özelleştirilmiş görüntüler için derleme ve bakım işlemlerini otomatikleştirmek için Azure VM Görüntü Oluşturucusu'nu veya diğer araçları kullanın.
Bu özel önerilerin ötesinde, görev açısından kritik uygulama senaryoları için operasyonel yordamlar için en iyi yöntemleri uygun şekilde uygulayın.
Sonraki adım
Görev açısından kritik uygulama senaryoları için mimari desenini gözden geçirin: