Share via


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

Bu Azure Well-Architected Framework 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ı maruz kalma tekniklerini kullanın. Rutin dağıtımlar ve acil durum veya düzeltme dağıtımları için hesap oluşturun.

Bu kılavuzda, güvenli dağıtım uygulamalarını (SDP) kullanmaya yönelik öneriler açıklanmaktadır. Güvenli dağıtım süreçleri 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ı riski yönetme 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ı kullanıma açık 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 denetimlerinden geçmesi 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ğlanır.

Güvenlik ve tutarlılık

Uygulama kodunuz, kod olarak altyapı (IaC), özellik bayrağı veya yapılandırma güncelleştirmesi için bir güncelleştirme dağıtırken iş yüküne risk eklersiniz. Üretimde düşük riskli dağıtım yoktur. Tutarlılığı zorunlu kılmak ve insan hatası riskini en aza indirmek için her dağıtımın standart bir desene uyması ve otomatik olarak uygulanması gerekir. İş yükü tedarik zincirinizin ve dağıtım işlem hatlarınızın güvenilir, güvenli 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 de getirir. Daha fazla bilgi için bkz. İş yükü geliştirme tedarik zinciri tasarlama önerileri.

Sık kullanılan 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 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 sürecinizin bir parçası olduğundan emin olun.

Aşamalı açığa çıkarma dağıtımı

Dağıtım sorunları oluştuğunda amaç, son kullanıcılar üzerindeki etkisini en aza indirmek için bunları olabildiğince erken yakalamaktır. Bu hedefe ulaşmak için aşamalı kullanıma sunma modeli olarak da bilinen aşamalı bir dağıtım modeli uygulayın. Kanarya dağıtımları, aşamalı açığa çıkarmanın yaygın bir örneğidir. Bu dağıtım modelinde, önce 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 havuz olur 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şitlemesi 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 kullanıcıların veya farklı görevler gerçekleştiren kullanıcıların iş yükünü normal kapasitelerinde kullanma zamanına sahip olmasını sağlamaya yardımcı olmak için dağıtım grupları arasında geniş pişirme süresi ve süre 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 bir dağıtım grubu için de pişirme süreleri artmalıdır.

Sistem durumu modelleri

Gözlemlenebilirlik platformunuzun ve güvenilirlik stratejilerinizin bir parçası olarak sağlam bir sağlık 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. Bir 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 sonraki eylem akışının belirlenmesine yardımcı olmak için uyarının nedeninin araştırılması gerekir. Son kullanıcılar tarafından herhangi bir sorun bildirilmediyse 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 sinyallerinin olmamasının 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.

Sorun algılama

Dağıtımınız dağıtım gruplarından birinde 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ışma yapılandırmasına geri dönerek dağıtımı geri alma.

  • Dağıtımın ortasında 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şikliklerin geri alınması 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 aktarma işlemi dikkatle yapılmalıdır.

Genel SDP önerileri

  • Gerektiğinde geri alıp ileriye doğru dönebilmenize yardımcı olmak için derleme yapıtlarınız arasında sürüm oluşturmayı 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 sorun çıkması durumunda 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 de dahil olmak üzere ön dağıtım denetimleri oluşturun.

  • Sorun yaşayan bir hizmete yönelik 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ı bir şekilde çalıştırılmalıdır. Acil 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 gerekenler

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 kullanımı, dallanma stratejilerinde tutarlılık, özellik bayraklarının kullanımı ve diğer birçok uygulama güvenli dağıtım sağlamaya 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 App Service 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 Uygulama Yapılandırması depolayın ve yönetin. Bu hizmeti kullanarak, birleşik bir yönetim düzleminde özellikler oluşturabilir, değiştirebilir ve dağıtabilirsiniz.

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

  • Dağıtım stratejileri uygulamak ve yerel kaynakları kullanarak iş yükü uygulamalarınızın sistem durumunu kullanıma açmak 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 Azure Kubernetes Service (AKS) kümelerinin mavi-yeşil dağıtımı mimari kılavuzuna bakın.

Operasyonel Mükemmellik denetim listesi

Önerilerin tamamına bakın.