Güvenilirlik tasarım ilkeleri

Kesintiler ve arızalar tüm iş yükleri için ciddi endişelerdir. Güvenilir bir iş yükü bu olaylardan kurtulmalı ve amaçlanan işlevselliği tutarlı bir şekilde sağlamaya devam etmelidir. Kabul edilebilir bir süre içinde hataları algılayabilmesi, dayanabilmesi ve kurtarabilmesi için dayanıklı olmalıdır. Ayrıca, kullanıcıların söz verilen zaman aralığında iş yüküne söz verilen kalite düzeyinde erişebilmesi için de kullanılabilir olması gerekir.

Özellikle iş yükü dağıtılmış sistemlerde çalışacak şekilde oluşturulduğunda hataların oluşmayacağını varsaymak gerçekçi değildir. Bazı bileşenler çalışmaya devam ederken bazı bileşenler başarısız olabilir. Bir noktada kullanıcı deneyimi etkilenebilir ve bu da iş hedeflerini tehlikeye atabilir.

İş yükü mimarileri uygulama kodu, altyapı ve işlemlerde güvenilirlik güvencelerine sahip olmalıdır. Tasarım seçimleri, iş gereksinimleri tarafından belirtilen amacı değiştirmemelidir. Bu tür değişiklikler önemli dezavantajlar olarak kabul edilmelidir.

Tasarım ilkeleri, geliştirme yaşam döngüsü boyunca dikkate almanız gereken güvenilirlik yönleri için rehberlik sağlamak üzere tasarlanmıştır. Önerilen yaklaşımlarla başlayın ve bir dizi gereksinim için avantajları iki yana yaslayın. Stratejinizi ayarladıktan sonra Güvenilirlik denetim listesini kullanarak eylemleri yönlendirin.

Bu ilkeleri tasarımınıza uygulamazsanız, iş yükü büyük olasılıkla üretimdeki sorunları tahmin etmeye veya işlemeye hazır olmaz. Sonuç, finansal kaybe yol açan hizmet kesintileri olabilir. Kritik iş yükleri söz konusu olduğunda, bu ilkelerin uygulanamaması güvenliği tehlikeye atabilir.

İş gereksinimleri için tasarım

Hedef simgesi İş yükünün hedeflenen yardımcı programlarına odaklanarak iş gereksinimlerini toplayın.

Gereksinimler, iş yüküne özgü kullanıcı deneyimini, verileri, iş akışlarını ve özellikleri kapsamalıdır. Gereksinimler sürecinin sonucu, beklentileri açıkça belirtmelidir. Hedeflere ulaşılmalı ve belirli bir yatırım verildiğinde ekiple görüşülmelidir. Teknolojik seçimleri, uygulamaları ve operasyonları yönlendirmek için belgelenmelidirler.

Yaklaşım Avantaj
Tek tek bileşenler, sistem akışları ve bir bütün olarak sistem için göstergeler üzerinde hedefler ayarlayarak başarıyı ölçün. Bu hedefler kullanıcı akışlarını daha güvenilir hale getirir mi? Ölçümler beklentileri ölçmektedir. Karmaşıklıkları anlamanıza ve bu karmaşıklıkların aşağı akış maliyetlerinin yatırım sınırı içinde olup olmadığını belirlemenize olanak tanır.

Hedef değerler ideal bir durumu gösterir. Değerleri, bu durumdan sapmaları ve hedef duruma dönmenin ne kadar sürdüğünü algılamanıza yardımcı olan test eşikleri olarak kullanabilirsiniz.

Uyumluluk gereksinimleri, kapsam içi akışlar için öngörülebilir sonuçlara da sahip olmalıdır. Bu akışlara öncelik vermek , en hassas olan alanlara dikkat çeker.
Platform taahhütlerini anlama. Hizmetler için sınırları, kotaları, bölgeleri ve kapasite kısıtlamalarını göz önünde bulundurun. Hizmet düzeyi sözleşmeleri (SLA) hizmete göre farklılık gösterir. Tüm hizmetler ve özellikler eşit şekilde ele alınmaz. Tüm hizmetler veya özellikler tüm bölgelerde kullanılamaz. Abonelik kaynak sınırlarının çoğu bölgeye göredir. Kapsam ve sınırlar hakkında iyi bir anlayışa sahip olmak kaymayı algılamanıza ve dayanıklılık ve kurtarma mekanizmaları oluşturmanıza yardımcı olabilir.
Bağımlılıkları ve bunların dayanıklılık üzerindeki etkisini belirleyin. Diğer ekipler veya üçüncü taraflar tarafından geliştirilen bağımlı altyapıyı, hizmetleri, API'leri ve işlevleri izlemek , iş yükünün bu bağımlılıklar dışında çalışıp çalışmayacağını belirlemenize yardımcı olur. Ayrıca basamaklı hataları anlamanıza ve aşağı akış işlemlerini geliştirmenize yardımcı olur.

