Güvenli dağıtım uygulamaları için öneriler

Bu Azure İyi Tasarlanmış Çerçeve operasyonel mükemmellik denetim listesi önerisi için geçerlidir:

OE:11 İş yükünüzün güvenli dağıtım uygulamalarını açıkça tanımlayın. Küçük, artımlı, kalite kapılı yayın yöntemlerinin ideallerini vurgular. Riski denetlemek için modern dağıtım desenlerini ve aşamalı pozlama tekniklerini kullanın. Rutin dağıtımları ve acil durum veya düzeltme dağıtımlarını hesaba ekleyin.

Bu kılavuzda güvenli dağıtım uygulamalarını (SDP) kullanma önerileri açıklanmaktadır. Güvenli dağıtım işlemleri ve yordamları, iş yükünüzde güvenli bir şekilde değişiklik yapmayı ve dağıtmayı tanımlar. SDP'yi uygulamak için dağıtımları risk yönetimi merceği üzerinden düşünmeniz gerekir. SDP'yi uygulayarak dağıtımlarınızda insan hatası riskini en aza indirip sorunlu dağıtımların kullanıcılarınız üzerindeki etkilerini sınırlayabilirsiniz.

Temel tasarım stratejileri

Güvenli dağıtım uygulamalarını uygularken göz önünde bulundurulması gereken dört önemli yönerge vardır:

  • Güvenlik ve tutarlılık: Üretim iş yükünde yapılan tüm değişiklikler doğal olarak risklidir ve güvenlik ve tutarlılık odaklı yapılmalıdır.

  • Aşamalı maruz kalma: Aşamalı maruz kalma dağıtım modelini benimseyerek dağıtım kaynaklı sorunların olası patlama yarıçapını en aza indirebilirsiniz.

  • Sistem durumu modelleri: Aşamalı maruz kalmanın her aşamasının başlayabilmesi için dağıtımların sistem durumu denetimlerini geçirmesi gerekir.

  • Sorun algılama: Sorunlar algılandığında dağıtımın hemen durdurulması ve kurtarmanın başlatılması gerekir.

Aşağıdaki bölümlerde bu noktaların her biri hakkında ayrıntılı öneriler sağlanmaktadır.

Dağıtımların güvenliğini ve tutarlılığını sağlama

Uygulama kodunuz, kod olarak altyapı (IaC), özellik bayrağı veya yapılandırma güncelleştirmesi için bir güncelleştirme dağıtıyor olun, iş yüküne risk eklersiniz. Üretimde düşük riskli dağıtım yoktur. Her dağıtımın standart bir desene uyması ve tutarlılığı zorlamak ve insan hatası riskini en aza indirmek için otomatikleştirilmiş olması gerekir. İş yükü tedarik zincirinizin ve dağıtım işlem hatlarınızın güvenilir, güvenli olması ve açıkça tanımlanmış dağıtım standartlarına sahip olması kritik önem taşır. Her dağıtımı olası bir risk olarak değerlendirin ve her dağıtımı aynı risk yönetimi düzeyine tabi tutun. Risklere rağmen, iş yükünüzde düzenli değişiklikler dağıtmaya devam etmelisiniz. Düzenli güncelleştirmelerin dağıtılamaması, dağıtımlar aracılığıyla ele alınması gereken güvenlik açıkları gibi başka riskler getirir. Daha fazla bilgi için bkz . İş yükü geliştirme tedarik zinciri tasarlama önerileri.

Sık sık küçük dağıtımlar, seyrek büyük dağıtımlar için tercih edilir. Sorunlar ortaya çıktığında küçük değişikliklerin çözülmesi daha kolaydır ve sık yapılan dağıtımlar ekibinizin dağıtım sürecinde güven oluşturmasına yardımcı olur. Dağıtım sırasında bir anomaliyle karşılaştığınızda iş yükü süreçlerinizi gözden geçirerek üretimden öğrenmeniz de önemlidir. Altyapınızın veya dağıtımınızın tasarımında zayıflıklar bulabilirsiniz. Dağıtımlar sırasında sorunlar oluştuğunda, olayla ilgili dersleri yakalamak için suçsuz otopsilerin SDP işleminizin bir parçası olduğundan emin olun.

