Aracılığıyla paylaş


Kendini iyileştirme ve kendini koruma için mimari stratejileri

Bu Azure Well-Architected Framework Güvenilirlik denetim listesi önerisi için geçerlidir:

RE:07 Kendi kendini koruma ve kendini iyileştirici önlemler uygulayarak iş yükünüzün dayanıklılığını güçlendirin. İş yükünüzün olaylar sırasında işlevsel kalmasına ve olaylardan kurtulmasına yardımcı olmak için yerleşik özellikleri ve iyi oluşturulmuş bulut desenlerini kullanın.

Bu kılavuzda, güvenilirliği iyileştirmek için uygulama mimarinizde kendini koruma ve kendini iyileştirme özellikleri oluşturmaya yönelik öneriler açıklanmaktadır.

Kendini koruma özellikleri iş yükünüz için dayanıklılık sağlar. Tam kesinti olasılığını azaltır ve hatalar oluştuğunda iş yükünüzün normal veya düşük bir durumda çalışmasına olanak sağlar. Kendi kendini düzeltme özellikleri, hata algılama ve hatalara yanıt vermek için otomatik düzeltme eylemleri oluşturarak kapalı kalma süresini önlemenize yardımcı olur.

Tanımlar

Süre Definition
Kendi kendini iyileştirme İş yükünüzün, etkilenen bileşenleri kurtararak ve gerekirse yedekli altyapıya yük devrederek sorunları otomatik olarak çözebilmesi.
Kendini koruma İş yükünüzün olası sorunlara karşı dayanıklı olma yeteneği.

Yedeklilik tasarımı

İş yükünüzü arızalara karşı korumanın en etkili stratejilerinden biri, tüm bileşenlerinde yedeklilik oluşturmak ve tek hata noktalarından kaçınmaktır. Bileşenleri veya iş yükünün tamamını yedekli kaynaklara devredebilmek, sisteminizdeki çoğu hatayı işlemek için verimli bir yol sağlar.

Farklı düzeylerde yedeklilik oluşturun, işlem, ağ ve depolama gibi yedekli altyapı bileşenlerini göz önünde bulundurun ve çözümünüzün birden çok örneğini dağıtmayı göz önünde bulundurun. İş gereksinimlerinize bağlı olarak, tek bir bölgede veya bölgeler arasında yedeklilik oluşturabilirsiniz. Kurtarma gereksinimlerinizi karşılamak için etkin-etkin mi yoksa etkin-pasif bir tasarıma mı ihtiyacınız olduğunu da belirleyebilirsiniz. Daha fazla bilgi için bkz . Yedeklilik tasarlamaya yönelikmimari stratejileri ve kullanılabilirlik alanlarını ve bölgelerini kullanmaya yönelik mimari stratejileri.

Kendini koruma için tasarım

İş yükünüzü kendi kendini koruma amacıyla tasarlamak için altyapı ve uygulama mimarisi tasarım desenlerini izleyerek iş yükünüzün dayanıklılığını iyileştirin. Tam bir uygulama kesintisi yaşama olasılığını en aza indirmek için tek hata noktalarını ortadan kaldırarak ve hataların patlama yarıçapını en aza indirerek çözümünüzün dayanıklılığını artırın. Bu makaledeki tasarım yaklaşımları, iş yükünüzün dayanıklılığını güçlendirmek ve iş yükünüzün tanımlı güvenilirlik hedeflerini karşılamak için çeşitli seçenekler sağlar.

Altyapı tasarım kılavuzu ve desenleri

Altyapı düzeyinde yedekli mimari tasarımı , kullanılabilirlik alanları veya bölgeler arasında dağıtılan kaynaklar ile kritik akışlarınızı desteklemelidir. Mümkün olduğunda otomatik ölçeklendirmeyi uygulayın. Otomatik ölçeklendirme, iş yükünüzün etkinlikte tahmin edilmeyen ani artışlara karşı korunmasına yardımcı olur ve altyapınızı daha da güçlendirir.