Geliştiriciler, hatalara açık olabilecek dış hizmetleri kullandığınızda olası hataları işlemek için dayanıklı tasarım desenleri uygulayabilir .

Dayanıklılık için tasarım

Hedef simgesi İş yükünün tam veya azaltılmış işlevsellikle çalışmaya devam etmesi gerekir.

Bileşen arızaları, platform kesintileri, performans düşüşleri, sınırlı kaynak kullanılabilirliği ve diğer hataların oluşmasını beklemelisiniz. Hataya dayanıklı olması ve düzgün bir şekilde düşürülebilmesi için sistemde dayanıklılık oluşturun.

Yaklaşım Avantaj
Kritik yolda bulunan bileşenleri , düzeyi düşürülmüş durumda çalışabilecek bileşenlerden ayırt edin. İş yükünün tüm bileşenlerinin eşit derecede güvenilir olması gerekmez. Kritikliği belirlemek , her bileşenin kritikliğine göre tasarlamanıza yardımcı olur. Başarısız olmaları durumunda uçtan uca sorunlara neden olabilecek bileşenler yerine kullanıcı deneyimini biraz bozabilecek bileşenler için fazla dayanıklılık elde etmezsiniz .

Tasarım, kaynakları kritik bileşenlere ayırmada verimli olabilir. Ayrıca, kritik olmayan bir bileşen başarısız olursa veya düzeyi düşürülmüş bir duruma girerse, art arda hataları önlemek için yalıtılabilmesi için hata yalıtım stratejileri de uygulayabilirsiniz.
Özellikle kritik bileşenler için sistemdeki olası hata noktalarını belirleyin ve kullanıcı akışları üzerindeki etkisini belirleyin. Hata durumlarını, patlama yarıçapını ve hatanın yoğunluğunu analiz edebilirsiniz: tam veya kısmi kesinti. Bu analiz, bileşen düzeyinde hata işleme özelliklerinin tasarımını etkiler.
Tasarım desenlerini doğru kullanarak ve hataları yalıtmak için tasarımı modülerleştirerek kendini koruma özellikleri oluşturun. Sistem, bir sorunun aşağı akış bileşenlerini etkilemesini önleyebilir. Sistem geçici ve kalıcı hataları, performans sorunlarını ve güvenilirliği etkileyebilecek diğer sorunları azaltabilecektir.

Ayrıca patlama yarıçapını da en aza indirebileceksiniz.
Desteklenen bölgelerdeki hizmetlerin kapasite kısıtlamalarını göz önünde bulundurarak kritik bileşenlerin (uygulama ve altyapı) ölçeğini genişletme özelliğini ekleyin. İş yükü , değişken kapasite artışlarını ve dalgalanmalarını işleyebilecektir. Bu özellik, sistemde geçerli kullanımda artış gibi beklenmeyen bir yük olduğunda çok önemlidir. İş yükü birden çok bölgede ölçeği genişletecek şekilde tasarlandıysa, olası geçici kaynak kapasitesi kısıtlamalarının veya tek bir bölgede etkileyen diğer sorunların üstesinden gelebilir.
Katmanlar halinde yedeklilik ve çeşitli uygulama katmanlarında dayanıklılık oluşturun.

Fiziksel yardımcı programlarda yedekliliği ve anında veri çoğaltmayı hedefleyin. Ayrıca hizmetleri, işlemleri ve personeli kapsayan işlevsel katmanda yedekliliği hedefleyin.
Yedeklilik , tek hata noktalarını en aza indirmeye yardımcı olur. Örneğin, bir bileşen, bölgesel veya bölgesel kesinti varsa, yedekli dağıtım (etkin-etkin veya aktif-pasif) çalışma süresi hedeflerini karşılamanıza olanak tanır.

Ara değişkenlerin eklenmesi bileşenler arasında doğrudan bağımlılığı önler ve arabelleğe almayı geliştirir. Bu avantajların her ikisi de sistemin dayanıklılığını güçlendirdi.
Yedekli örneklerin tek tek hatasını hemen azaltmak ve kaçak kaynak tüketimine karşı arabelleğe almak için fazla sağlama. Fazla sağlama için yapılan yüksek yatırım dayanıklılığı artırır.

