Aracılığıyla paylaş


Güvenilirlik Olgunluk Modeli

Güvenilirlik yolculuğu, sistemlerin kullanılabilir kalmasını ve kullanıcı beklentilerini karşılamasını sağlamak için her aşamanın bir önceki aşamaya göre derlendiği adım adım bir süreçtir. Bu olgunluk modeli, geçerli durumunuzu değerlendirmenize ve iyileştirme için yapılandırılmış bir yol sunmanıza yardımcı olmak için tasarlanmıştır.

İlk adım, geniş kapsamlı optimizasyon gerektirmeden anında iyileştirmeler için alanlar arası yedeklilik gibi yerleşik Azure güvenilirlik özelliklerini kullanarak Azure'un sunduğu temel güvenilirlik özelliklerini devreye alarak başlar.

Karşıtlık olarak, yüksek güvenilirlik elde etmenin yolu hataları kabul etmek kaçınılmazdır. Her sorunu önlemeye çalışmak yerine, sorun oluştuğunda sisteminizin nasıl yanıt vereceğini planlamak daha etkilidir. İş gereksinimleriniz, hangi risklerin proaktif olarak ele alındığını belirlemenize yardımcı olur. Ekipler, yapılandırılmış gözlemlenebilirlik ile gelişmiş izleme özelliklerine yatırım yapar, uygulama düzeyi endişelerini içerecek şekilde hata azaltmayı genişletir ve dayanıklılık önlemlerini test etmeye başlar.

Ekipler daha sonra iş içgörülerini teknik becerilerle tümleştirir. Ekipler sistem durumu modellemesi uygular, hata modu analizi gerçekleştirir ve kapsamlı olağanüstü durum kurtarma planları hazırlar. Bu aşama, ölçülebilir hedefler ve çeşitli hata senaryoları için sistematik hazırlık yoluyla sorumluluk sağlar.

Sistem canlı hale geldikten sonra, değişiklik yönetimi, veri büyümesi ve operasyonel karmaşıklık ile ilgilenme ve bunların sisteminizin güvenilirliğini nasıl etkilediği gibi üretim ortamlarının zorluklarını yönetmeye geçilir.

Son düzeyin amacı dayanıklı kalmaktır ve kesintisiz çalışır. Bu düzey, teknik denetimlerin ötesinde mimari uyarlanabilirliğe geçişi temsil eder. Bu düzey, iş yükleri geliştikçe ve büyüdükçe sistemlerin yeni ve öngörülemeyen risklere dayanmasını sağlama konusuna odaklanır.

Model, her biri birincil hedefe ve bir dizi temel stratejiye sahip beş ayrı olgunluk düzeyine yapılandırılmıştır. Her düzeyi keşfetmek için aşağıdaki sekmeli görünümleri kullanın. İlerledikçe vurgulanan dengeleri ve ilişkili riskleri de gözden geçirmeyi unutmayın.

Hedef simgesi İyileştirme görevlerine zaman harcamak yerine iş yükü altyapısında ve işlemlerinde dayanıklılık için sağlam bir temel oluşturun.

Olgunluk modelinin 1. düzeyi, iş yükü ekiplerinin sistem güvenilirliği için güçlü bir temel oluşturmasına yardımcı olmak için tasarlanmıştır. Gelecekteki güvenilirlik kararları için gerekli temel bilgileri kurma işlemi olan temellendirme, odak noktasıdır. Bu aşama çoğunlukla geçerli uygulamalara yönelik küçük uzantılarla işlevsel uygulamayı içerir.

Bu aşama araştırmayı, içgörü kazanmayı ve sistemlerinizin envanterini oluşturmayı içerir. Ayrıca Azure'da anında iyileştirmeler için alanlar arası yedekliliği etkinleştirme gibi yerleşik güvenilirlik özelliklerini de kullanır.

Bu temel bilgileri oluşturarak, sisteminizin dayanıklılığını ve performansını aşamalı olarak geliştirmek için ekibinizi güvenilirlik olgunluk modeli düzeylerinde ilerlemeye hazırlayabilirsiniz.