Sorunlar ortaya çıktığında patlama yarıçapını en aza indirmek için Dağıtım Damgaları desenini veya Bulkhead desenini kullanın. Bu desenler, tek bir bileşen kullanılamıyorsa iş yükünüzü kullanılabilir durumda tutmaya yardımcı olur. Otomatik ölçeklendirme stratejinizle birlikte aşağıdaki uygulama tasarım desenlerini kullanın.

  • Dağıtım DamgaLarı düzeni: Birden çok iş yükünü veya kiracıyı barındırmak ve çalıştırmak için çeşitli kaynak grubunu sağlayın, yönetin ve izleyin. Her bir kopya damga veya bazen hizmet birimi, ölçek birimi veya hücre olarak adlandırılır.

  • Bulkhead deseni: Hizmet örneklerini, tüketici yükü ve kullanılabilirlik gereksinimlerine göre havuz olarak bilinen farklı gruplara bölümleyin. Bu tasarım hataları yalıtmaya yardımcı olur ve bir hata sırasında bile bazı tüketiciler için hizmet işlevselliğini sürdürmenize olanak tanır.

Uygulama tasarımı kılavuzu ve desenleri

Uygulama tasarımınızda monolitik uygulamalar oluşturmaktan kaçının. Tek bir bileşende arızalar olduğunda kapsamlı sorun riskini azaltmak için iyi tanımlanmış standartlar aracılığıyla birbirleriyle iletişim kuran gevşek şekilde bağlanmış hizmetleri veya mikro hizmetleri kullanın. Örneğin, tüm zaman uyumsuz iletişimi işlemek için bir hizmet veri yolu kullanımını standartlaştırabilirsiniz. İletişim protokollerinin standartlaştırılması, uygulama tasarımının tutarlı ve basitleştirilmiş olmasını sağlar ve bu da iş yükünün arızalar olduğunda daha güvenilir ve daha kolay giderilmesini sağlar. Pratik olduğunda, kilitlenme harfi gibi zaman aşımı sorunlarını en aza indirmek için zaman uyumlu iletişim yerine bileşenler arasındaki zaman uyumsuz iletişimi tercih edin.

Tasarım standartlarınızı geliştirmenize ve mimarinin özelliklerini basitleştirmenize yardımcı olması için endüstride kanıtlanmış desenleri kullanın. Güvenilirliği desteklemeye yardımcı olabilecek tasarım desenleri , Güvenilirlik desenleri makalesinde bulunabilir.

Kendi kendini iyileştirecek şekilde tasarlama

İş yükünüzü kendi kendine düzeltme için tasarlamak üzere otomatik yanıtların tetiklenip kritik akışların düzgün bir şekilde kurtarılması için hata algılamayı uygulayın. Hatanın doğası ve kurtarmanın başarısı hakkında operasyonel içgörüler sağlamak için günlüğe kaydetmeyi etkinleştirin. Kritik bir akış için kendi kendini düzeltmeye yönelik yaklaşımlar, bu akış için tanımlanan güvenilirlik hedeflerine ve akışın bileşenlerine ve bağımlılıklarına bağlıdır.

Altyapı tasarım kılavuzu

Altyapı düzeyinde, kritik akışlarınız yedekli mimari tasarımı tarafından desteklenmeli ve bunu destekleyen bileşenler için otomatik yük devretme etkinleştirilmelidir. Aşağıdaki hizmet türleri için otomatik yük devretmeyi etkinleştirebilirsiniz:

  • İşlem kaynakları: Azure Sanal Makine Ölçek Kümeleri ve hizmet olarak platform (PaaS) işlem hizmetlerinin çoğu otomatik yük devretme için yapılandırılabilir.

  • Veritabanları: İlişkisel veritabanları Azure SQL yük devretme kümeleri, Always On kullanılabilirlik grupları veya PaaS hizmetleriyle yerleşik özellikler gibi çözümlerle otomatik yük devretme için yapılandırılabilir. NoSQL veritabanları, PaaS hizmetleri için benzer kümeleme özelliklerine ve yerleşik özelliklere sahiptir.

  • Depolama: Otomatik yük devretme ile yedekli depolama seçeneklerini kullanın.