Ölçeklendirme işlemleri hatayı düzeltmeye başlamadan önce bile sistem etkin bir hata sırasında tam yardımcı programda çalışmaya devam eder. Benzer şekilde, sistem hataları veya agresif ölçeklendirme gerçekleşmeden önce planlı arabelleğinizi talep ederek kritik önceliklendirme süresi kazanarak beklenmeyen runaway kaynak tüketimi riskini azaltabilirsiniz.

Kurtarma için tasarlama

Hedef simgesi İş yükü, kullanıcı deneyiminde ve iş hedeflerinde en az kesintiyle tüm büyüklüklerin çoğu hatanın tahmin edilebilmesi ve kurtarılabilmesi gerekir.

Yüksek düzeyde dayanıklı sistemler bile hem mimari tasarımında hem de iş yükü işlemlerinde olağanüstü durum hazırlığı yaklaşımlarına ihtiyaç duyar. Veri katmanında, bozulma durumunda iş yükü durumunu onarabilecek stratejileriniz olmalıdır.

Yaklaşım Avantaj
Üzerinde anlaşmaya varılan kurtarma hedefleriyle uyumlu yapılandırılmış, test edilmiş ve belgelenmiş kurtarma planlarına sahip olmanız gerekir. Planlar, sistemin tamamına ek olarak tüm bileşenleri kapsamalıdır. İyi tanımlanmış bir süreç, işletmenizin finans ve itibarı üzerinde olumsuz etkiyi önleyebilecek hızlı bir iyileşmeye yol açar. Düzenli kurtarma tatbikatları gerçekleştirmek, zaman ve veri bütünlüğü önemli başarı ölçüleri olduğunda karışıklığı önlemek için sistem bileşenlerini, verileri ve yük devretme ve yeniden çalışma adımlarını kurtarma sürecini test eder.
Kurtarma hedeflerinizdeki durum bilgisi olan tüm bileşenlerin verilerini onarabildiğinizden emin olun. Yedeklemeler, bilinen son iyi durum gibi güvenilir bir kurtarma noktası kullanarak sistemi çalışma durumuna geri döndürmek için gereklidir.

Sabit ve işlemsel olarak tutarlı yedeklemeler, verilerin değiştirilmemesini ve geri yüklenen verilerin bozulmamasını sağlar.
Tasarımda otomatik kendi kendini iyileştirme özelliklerini uygulayın. Bu otomasyon, insan müdahalesi gibi dış faktörlerden kaynaklanan riskleri azaltır ve kesme düzeltme döngüsünü kısaltır.
Durum bilgisi olmayan bileşenleri sabit kısa ömürlü birimlerle değiştirin. İsteğe bağlı olarak oluşturup yok edebilirsiniz kısa ömürlü birimler oluşturmak , yinelenebilirlik ve tutarlılık sağlar. Yeni birimlere geçişi artımlı hale getirmek ve kesintileri en aza indirmek için yan yana dağıtım modellerini kullanın.

Operasyon için tasarlama

Hedef simgesi Hata koşullarını tahmin etmek için işlemlerde sola kaydırma.

Geliştirme yaşam döngüsünde hataları erken ve çoğunlukla test edin ve performansın güvenilirlik üzerindeki etkisini belirleyin. Kök neden analizi ve son otopsiler için, ekipler arasında bağımlılık durumunu ve devam eden hataların paylaşılan görünürlüğüne sahip olmanız gerekir. Gözlemlenebilir sistemlerden gelen içgörüler, tanılamalar ve uyarılar, etkili olay yönetimi ve sürekli geliştirme için temel öneme aittir.

Yaklaşım Avantaj
Telemetri ile bağıntı kurabilen gözlemlenebilir sistemler oluşturun. İzleme ve tanılama kritik işlemlerdir. Bir şey başarısız olursa, başarısız olduğunu, ne zaman başarısız olduğunu ve neden başarısız olduğunu bilmeniz gerekir. Bileşen düzeyinde gözlemlenebilirlik temeldir, ancak bileşenlerin ve bağıntılı kullanıcı akışlarının toplanmış gözlemlenebilirliği, sistem durumunun bütünsel bir görünümünü sağlar. Bu veriler, site güvenilirliği mühendislerinin düzeltme çalışmalarına öncelik vermelerini sağlamak için gereklidir.
Olası arızaları ve anormal davranışları tahmin edin. Önceliklendirilmiş ve eyleme dönüştürülebilir uyarıları kullanarak etkin güvenilirlik hatalarını görünür hale getirin.