Temel stratejiler

✓ Operasyonel sorumluluğu boşaltma fırsatlarını değerlendirme

Bu strateji temelde bir inşa etme ve satın alma veya başka birine güvenme yaklaşımıdır. Karar, gelecekteki gelişimi desteklerken bu aşamada ne kadar sorumluluğun yönetilebilir olduğuna bağlıdır. İş yüküyle ilgili kaynakları kullanmak istiyorsunuz, ancak bakım sorumluluğunu devretme fırsatlarını her zaman keşfetmeniz gerekir. Bu yaklaşımı uygulamak isteyebileceğiniz bazı klasik kullanım örnekleri aşağıdadır.

  • Hizmet olarak platform (PaaS) çözümlerini seçerek sorumlulukları bulut platformuna devredin. Çoğaltma, yük devretme ve yedekleme depoları gibi yaygın dayanıklılık gereksinimleri için hazır çözümler sağlar. Bu yaklaşımı benimsediğinizde, bulut sağlayıcısı barındırma, bakım ve dayanıklılık geliştirmelerini işler.

    Örneğin, bulut sağlayıcısı verileri birden çok işlem düğümü arasında çoğaltır ve çoğaltmaları kullanılabilirlik alanlarına dağıtır. Sanal makineler (VM' ler) üzerinde kendi çözümünüzü oluşturursanız, zaman alan ve karmaşık olabilecek bu özellikleri kendiniz yönetmeniz gerekir.

  • Doğrudan iş yükünün iş hedefleriyle bağlantılı olmayan işlemler için sorumlulukları devredin. Veritabanı yönetimi ve güvenlik gibi bazı özel işlemler, iş yükünüzün güvenilirliğini etkileyebilir. Bu görevleri deneyimli ekiplere, teknolojiye veya her ikisine birden sahip olma olasılığını keşfedin.

    Örneğin, ekibinizin veritabanı uzmanlığı yoksa, sorumluluğu sağlayıcıya kaydırmaya yardımcı olmak için yönetilen hizmetleri kullanın. Bu yaklaşım, ekibinizin iş yükünün işlevselliğine odaklanmasını sağladığından, başlangıç yaptığınızda yararlı olabilir. Birçok kuruluş, paylaşılan ve merkezi olarak yönetilen hizmetlere sahiptir. Platform ekipleri kullanılabilir durumdaysa, bu işlemleri işlemek için bu ekipleri kullanın. Ancak bu yaklaşım bağımlılıkları ve kurumsal karmaşıklığı ekleyebilir.

    Alternatif olarak, ekibiniz doğru uzmanlığa sahipse, becerilerini kullanmak ve yönetim özelliklerini içermeyen hizmetleri seçmek için açık bir karar vekleyebilirsiniz.

  • Sorumlulukları Microsoft dışı satıcılara devredin. Başlangıç noktası olarak kullanıma açık ürünleri seçin. Yalnızca iş yükünüzün iş değerine katkıda bulunduklarında özelleştirilmiş çözümler oluşturun.

Risk:Satın alma veya güvenme seçeneği gereksinimlerinizi kısmen karşılıyorsa, özel uzantılar uygulamanız gerekebilir. Bu yöntem, güncellemelerin ve modernizasyonun uygulanabilir olmadığı "özelleştirme kilitlenmesi" durumuna neden olabilir. Gereksinimlerinizi düzenli olarak gözden geçirin ve çözümün özellikleriyle karşılaştırın. İkisi arasında önemli bir sapma olduğunda için bir çıkış stratejisi geliştirin.

Bunun tersi bir senaryo da bir risktir. Satın alma veya güvenme seçeneği ilk başta daha basit görünse de PaaS hizmetinin, satıcı çözümünün veya platforma ait kaynakların sınırlamaları iş yükü için gereken ayrıntı düzeyini veya özerklik düzeyini karşılamıyorsa daha sonra yeniden değerlendirme ve yeniden tasarlama gerektirebilir.

✓ Kritik kullanıcı ve sistem akışlarını tanımlama

İş yükünü akışlara ayırmak bu aşamada çok önemlidir. Kullanıcı ve sistem akışlarına odaklanın. Kullanıcı akışları kullanıcı etkileşimlerini, sistem akışları ise kullanıcı görevleriyle doğrudan ilişkilendirilmemiş iş yükü bileşenleri arasındaki iletişimi belirler.

Örneğin, bir e-ticaret uygulamasında müşteriler gezinti ve sipariş verme gibi ön uç aktiviteleri gerçekleştirir. Bu arada arka uç işlemleri ve sistem tarafından tetiklenen işlemler kullanıcı isteklerini yerine getirmekte ve diğer görevleri yerine getirmektedir. Bu ayrı akışlar aynı sistemin bir parçasıdır, ancak farklı bileşenler içerir ve farklı amaçlara hizmet eder.

Bu aşamada akış kataloğu oluşturmaya başlayın. Kullanıcı etkileşimlerini ve bileşen iletişimlerini gözlemleyin. Akışları listeleyin ve kategorilere ayırın, başlangıç ve bitiş noktalarını tanımlayın ve bağımlılıkları not edin. Netlik için diyagramları kullanarak sonuçları ve özel durumları belgeleyin. Bu katalog, iş paydaşlarıyla yapılan ilk konuşmanın en önemli yönlerini kendi açılarından belirlemesi için önemli bir araç olabilir. Bu konuşma ilk öncelik belirleme düzeyini bilgilendirebilir.

Birincil iş etkinlikleri üzerindeki riski ve etkiyi değerlendirerek bir akışı kritik olarak sınıflandırın. Kesinti bekliyorsanız, düzgün bir düşüş bu kritik akışların korunmasına odaklanır. E-ticaret örneğinde kritik akışlar ürün aramalarını, sepete ürün eklemeyi ve kullanıma alma işlemini içerir çünkü bu görevler iş için çok önemlidir. Ürün verilerini güncelleştirme ve ürün görüntülerini koruma gibi diğer işlemler bu kadar kritik değildir. Kullanıcıların ürün aramaya ve sepete ürün eklemeye devam etmesini sağlayarak gelir kaybını önlemek için kesinti sırasında kritik akışların çalışır durumda kaldığından emin olun.

Uyarı

Bir iş süreci, zamana duyarlı olmasa bile kritik olabilir. Zaman açısından kritiklik önemli bir faktördür. Örneğin, denetim gereksinimlerini karşılamak kritik bir süreçtir, ancak bir denetim için verileri hemen sunmanız gerekmeyebilir. İşlem önemli olmaya devam eder, ancak birkaç saat içinde kurtarma kabul edilebilir olduğundan güvenilirliği zaman açısından kritik değildir.

Daha fazla bilgi için bkz. Azure Well-Architected Framework: Akışları kullanarak iş yükü tasarımını iyileştirme.

✓ Doğru tasarım modelini, kaynakları ve özellikleri seçin

Bu stratejiyi aşağıdaki düzeylerde uygulamanız gerekir:

  • Mimarlık: İş yükü tasarımı, çeşitli altyapı katmanlarında güvenilirlik beklentilerini hesaba katmalıdır. İlk kararlarınız kapsayıcıya alma ile uygulamayı barındırmak için PaaS arasında seçim olabilir. İsterseniz merkez-uç veya tek bir sanal ağ gibi ağ kurulumlarını da göz önünde bulundurabilirsiniz.

    İşlevselliğe göre segmentasyon oluşturan sınırlar da ayarlamanız gerekir. Örneğin, her şeyi tek bölgeli bir sanal diskle tek bir VM'de barındırmak yerine işlem ve veri depolamayı bölmeyi ve ayrılmış hizmetleri kullanmayı göz önünde bulundurun.

    Dikkat

    Geçiş senaryolarında, yeni fırsatları gözden geçirmeden lift-and-shift yaklaşımını benimsemek, eksik avantajlara ve verimsizliklere yol açabilir. Değiştirilmesi zor olan kurulumlarla takılmamak ve daha iyi seçeneklerden ve geliştirmelerden yararlanmak için modernleştirmeyi erken araştırmak önemlidir.

  • Azure hizmetleri: Tasarımınız için doğru hizmetleri seçmenize yardımcı olması için karar ağaçlarını kullanın. Geçerli gereksinimlerinizi karşılayan bileşenleri seçin, ancak iş yükünüz geliştikçe ve daha fazla özellik gerektikçe hizmetleri değiştirebilmeniz için esnek kalın.

  • Azure hizmetlerindeki SKU'lar veya katmanlar: Her SKU'nun özelliklerini gözden geçirin ve platformun kullanılabilirlik garantilerini anlayın. Yayımlanan yüzde dilimi etrafında sağlanan kapsamı anlamak için hizmet düzeyi sözleşmelerini değerlendirin.

  • Güvenilirliği destekleyen özellikler: Kodu değiştirmeden basit yapılandırmalar aracılığıyla kullanılabilirliği geliştirmek için buluta özel hizmetleri seçin. Seçenekleri anlamak ve bölge yedekliliğini artırma veya verileri ikincil bölgeye çoğaltma gibi yapılandırmaları bilerek seçmek önemlidir.

✓ Temel düzeyde yedeklilik ile dağıtım

Çözümünüzün her bölümünde tek örnek gibi tek hata noktalarından kaçının. Bunun yerine yedeklilik için birden çok örnek oluşturun. Azure hizmetleri genellikle yedekliliği sizin için işler; özellikle de genellikle varsayılan olarak yerel yedeklilik ve yükseltme seçenekleri içeren PaaS hizmetlerinde. Tercihen, bu örnekleri birden çok Azure veri merkezine yaymak için alanlar arası yedeklilik kullanın. Aksi takdirde, en azından yerel yedeklilik olduğundan emin olun, ancak bu yöntem daha yüksek riskle birlikte gelir. Gelecekteki düzeylerde, çözümü coğrafi olarak yedekli bileşenlerle genişleterek güvenilirlik gereksinimlerinizin karşılanıp karşılanmayacağını değerlendirirsiniz.

Denge: Önemli bir denge, artan yedeklilik maliyetidir. Ayrıca bölgeler arası iletişim gecikme süresine neden olabilir. En düşük gecikme süresi gerektiren eski uygulamalar için yedeklilik performansı düşürebilir.

Risk: Bir uygulama birden çok örnekli bir ortam için tasarlanmamışsa, birden çok etkin örnekle mücadele edebilir ve bu da tutarsız verilere yol açabilir. Ayrıca, bir uygulama düşük gecikme süresine sahip bir şirket içi kurulum için oluşturulmuşsa kullanılabilirlik alanlarının kullanılması performansını kesintiye uğratabilir.

✓ Akışları izlemek için ölçümleri, günlükleri ve izlemeleri etkinleştirin

Ölçümlerin, günlüklerin ve izlemelerin görünürlüğünü sağlamak için Azure İzleyici gibi platforma özel araçları seçin. Olası sorunlara yönelik uyarılar ayarlamak için yerleşik özellikleri kullanın. Bildirim göndermek ve uyarılar almak için temel bir uyarı sistemi kurmalısınız. Aşağıdakiler gibi hizmetlerin sistem durumundaki değişiklikleri gösteren Azure platformu özelliklerinden yararlanın:

Hem altyapı hem de uygulama için Azure İzleyici eylem gruplarını ayarlayın.

Ödün: Daha fazla günlük toplarken, artan hacmi yönetmeniz gerekir, bu da bu günlüklerin depolama ile ilgili maliyetlerini etkiler. Saklama politikalarını kullanarak hacmi yönetin. Çalışma alanında günlük üst sınır ayarlamak için Azure İzleyici'yi kullanın. Daha fazla bilgi için bkz . Güvenilirlik için yapılandırma önerileri.

Aşağıdaki katmanlarda gözlemlenebilirlik oluşturmaya başlayın.

Altyapı

Tanılama günlüklerini etkinleştirerek ve analiz için platform bileşenlerinden yerel ölçümler topladığınızdan emin olarak başlayın. CPU, bellek, giriş/çıkış ve ağ etkinliği gibi kaynak kullanımı hakkında bilgi toplayın.

Uygulama

Bellek tüketimi veya istek gecikmesi gibi uygulama düzeyinde ölçümleri toplayın ve uygulama etkinliklerini günlüğe yazın. Günlük işlemlerini ana uygulama iş parçacığından ayrı bir iş parçacığında veya işlemde yapın. Bu yaklaşım, log kaydının uygulamanın birincil görevlerini yavaşlatmasına neden olmaz.

Ayrıca, Application Insights'taki temel kullanılabilirlik testlerini denetleyin.

Data

Veritabanlarını temel düzeyde izlemek için veritabanı kaynaklarının yaydığı önemli ölçümleri toplayın. Altyapı bileşenlerine benzer şekilde, ağ ölçümleri gibi veri depoları bağlamında kaynak kullanımını izleyin. Bağlantıların havuzda nasıl yönetildiği hakkında veri toplamak, sonraki aşamalarda verimliliği artırmak için önemlidir.

Güvenilirlik açısından etkin ve başarısız bağlantıları izleme gibi bağlantı ölçümlerini izlemek önemlidir. Örneğin Azure Cosmos DB'de, istek sayısı ayrılan istek birimlerini aştığında ve bağlantılar başarısız olduğunda 429 durum kodu döndürülür.

✓ Hata azaltma playbook'u oluşturmaya başlama

Hatalar, aralıklı ve hafifçe genişletilmiş geçici arızalar ile yıkıcı kesintiler arasında değişir.

Düzey 1'de platform hatalarına odaklanın. Bunlar sizin denetiminizin dışında olsa da, bunları işlemeye yönelik stratejilere sahip olmanız gerekir. Örneğin, kullanılabilirlik alanlarını kullanarak bölge kesintilerini çözün. Platform düzeyinde geçici hataları tahmin edin ve bunları iş yükünüzde işleyin.

Bu hataları işleme işlemi karmaşıklığa göre değişir. Olası platform düzeyindeki hataları, bunların ilişkili risklerini ve risk azaltma stratejilerini belgelemeye başlayın. Bu alıştırma öncelikli olarak teoriktir ve ileri düzeylerde otomasyon ile olgunlaşır.

Olasılık, etki ve risk azaltma stratejileri gibi faktörler de dahil olmak üzere hataları belgelemeniz gerekir. İş yükünüzün hedeflerine uygun bir kritiklik ölçeği kullanın. Ölçeğiniz şunları içerebilir:

  • Yüksek. Önemli mali kayıplara ve kullanıcı güveninde düşüşe neden olan eksiksiz bir sistem kesintisi.

  • Orta. İş yükünün bir bölümünü etkileyen ve kullanıcının rahatsız olmasına neden olan geçici bir kesinti.

  • Düşük. Uygulamanın önemsiz bir özelliğini etkileyen ve kullanıcılar için en düşük kapalı kalma süresine neden olan küçük bir yazılım sorunu.

Örnek bir şablon aşağıda verilmişti:

Sorun Riske Kaynak Şiddet Olasılık Azaltma
Geçici ağ hatası İstemci, uygulama sunucusuyla bağlantısını kaybeder. Azure platformu Yüksek Büyük olasılıkla yeniden deneme mantığı ve devre kesiciler gibi istemci tarafı mantığındaki tasarım desenlerini kullanın.
Bölge kesintisi Kullanıcı uygulamaya erişemiyor. Azure platformu Yüksek Büyük olasılıkla değil Tüm bileşenlerde bölge dayanıklılığını etkinleştirin.
Aktarım Katmanı Güvenliği (TLS) sertifikası süre sonu İstemci, uygulamayla bir TLS oturumu oluşturamıyor. İnsan hatası Yüksek Olası Otomatik TLS sertifika yönetimini kullanın.
CPU veya bellek kullanımı tanımlı sınırlara ulaşır ve sunucunun başarısız olmasına neden olur. İstekler zaman aşımına uğradı. Uygulama Orta Olası Otomatik yeniden başlatmaları uygulayın.
Bileşen güncelleştirme sırasında kullanılamaz. Kullanıcı uygulamada işlenmeyen bir hatayla karşılaşır. Dağıtım veya yapılandırma değişikliği Düşük Dağıtımlar sırasında yüksek ihtimalle ve diğer zamanlarda olasılık düşük. İstemci tarafı mantığında bileşenleri ele alın.

Düzey 1'de, her zaman öngörülemeyen hata durumları olduğundan tamlık için çabalamayın. Beklenmeyen kesintilerle karşılaşırsanız, playbook'taki nedenleri ve azaltmaları belgeleyin. Bu varlığı, zaman içinde güncelleştirdiğiniz canlı bir belge olarak değerlendirin.

✓ Geçici hatalardan kurtarmak için mekanizmalar ekleyin

Bulut ortamında geçici hatalar yaygın olarak görülür. Bunlar, yeniden denemelerin genellikle saniyeler içinde çözebileceği kısa vadeli sorunları belirtir.

Sistemi etkin tutmak için bu hataları işlemek için yerleşik SDK'ları ve yapılandırmaları kullanın. Yerleşik yapılandırmalar genellikle varsayılan ayardır, bu nedenle uygulamayı doğrulamak için test etmeniz gerekebilir. Ayrıca, mimarinizdeki geçici hataları yönetmek için tasarlanmış tasarım desenleri uygulayın. Daha fazla bilgi için bkz . Güvenilirliği destekleyen mimari tasarım desenleri.

Süregelen sorunlar geçici olmayan bir arıza veya bir kesintinin başlangıcına işaret edebilir. Bu senaryo, uygulama içindeki yerelleştirilmiş sorunları çözmekten daha fazlasını gerektirir. Sistemin kritik kullanıcı ve sistem akışlarını incelemeyi ve kendini koruma teknikleri ve kurtarma çalışmalarını eklemeyi içerir. Bu yöntemler, Düzey 2'nin açıklandığı olgun yöntemlerdir.

✓ Temel testleri çalıştırma

Temel güvenilirlik testini yazılım geliştirme yaşam döngüsünün ilk aşamalarında tümleştirin. İşlevselliği ve yapılandırmaları doğrulamak için birim testlerinden başlayarak test yapma fırsatlarını arayın.

Ayrıca risk azaltma playbook'unda tanımladığınız sorunlar için basit test çalışmaları geliştirin. Daha yüksek etki, daha düşük efor azaltma işlemlerine odaklanın. Örneğin, yeniden deneme mantığınızın kesintileri nasıl çözeceğini görmek için ağ kesintilerini veya aralıklı bağlantı sorunlarını simüle edin.

Risk: Test genellikle geliştirme döngüsünde sürtüşmelere neden olabilir. Bu riski azaltmak için güvenilirlik testini geliştirme görevleriyle birlikte izlenebilir hale getirin.

Öncelik özellik geliştirmedir ve test, geliştirme döngüsünde uyuşmalara neden olabilir. Özellik geliştirme tamamlanmadan önce teste başlamak daha kolaydır. Uygulamanın başlangıçta işlevsiz yönlerini tasarlamak, daha sonra ele alınacak bir sorun kapsamı oluşturmak yerine işlevsel özellikler ekledikçe bunları genişletmenize olanak tanır. Bu yaklaşım başlangıçta daha fazla çaba gerektirse de yönetilebilir ve daha sonra daha büyük sorunları önler.

Sonraki Adımlar