Aşamalı pozlama modelini benimseme

Dağıtım sorunları oluştuğunda amaç, son kullanıcılar üzerindeki etkisini en aza indirmek için bunları mümkün olduğunca erken yakalamaktır. Bu hedefe ulaşmak için aşamalı kullanıma sunma modeli olarak da bilinen aşamalı bir dağıtım dağıtım modeli uygulayın. Kanarya dağıtımları, aşamalı maruz kalmanın yaygın bir örneğidir. Bu dağıtım modelinde, ilk olarak küçük bir iç veya dış kullanıcı grubu yeni özelliği alır. İlk grup yeni sürümü sorunsuz çalıştırdıktan sonra, tüm kullanıcı popülasyonu yeni sürümü çalıştırana kadar özellik ardışık olarak daha büyük gruplara dağıtılır. Özellik bayrakları genellikle kanarya dağıtımlarında hedef kullanıcılar için yeni sürümü etkinleştirmek için kullanılır.

Bir diğer yaygın dağıtım modeli de mavi-yeşil yaklaşımıdır. Bu modelde, iş yükü altyapısının iki özdeş kümesi veya havuzu dağıtılır. Her iki havuz da tam üretim yükünü işleyebilir. İlk (mavi) havuz, tüm kullanıcıların indiği dağıtımın geçerli sürümünü çalıştırır. İkinci (yeşil) havuz yeni özellik ile güncelleştirilir ve dahili olarak test edilir. İç testten sonra, üretim trafiğinin bir alt kümesi mavi havuzdan yeşil havuza yönlendirilir. Kanarya dağıtımlarında olduğu gibi, trafiğin daha fazla kısmını art arda daha büyük dağıtım dalgalarında yeşil havuza kaydırdığınızda dağıtım aşamalı olarak gerçekleştirilir. Dağıtımı tamamladıktan sonra güncelleştirme havuzu mavi havuza dönüşür ve yeşil havuz bir sonraki dağıtım için hazır olur. İki havuz, arızalardan korunmak için birbirinden mantıksal olarak ayrılmıştır. Bir kerede bir damga puluna dağıtarak Dağıtım Damga Damgaları tasarım desenini kullanan bir iş yükünde mavi-yeşil modelin bir çeşitlemini dağıtabilirsiniz.

Bu modellerin her ikisinde de, dağıtımın her aşaması arasındaki süre, iş yükünün sistem durumu ölçümlerini izlemenizi sağlayacak kadar uzun olmalıdır. Farklı bölgelerdeki veya farklı görevleri gerçekleştiren kullanıcıların iş yükünü normal kapasitelerinde kullanma zamanına sahip olduğundan emin olmak için, dağıtım grupları arasında bol pişirme süresi ve zaman sağlamanız gerekir. Pişirme süreleri dakika yerine saat ve gün cinsinden ölçülmelidir. Gün içinde farklı saat dilimlerini ve kullanım düzenlerini hesaba katabilmeniz için her dağıtım grubu için pişirme süreleri de artmalıdır.

Sağlam iş yükü sistem durumu modelleri geliştirme

Gözlemlenebilirlik platformunuzun ve güvenilirlik stratejilerinizin bir parçası olarak sağlam bir sistem durumu modeli geliştirin. Sistem durumu modeliniz, bileşenler ve iş yükünün genel durumu hakkında ayrıntılı görünürlük sağlamalıdır. Dağıtım sırasında, son kullanıcıyla ilgili bir sistem durumu değişikliğiyle ilgili bir uyarı alırsanız, dağıtımın hemen durdurulması ve bir sonraki eylem seyrinin belirlenmesine yardımcı olmak için uyarının nedeninin araştırılması gerekir. Son kullanıcılar tarafından bildirilen bir sorun yoksa ve tüm sistem durumu göstergeleri pişirme süresi boyunca yeşil kalırsa, dağıtım devam etmelidir. Kullanıcı tarafından bildirilen sorunlar ve olumsuz sistem durumu sinyalleri eksikliğinin bir sorunu gizlemediğinden emin olmak için kullanım ölçümlerini sistem durumu modelinize eklediğinizden emin olun. Daha fazla bilgi için bkz . Sistem durumu modeli oluşturma.