Daha hızlı önceliklendirmeye yol açan güvenilir süreçlere ve altyapıya yatırım yapın.
Site güvenilirlik mühendisleri, devam eden canlı site olaylarını azaltabilmeleri ve canlı olaylara dönüşmeden önce tahmine dayalı uyarılar tarafından tanımlanan olası hataları proaktif olarak azaltabilmeleri için hemen bildirilebilir.
Üretim ve üretim öncesi ortamlarda hataların simülasyonunu yapın ve testleri çalıştırın. Kurtarma için gerçekçi beklentiler belirleyebilmeniz için üretimde hatalarla karşılaşmanız yararlıdır. Bu, hatalara düzgün bir şekilde yanıt veren tasarım seçimleri yapmanıza olanak tanır. Ayrıca, iş ölçümleri için ayarladığınız eşikleri test etmenizi sağlar.
Otomasyonu göz önünde bulundurarak bileşenler oluşturun ve mümkün olduğunca otomatikleştirin. Otomasyon insan hatası olasılığını en aza indirerek test, dağıtım ve işlemlere tutarlılık getirir.
Rutin işlemleri ve sistemin kararlılığı üzerindeki etkilerini dikkate alır. İş yükü uygulama düzeltmeleri, güvenlik ve uyumluluk denetimleri, bileşen yükseltmeleri ve yedekleme işlemleri gibi devam eden işlemlere tabi olabilir. Bu değişiklikleri inceleme, sistemin kararlılığını güvence altına alır.
Üretimdeki olaylardan sürekli olarak ders çıkar. Olaylara bağlı olarak, tasarım ve işlemlerde ön üretimde fark edilemeyen etkiyi ve gözetimleri belirleyebilirsiniz. Sonuç olarak, gerçek hayattaki olaylara göre geliştirmeler yapabileceksiniz.

Basit tutun

Hedef simgesi Mimari tasarımını, uygulama kodunu ve işlemleri aşırı kullanmaktan kaçının.

Çoğunlukla eklediğinizden çok kaldırdığınız şey, en güvenilir çözümlere yol açar. Basitlik, denetim için yüzey alanını azaltarak verimsizlikleri ve olası yanlış yapılandırmaları veya beklenmeyen etkileşimleri en aza indirir. Öte yandan, aşırı dağıtım tek hata noktalarına neden olabilir. Dengeli bir yaklaşım sağlayın.

Yaklaşım Avantaj
Mimarinize yalnızca hedef iş değerlerine ulaşmanıza yardımcı olacak bileşenler ekleyin. Kritik yolu yalın tutun. İş gereksinimleri için tasarım yapmak, uygulanması ve yönetilmesi kolay basit bir çözüme yol açabilir. Her biri önemli bir hata noktası olduğundan çok fazla kritik bileşene sahip olmaktan kaçının.
Kod uygulaması, dağıtımı ve süreçlerinde standartlar oluşturun ve bunları belgeleyin. Otomatik doğrulamaları kullanarak bu standartları zorunlu kılma fırsatlarını belirleyin. Standartlar tutarlılık sağlar ve insan hatalarını en aza indirir. Standart adlandırma kuralları ve kod stili kılavuzları gibi yaklaşımlar, kaliteyi korumanıza ve sorun giderme sırasında varlıkların tanımlanmasını kolaylaştırmanıza yardımcı olabilir.
Teorik yaklaşımların kullanım örnekleriniz için geçerli olan pragmatik tasarıma çevirip çevirmediğini değerlendirin. Çok ayrıntılı olan uygulama kodu gereksiz bağımlılıklara, ek işlemlere ve zor bakıma yol açabilir.
Yeterli kod geliştirin. Beklenmeyen kaynak tüketimi, kullanıcı veya veri akışı hataları ve kod hataları gibi verimsiz uygulamaların sonucu olan sorunları önleyebileceksiniz.

Buna karşılık güvenilirlik sorunları, kodun sorunları çözecek kadar dayanıklı olduğundan emin olmak için kod incelemelerine yol açmalıdır.
İş hedeflerini etkili bir şekilde karşılamanıza yardımcı olabilecek platform tarafından sağlanan özelliklerden ve önceden oluşturulmuş varlıklardan yararlanın. Bu yaklaşım geliştirme süresini en aza indirir. Ayrıca benzer iş yükleriyle kullanılan denenmiş ve test edilmiş uygulamalara güvenmenizi sağlar.

Sonraki adımlar