Uygulama tasarımı kılavuzu

Güvenilirliği destekleyen tasarım desenlerini kullanmaya ek olarak, kendi kendini iyileştirme mekanizmaları geliştirmenize yardımcı olabilecek diğer stratejiler şunlardır:

  • Uzun süre çalışan işlemler için denetim noktalarını kullanın: Uzun süre çalışan bir işlem başarısız olursa denetim noktaları dayanıklılık sağlayabilir. İşlem yeniden başlatıldığında , örneğin başka bir sanal makine tarafından alınırsa, son denetim noktasından devam edebilir. Görevle ilgili durum bilgilerini düzenli aralıklarla kaydeden bir mekanizma uygulamayı düşünün. Bu durumu, görevi çalıştıran işlemin herhangi bir örneği tarafından erişilebilen dayanıklı depolama alanına kaydedin. İşlem kapatılırsa, gerçekleştirdiği çalışma başka bir örnek kullanılarak son denetim noktasından sürdürülebilir. NServiceBus ve MassTransit gibi bu işlevselliği sağlayan kitaplıklar vardır. Aralıkların Azure Service Bus'taki kuyruklardan gelen iletilerin işlenmesiyle hizalandığı durumu saydam bir şekilde kalıcı hale getirir.

  • Otomatik kendi kendini düzeltme eylemlerini uygulama: Önceden belirlenmiş durum değişiklikleri algılandığında izleme çözümünüz tarafından tetiklenen otomatik eylemleri kullanın. Örneğin, izlemeniz bir web uygulamasının isteklere yanıt vermediğini algılarsa, uygulama hizmetini yeniden başlatmak için PowerShell betiği aracılığıyla otomasyon oluşturabilirsiniz. Ekibinizin beceri kümesine ve tercih edilen geliştirme teknolojilerine bağlı olarak, daha karmaşık otomasyon eylemleri oluşturmak için bir web kancası veya işlevi kullanın. Veritabanı azaltmaya yanıt vermek için işlev kullanma örneği için olay tabanlı bulut otomasyonu başvuru mimarisine bakın. Otomatik eylemleri kullanmak, hızlı bir şekilde kurtarmanıza ve insan müdahalesinin gerekliliğini en aza indirmenize yardımcı olabilir.

Düzgün bir düşüş modu uygulama

Kendini koruma ve kendini iyileştirme mekanizmalarınıza rağmen, bir veya daha fazla bileşenin belirli bir süre kullanılamaz hale geldiği ölçüde arızalandığı durumlarla karşılaşabilirsiniz. Bu gibi durumlarda, iş yükünüz iş yükünüz düşük bir durumda devam etmek için yeterli işlevselliği koruyabilir. Bunun mümkün olduğundan emin olmak için düzgün bir düşüş modu tasarlayıp uygulayın. Bu, başarısız bileşenlere tepki olarak etkinleştirilen ayrı bir iş akışıdır. Tasarım ve uygulamayla ilgili dikkat edilmesi gerekenler şunlardır:

  • Hata algılama ve otomatik başlatma: İzleme ve uyarı sistemleriniz düzeyi düşürülmüş ve başarısız bileşenleri algılamalıdır, bu nedenle bu sinyalleri kullanarak düzgün performans düşüşü moduna geçmenin gerekli olduğunu belirleyen bir iş akışı oluşturun. Daha sonra iş akışı, etkilenen bileşenlere ve bileşenlerden alternatif bileşenlere veya diğer benzer eylemlere yapılan çağrıları otomatik olarak yeniden yönlendirmelidir.
  • Düzeyi düşürülmüş bir kullanıcı deneyimi uygulayın: Kullanıcılara, hangi işlevlerin kaldığını ve nelerin değiştiğini bilmelerini sağlamak için düzgün bir düşüş modunuzda bir bildirim mekanizması ekleyin. Bu genellikle, örneğin bir sepete öğe eklerken açılan pencere gibi iş yükünün farklı işlevlerine bağlı iletilere yansıtılır.
  • İş yükünüzün temel işlevlerini tamamlamak için alternatif yollar oluşturun: İş yükünüzün kritik akışlarını düşünün ve çekirdek bileşenler kullanılamadığında bu akışları nasıl koruyabileceğinizi belirleyin. Örneğin, veritabanı kapalıysa uygulama önbelleğe alınmış verileri kullanarak salt okunur moda geçebilir. Bu örneği daha fazla göstermek için, bir ödeme ağ geçidinin devre dışı olması durumunda önbelleğe alınmış verilerin kullanılması kullanıcıların sepetini kaydetmesine ve satın alma işlemini daha sonra tamamlamasına olanak tanıyabilir.