Hata algılama mekanizmaları uygulama

Dağıtımınız dağıtım gruplarından birinde bir soruna neden olduğunda, dağıtımın hemen durdurulması gerekir. Sorunun nedeni ve etkilerin önem derecesiyle ilgili bir araştırma, uyarı alınır alınmaz yapılmalıdır. Sorundan kurtarma şunları içerebilir:

  • Dağıtımda yapılan değişiklikleri geri alarak ve bilinen son çalışan yapılandırmaya geri dönerek dağıtımı geri alma.

  • Dağıtımın ortasındaki sorunu gidererek dağıtımı iletme . Dağıtım sırasında bir düzeltme uygulayarak veya sorunu en aza indirerek sorunları çözebilirsiniz.

  • Bilinen son çalışma yapılandırmasını kullanarak yeni altyapı dağıtma.

Özellikle veritabanı, şema veya durum bilgisi olan diğer bileşen değişiklikleri gibi değişiklikleri geri döndürmek karmaşık olabilir. SDP yönergeleriniz, iş yükünüz için veri varlığı tasarımına göre veri değişiklikleriyle başa çıkma konusunda net yönergeler sağlamalıdır. Benzer şekilde, SDP'nin ihmal edilmediğinden ve düzeltmenin veya diğer en aza indirme çalışmalarının güvenli bir şekilde gerçekleştirildiğinden emin olmak için ileriye doğru ilerleme dikkatli bir şekilde işlenmelidir.

Acil durum dağıtımları için protokoller oluşturma

  • Gerektiğinde geri alıp ileriye doğru ilerleyebilmenize yardımcı olmak için derleme yapıtlarınız arasında sürüm oluşturma uygulayın.

  • Gitflow veya ortam tabanlı dallanma yapısı yerine geliştirme ekibi genelinde sıkı bir şekilde eşitlenmiş işbirliğini zorlayan bir yayın akışı veya gövde tabanlı dallanma yapısı kullanın.

  • Mümkün olduğunca çok SDP'nizi otomatikleştirin. IaC ve uygulama sürekli tümleştirme ve sürekli teslim (CI/CD) işlemlerini otomatikleştirme hakkında ayrıntılı yönergeler için bkz . Otomasyon uygulama önerileri.

  • Kod değişikliklerini depolara düzenli olarak tümleştirmek için CI uygulamalarını kullanın. CI uygulamaları tümleştirme çakışmalarını belirlemenize ve büyük, riskli birleştirme olasılığını azaltmanıza yardımcı olabilir. Daha fazla bilgi için Sürekli tümleştirme kılavuzuna bakın.

  • Üretimdeki yeni özellikleri veya değişiklikleri seçmeli olarak etkinleştirmek veya devre dışı bırakmak için özellik bayraklarını kullanın. Özellik bayrakları, yeni kodun açığa çıkma durumunu denetlemenize ve sorunlar ortaya çıktığında dağıtımı hızla geri almanıza yardımcı olabilir.

  • Üretim ortamınızı yansıtan hazırlama ortamlarına değişiklikleri dağıtın. Uygulama ortamları, canlı ortama dağıtmadan önce değişiklikleri denetimli bir ayarda test etmenizi sağlar.

  • Değişikliklerin dağıtılmasının güvenli olduğundan emin olmak için kod gözden geçirme, güvenlik taramaları ve uyumluluk denetimleri dahil olmak üzere ön dağıtım denetimleri oluşturun.

  • Sorun yaşayan bir hizmete gelen trafiği otomatik olarak durdurmak için devre kesiciler uygulayın. Bunu yapmak, sistemin daha fazla bozulmasını önlemeye yardımcı olabilir.

Acil SDP protokolleri