Geçici hataları işlemek için mekanizmalar uygulama

Ağ zaman aşımları gibi geçici hatalar bulut iş yükleri için yaygın bir sorundur, bu nedenle iş yükünüzü üretimde çalıştırırken bunları işlemek için gerekli mekanizmaların bulunması kapalı kalma süresini ve sorun giderme çalışmalarını en aza indirebilirsiniz. İşlemi yeniden denemeden önce yeterli süre verilirse geçici bir hata nedeniyle başarısız olan çoğu işlem başarılı olacağından, geçici hatalarla başa çıkmak için en yaygın yaklaşım yeniden deneme mekanizmasını kullanmaktır. Yeniden deneme stratejinizi tasarlarken aşağıdakileri göz önünde bulundurun:

Önerilerin ve önemli noktaların tam gözden geçirilmesi için Geçici hatalar tasarım kılavuzuna bakın.

Arka plan işlerini uygulama

Arka plan işleri, görevleri kullanıcı arabiriminden (UI) ayırma yoluyla sistemin güvenilirliğini artırmanın etkili bir yoludur. Kullanıcı girişi veya geri bildirim gerektirmeyen ve kullanıcı arabirimi yanıt hızını etkilemeyen bir görevi arka plan işi olarak uygulayın.

Arka plan işlerinin yaygın örnekleri şunlardır:

  • Karmaşık hesaplamalar yapma veya yapısal modelleri analiz etme gibi yoğun CPU kullanan işler.
  • Birden çok depolama işlemi çalıştırma veya büyük dosyaların dizinini oluşturma gibi G/Ç yoğunluklu işler.
  • Verileri düzenli olarak güncelleştirme veya belirli bir zamanda görevleri işleme gibi toplu işler.
  • Siparişi tamamlama veya hizmet ve sistemleri sağlama gibi uzun süre çalışan iş akışları.

Önerilerin ve önemli noktaların tam gözden geçirilmesi için ayrıntılı yönergeler için arka plan işleri tasarım kılavuzuna bakın.

Azure hizmetlerinin kolaylaştırılması

Çoğu Azure hizmeti ve istemci SDK'sı bir yeniden deneme mekanizması içerir. Ancak her hizmetin farklı özellikleri ve gereksinimleri olduğundan, her yeniden deneme mekanizması belirli bir hizmete ayarlanır. Daha fazla bilgi için bkz. Geçici hata işleme önerileri.

E-posta, ses veya SMS gibi bildirimler için Azure İzleyici eylem gruplarını kullanın ve otomatik eylemleri tetikleyin. Bir hatayla ilgili bildirim aldığınızda otomatik düzeltme eylemi gerçekleştirmek için bir Azure Otomasyonu runbook'u, Azure Event Hubs'ı, Azure işlevini, mantıksal uygulamayı veya web kancasını tetikleyin.

Example

Bazı desenlerin kullanım örnekleri için bkz. .NET için güvenilir web uygulaması deseni. Bir başvuru uygulaması dağıtmak için bu adımları izleyin.

Güvenilirlik denetim listesi

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