SDP'nizin bir düzeltme veya güvenlik ihlali veya güvenlik açığına maruz kalma gibi acil durum sorunları için nasıl ayarlanabileceğini tanımlayan açıklayıcı protokoller oluşturun. Örneğin, acil durum SDP protokolleriniz şunları içerebilir:

  • Yükseltme ve onay aşaması hızlandırma.

  • Duman testi ve tümleştirme testi hızlandırma.

  • Pişirme süresi azaltma.

Bazı durumlarda, acil durum kalite ve test geçitlerini sınırlayabilir, ancak geçitler bant dışı bir alıştırma kadar hızlı çalıştırılmalıdır. Acil bir durumda SDP hızlandırmasını kimlerin onaylayabileceğinizi ve hızlandırmanın onaylanması için karşılanması gereken ölçütleri tanımladığınızdan emin olun. Tüm acil durumların aynı protokollere göre işlenmesine yardımcı olmak için acil durum SDP protokollerinizi acil durum yanıt planınızla hizalayın.

Dikkat edilmesi gereken noktalar

Güvenli dağıtım uygulamaları oluşturmak ve sürdürmek karmaşıktır. Sağlam standartları tam olarak uygulama konusundaki başarınız, yazılım geliştirmenin birçok alanında uygulamalarınızın olgunluğuna bağlıdır. Otomasyon kullanımı, altyapı değişiklikleri için yalnızca IaC, dallanma stratejilerinde tutarlılık, özellik bayraklarının kullanımı ve diğer birçok uygulama güvenli dağıtımın sağlanmasına yardımcı olabilir. İş yükünüzü iyileştirmek ve uygulamalarınız geliştikçe geliştirme planlarınızı bilgilendirmek için bu kılavuzu kullanın.

Azure kolaylaştırma

  • Azure Pipelines ve GitHub Actions , dağıtımlar için aşamalı kullanıma sunmanızı tasarlamanıza yardımcı olabilecek onay geçitlerini kullanarak çok aşamalı dağıtımları destekler.

  • Kod sürümleri arasında kolayca geçiş yapmak için Azure Uygulaması Hizmeti hazırlama yuvalarını kullanın. Hazırlama yuvaları, hazırlama ortamlarında test için yararlıdır ve mavi-yeşil dağıtımlar için kullanılabilir.

  • Web uygulaması özellik bayraklarınızı Azure Uygulaması Yapılandırmasında depolayın ve yönetin. Bu hizmeti kullanarak, birleşik bir yönetim düzleminde özellik oluşturabilir, değiştirebilir ve dağıtabilirsiniz.

  • VM Uygulamalarını kullanarak sanal makinenizde iş yükü uygulamaları dağıtın.

  • Dağıtım stratejileri uygulamak ve yerel kaynakları kullanarak iş yükü uygulamalarınızın durumunu ortaya çıkarmak için Azure yük dengeleyicileri kullanın.

  • Bir Sanal Makine Ölçek Kümesi örneğinin içinden uygulama durumunu raporlamak için Uygulama Durumu uzantısını kullanın. Uzantı, yerel bir uygulama uç noktasında yoklar ve uygulamadan alınan TCP/HTTP(S) yanıtlarına göre sistem durumunu güncelleştirir.

  • Bir güncelleştirme yapıldığında uygulamanın yeni bir sürümünü oluşturmak için Azure Logic Apps'i kullanın. Azure, uygulama sürümlerinin geçmişini tutar ve önceki sürümlerden herhangi birine geri dönebilir veya yükseltebilir.

  • Birçok Azure Veritabanı hizmeti, geri dönmenize yardımcı olabilecek belirli bir noktaya geri yükleme işlevi sağlar. Belirli bir noktaya geri yüklemeyi destekleyen hizmetler şunlardır:

Örnek

Bu dağıtım modelinin nasıl kullanılacağına ilişkin bir örnek için Bkz. Azure Kubernetes Service (AKS) kümeleri mimarisinin mavi-yeşil dağıtımı.

Operasyonel Mükemmellik denetim listesi

Öneriler kümesinin tamamına bakın.