Arızaya dayanıklılık

Arızaya dayanıklılık, bir sistemin bileşenlerinden birisinin tamamen arızalanarak işlemez hale gelmesi ya da bileşenin içinde bir ya da daha fazla arıza oluşması durumunda, sistemin düzgün bir şekilde işlemeye devam edebilme özelliğidir. Eğer sistemin iş kalitesi azalırsa bile, küçük bir arızanın bile tamamen durmaya yol açtığı safça/amatörce tasarlanmış bir sistemle karşılaştırıldığında, iş kalitesindeki azalma arızanın ciddiyetiyle doğru orantılıdır. 'Arızaya dayanıklılık' yüksek kullanılabilirlik tasarımlarında veya kritik-yaşamsal sistemlerde çok rağbet gören bir özelliktir.

Arızaya dayanıklı tasarım bir sistemin herhangi bir parçası başarısız olduğunda sistemin tamamen başarısız olması yerine, muhtemelen azalmış bir oranda, amaçlanan işlevini sürdürmesini sağlar. Kavram en çok da, kısmi arıza/başarısızlık durumunda çıktı miktarındaki azalma veya tepki süresindeki artmaya rağmen, öyle ya da böyle, tam işlevselliğini korumaya devam etmek üzere tasarlanan bilgisayar sistemlerini tanımlamak için kullanılır. Bu durumdaki bir sistemin tamamı donanım ya dayazılımdaki sorunlar sebebiyle durmayacaktır. Başka bir alandaki örnek ise lastiklerinden birisi delinse bile sürülebilir olarak tasarlanmış bir motorlu araç olacaktır. Malzemenin yorulması, aşınma/korozyon, imalat kusurları ya da darbe alma gibi durumlarda dahi bütünlüğünü koruyabilen bir yapı ise başka bir örnektir.

Tekil sistem kapsamında Arızaya dayanıklılık, olağan dışı koşulların oluşmasını önceden tahmin ederek ve bu koşullarla başa çıkabilecek bir sistem kurarak elde edilebilir, ve genel olarak öz-dengeleme (self-stabilization) hedeflenerek sistemin arızadan-arındırılmış duruma yaklaşması sağlanabilir. Ancak, eğer sistemin başarısız olmasının sonuçları felaket düzeyindeyse, veya yeteri kadar güvenilir yapmanın maliyeti çok yüksekse, daha iyi bir çözüm belki de bir çeşit 'çoğaltma' kullanmak olacaktır. Her hâlükârda, eğer sistemin başarısız olmasının sonuçları felaket düzeyindeyse, sistem güvenli moda düşmek için 'eski haline dönme' (reversion) özelliğini kullanabilmelidir. Bu 'geri-alma'(roll-back) kurtarmasına benzerdir ancak işlev döngüsü içerisinde insan bulunuyorsa, bir insan eylemi olabilecektir.

Yüksek derecede arızaya-dayanıklı bir sistem; bir ya da iki bileşeni arızalansa bile aynı seviyede verim üretebilir. Örneğin, yedek elektrik üreteci (jeneratörü) olan bir bina şebeke elektriği kesilse bile duvardaki elektrik çıkışlarına aynı voltaj değerini verecektir.

Arızaya-hazırlıklı (fail safe), veya arızaya-korumalı, ya da zarifçe arızalanacak şekilde tasarlanmış bir sistem, azalmış bir oranda işlem görse de ya da tamamen arızalansa da, bunu insanları, mülkü, veya veriyi; yaralanmadan, zarardan, gizlilik ihlalinden, ya da içeriğin açık edilmesinden koruyacak şekilde yapar. Bilgisayarlarda, bir program tutarlı çıkışı (zarif çıkış -graceful exit) gerçekleştirerek (programın denetimsiz şekilde çakılmasına göre) Arızaya-hazırlıklı olabilir, bu şekilde yaşanan arıza sonrası oluşabilecek veri bozulmasının önüne geçmiş olur. Benzer bir anlam ayrımı, sistem ve ağ güvenliği kapsamındaki, "iyi arızalanmak" ve "kötü arızalanmak" (failing badly) kavramları arasında yapılmaktadır.

Nükleer askeri strateji kapsamındaki "ölümcül başarısızlık" (Fail-deadly) ise tam karşıtı olan bir stratejidir ve hedeflerini, sistemin bir kısmı arızalansa ya da yok olsa dahi, öldürmek ya da yaralamak üzere tasarlanmış silah sistemleri için kullanılabilir.

zarif bozulma (graceful degradation) ya da hafifçe arızalanma (fail soft- bilgisayar sistemlerinde kullanılan "fail safe"<ref>Stallings, W (2009): Operating Systems. Internals and Design Principles, sixth edition</ref>'e benzer bir kavram) tecrübe edecek şekilde tasarlanmış olan bir sistem bazı bileşenleri arızalandıktan sonra düşük verim seviyelerinde çalışır. Örneğin bir bina, şebeke elektriği yetersiz geldiğinde, insanların karanlıkta asansörlerde sıkışıp kalmaması için lambaların düşük enerjide ve asansörlerin düşük hızda çalıştırılması sağlanabilir. Bilgisayar sistemindeki bir zarif bozulma örneği olarak çevrimiçi video yayını için yeterli bağlantı bant genişliği yoksa, videonun yüksek çözünülüklü hali yerine düşük çözünülüklü hali yayımlanabilir. Programlamada kullanılan Aşamalı İyileştirme (Progressive enhancement) yöntemi kapsamında eski, küçük ekranlı veya kısıtlı özelliklere sahip internet tarayıcıları için web sayfalarının basit işlevsel biçimleri hazırlanırken daha yeni ve gelişmiş teknolojileri kullanabilen ya da daha geniş görüntüleme olanakları bulunan tarayıcılar için aynı sayfaların daha gelişmiş halleri hazırlanmaktadır.

Arızaya-dayanıklı bilgisayar sistemlerinde (fault-tolerant computer system), sağlam (robust) olarak kabul edilen programlar; arızaya,aykırı duruma veya gerçersiz/yanlış girdiye rağmen, tamamen çökmek yerine, işlevini sürdümek üzere tasarlanmışlardır. Yazılım kırılganlığı (Software brittleness) 'sağlamlık' kavramının tam tersidir. Esnek ağlar (Resilient networks), bazı veri bağlantılarının ya da veri bağlatılarının kesiştiği noktalardan bazılarının arızalanması durumunda dahi (ağın tümünde) veri iletimini devam ettirirler; esnek binaların ve altyapıların da deprem, sel veya çarpışma durumlarında, benzer şekilde sistemin tamamen başarısız olmasını (çökmeyi) engellemesi beklenir.

Yüksek başarısızlık saydamlığına (failure transparency) sahip bir sistem, tam verimle çalışmaya devam etse bile, kullanıcılarına bileşenlerden birinde arıza meydana geldiğini bildirir; böylece arıza gideribilir ya da yaklaşan 'Tam Bozulma/Durma' durumu tahmin edilebilir. Benzer şekilde, hızlı-arıza (fail-fast) türündeki bir bileşen, iş akışının devamındaki bileşenlerin arıza vermesini bekleyip en sonunda arızayı bildirmek yerine, ilk arıza noktasını bildirmek üzere tasarlanmıştır. Bu yöntem altta yatan sorunun daha kolay çözümlenmesini sağlar ve bozuk durumdaki sisteme uygunsuz işlem yapılmasını engelleyebilir.

Eğer her bileşen, alt bileşenlerinden birisi arızalandığında, işlemeye devam edebiliyorsa, bu durum tüm sistemin benzer şekilde, bileşenlerden birindekiarıza durumunda, işlmeye devam edebilmesini sağlayacaktır. Bir yolcu aracı örnek olarak kullanılacak olursa, bir arabanın patlamayan lastiği ("run-flat" tire) olabilir ki bu lastik katı kauçuk iç çekirdeğe sahip olabilir böylece lastik delinse de patlamayacağından araba kullanılmaya devam edecektir. Delinmiş bir patlamayan ("run-flat") lastik azaltılmış bir hızda kısıtlı bir süre kullanılabilmektedir.

Böyle bir sistem birincil bileşenlerden birisinin arıza vermesi durumunda kendiliğinden devreye girecek olan yedek bileşenlerden oluşabilir. Örneğin, büyük yük kamyonları lastiklerinden birini kaybetmeleri durumunda herhangi önemli bir sorun yaşamazlar. Sıradan bir araca göre çok fazla lastikleri/tekerleri olduğu için, lastiklerden (yön vermekte kullanılan en ön lastikler haricindeki) herhangi birisi tek başına ciddi öneme sahip değildir.

İki çeşit yedeklilik mümkündür: alan yedekliliği/fazlalığı ve zaman yedekliliği/fazlalığı. Alan yedekliliği fazladan bileşenler, işlevler ya da arızasız işlem için gerekli olan veri nesneleri sağlar. Alan yedekliliği ayrıca sisteme eklenen yedek kaynağın türüne göre donanım, yazılım ve bilgi yedekliliği olarak sınıflandırılır. Zaman yedekliliğinde ise hesaplama ya da veri gönderilmesi tekrarlanır ve sonuç, daha önceki sonucun kopyası ile karşılaştırılır.

Bileşen ne kadar önemli? Bir arabada olağan koşullarda radyo önem değildir, dolayısıyla arızaya-dayanıklılık açısından bu bileşen yedekli olması ihtiyacı daha azdır.

Bileşeni arızaya-dayanıklı hale getirmek ne kadar maliyetli? Örneğin arızaya-dayanıklı olması için yedekli bir araba motoru hem ekonomik açıdan hem de ağırlık ve alan açısından çok maliyetli olacaktır.

Tüm bu sorulara olumlu yanıtlar verebilen bir bileşen örneği arabanın yolcu tutma(restraint) sistemidir. Biz aslında farketmesek de birincil yolcu tutma sistemi kütleçekimidir. Eğer taşıt yuvarlanırsa ya da şiddetli g-kuvveti (kütleçekimi kuvveti) değişimi yaşarsa, o durumda bu yolcu tutma birincil yöntemi başarısız olabilir. Böyle bir kaza sırasında yolcunun "tutulması/sabitlenmesi/emniyete alınması" güvenlik için muazzam derecede önemlidir, böylece ilk sorunun yanıtı olarak bileşenin çok önemli olduğunu söyleyebiliriz. Emniyet kemerlerinden önce yolcuların taşıttan fırlamasına yol açan kazalar yaygındı, böylece ikinci sorunun yanıtı olarak birincil yolcu sisteminin arızalanmaya çok yatkın olduğunu söyleyebiliriz. Emniyet kemerleri gibi bir yedek tutma/sabitleme sisteminin maliyeti oldukça düşüktür hem ekonomik olarak hem de ağırlık ve alan olarak, böylece üçüncü sorunun yanıtı olarak birincil yolcu tutma sistemine (kütleçekimi) yedek olarak eklenecek olan ikincil yolcu tutma sisteminin (emniyet kemeri) maliyetinin düşük olduğunu söyleyebiliriz. Bu yanıtlardan varılacak sonuç şudur: tüm taşıtlara emniyet kemerleri eklemek mükemmel bir fikirdir. Hava yastıkları gibi diğer "ek tutma/sabitleme sistemleri" daha maliyetlidirler ve aynı sorulara alacağınız yanıtları bir test olarak düşünürseniz, bu testten daha dar bir başarı aralığı ile geçerler.

Hiçbir Tek bozulma noktası (SPOF) olmaması– eğer bir sistem çalışma esnasında bozukluk ile karşılaşırsa, onarım sürecini sekteye uğratmayacak şekilde işlemeye devam edebilmeli.

arıza veren bileşenin yalıtımı – bileşende bozukluk ortaya çıktığında, sistem sıkıntılı bileşeni yalıtabilmelidir.Bu da, tek amacı arıza yalıtımı olan bu işe adanmış arıza algılama düzeneklerinin sisteme eklenmesini gerektirmektedir. Bir arıza durumunda sistemin düzelmesi için arızanın ya da arızalanan bileşenin sınıflandırılması gerekmektedir. Amerika'daki Ulusal Standartlar ve Teknoloji Enstitüsü (NIST) arızaları konuma, sebebe, süreye, ve de etkiye göre sınıflandırmaktadır.

Arızanın yayılmasını engellemek amacıyla arıza muhafaza – Bazı arıza düzenekleri arızayı sistemin kalanına yayarak sistem başarısızlığına sebep olabilir. Bu çeşit bir arızanın örneği olarak "yasa dışı radyo vericisi" (rogue transmitter) aletinin bir sistemdeki yasal/resmi iletişimi (sistemle aynı kanala yaptığı aralıksız yayın ile) boğarak sistemin tamamen çökmesine ve hizmet verememesine sebep olması gösterilebilir. Sistemi korumak için arıza veren bileşeni ya da bu vericiyi yalıtacak olan güvenlik duvarı ya da benzeri düzeneklere gereksinim duyulmaktadır.

Ek olarak, arızaya-dayanıklı sistemler hem önceden kararlaştırılmış hizmet kesintileri hem de belirsiz hizmet kesintileri açısından ele alınırlar. Bu tür çözümlemeler sadece donanım seviyesinde değil de genel olarak yazılım seviyesinde yapılır. İşe yararlık değerine hizmet verebilirlik (availability) denir ve yüzde olarak ifade edilir. Örneğin, 5-9 (5 nines) türünde bir sistem istatistiksel olarak 99.999% hizmet verebilirlik sağlayabilir.

Çeşitlilik: Aynı gereksinim tanımlaması için bir den fazla farklı uygulanış sağlama, ve bunları,belirli bir uygulanışta ortaya çıkan arızalarla başa çıkmak için, çoğaltılmış sistemler gibi kullanma.

Koşut yedekli düzen(lockstep) türündeki arızaya-dayanıklı sistemler birbirleriyle koşut olarak çalışan çoğaltılmış bileşenleri kullanır. Herhangi bir anda, bir bileşen ve tüm çoğlatılmış yedekleri aynı işlem durumunda olmalıdırlar. Bileşene ve çoğaltılmış her yedeğine aynı girdiler sağlanır, ve hepsinden de aynı çıktılar beklenir. Bu bileşenin ve çoğaltılmış yedeklerinin çıktıları oylama devresi kullanılarak karşılaştırılır. Her bileşeni için toplamda iki adet çoğaltım (bileşen ve yedeği) içeren bir makine, çifte modüler yedekli (dual modular redundant - DMR) sistem olarak tanımlanır. Oylama devresi böyle bir sistemde sadece uyumsuzluğu bulabilir ve veri kurtarma için başka yöntemlere başvurulur. Her bileşeni için toplamda üç adet çoğaltım (bileşen ve iki adet yedeği) içeren bir makine, üçlü modüler yedekli (triple modular redundant - TMR) sistem olarak tanımlanır. Oylama devresi böyle bir sistemde 2'ye 1 oylamanın oluştuğu durumda hangi bileşenin arızalı olduğunu bulabilir.Bu durumda, oylama devresi doğru sonucu çıktı olarak verir ve arızalı sonucu atar. Bundan sonra, arızalı sonucu üretmiş olan çoğaltımın iç durumunun kalan ikisinden farklı olduğu varsayılır ve oylama devresi arızalı yedeği kullanmaktan vazgeçerek DMR olarak işlem görmeye başlar. Bu işlem modeli pek çok uygulamada kullanılmaktadır.

Koşut yedekli düzendeki arızaya-dayanıklı makinelerin çok kolayca birbirleriyle eşzamanlı (Synchronization) hale getirilebilirler,bu her bir çoğaltımın her kapısının (gate) aynı sayaç anında aynı durum geçişini yapması ile ve her çoğaltımdaki sayacın saatinin birbiriyle kesinlikle aynı fazda olması ile sağlanır. Ancak Koşut yedekli düzeni bu gereksinim olmadan da kurmak mümkündür.

Çoğaltılmış yedekleri eşzamanlı hale getirme içlerinde saklanan durumunun aynı yapılmasını gerektirir. Çoğaltımlar ön-tanımlı bir başlangıç durumundan başlatılabilirler, örneğin yeniden başlama durumu gibi. Ayrıca,bir çoğaltımın iç durumu başka bir çoğaltıma aktarılabilir (böylece her iki çoğaltımın da iç durumları aynı olur).

DMR yönteminin başka bir çeşidi ise çiftli-yedek (pair-and-spare) yöntemidir. İki adet çoğaltılmış yedek bileşen koşut yedekli düzende bir çift olarak işlev görürler, bu durumda oylama devresi bu çiftin işlemlerinde bir uyumsuzluk tespit ettiğinde Koşut yedekli düzenin o ayağında bir arıza olduğunu belirtmek için bir sinyal üretir. Diğer başka bir çift de tamamen aynı şekilde işler. . "Çiftli-yedek" yöntemi TMR yöntemindeki üç adet çoğaltımın yerine toplamda dört adet çoğaltılmış yedek gerektirir, ancak ticari olarak kullanılabilmiştir (Stratus XA/R Series 300).

Aynı bileşendeki arıza algılamasına engel çıkması. Yukarıdaki araç örneğinden devam edecek olursak, her iki arızaya-dayanıklı sistemle birlikte, sürücü lastiğin delindiğini farketmeyebilir. Bu durumda genellikle "otomatik arıza-algılama sistemi" kullanılır. Lastikteki hava basıncı izleyicisi basınç kaybını algılar ve sürücüyü uyarır. Başka bir çözüm ise "el yordamıyla arıza-algılama" yöntemidir, bu yöntemde kişi tüm lastikleri tek tek el yordamıyla denetler.

Başka bileşendeki arıza algılamasına engel çıkması. Bu sorunun başka bir çeşidi ise bir bileşendeki arızaya-dayanıklılık başka bir bileşendeki arızanın algılanmasını engellediğinde ortaya çıkar. Örneğin, Eğer B bileşeni A bileşenin çıktısı üzerinde bir işlem yapıyorsa, o zaman B bileşenindeki arızaya-dayanıklılık A bileşenin arızasını gizleyebilir. Eğer B bileşeni daha sonra,örneğin arızaya daha az dayanıklı olan, başka bir çeşidiyle değiştirilirse, sistem aniden çökebilir, böyle bir durumda sorunun yeni B bileşeninde olduğunun düşünülecektir. Ancak sistem çok ayrıntılı bir şekilde incelendikten sonra asıl sorunun A bileşeninde olduğu ortaya çıkacaktır.

Arıza düzeltiminin önceliğinin azaltılması. İşletmen arızanın farkında olsa bile arızaya-dayanıklı bir sistem muhtemelen arızanın düzeltiminin önemini azaltacaktır. Eğer arızalar düzeltilmezse bu durum, arızaya-dayanıklı bileşen tamamen çöktüğünde ya da tüm yedek bileşenler ayrıca çalışmaz hale geldiğinde, sistemin çökmesine yol açacaktır.

Test etmenin zorluğu. Nükleer reaktör gibi bazı çok önemli arızaya-dayanıklı sistemlerde, yedek bileşenlerin işlevsel olduğunu doğrulamanın kolay bir yolu yoktur. Bunun en bilenen örneği Çernobil kazasıdır, bu kazada işletmenler acil durum yedek soğutmasını birincil ve ikincil soğutmaları devre dışı bırakarak test etmişlerdir.Test sırasında yedeğin çalışmaması, çekirdek erimesine (core meltdown) ve çok aşırı miktarda radyasyon salınmasına yol açmıştır.

Maliyeti. Hem arızaya-dayanıklı bileşenler hem de yedek bileşenler genelde maliyeti artırırlar. Bu sadece parasal bir maliyet de olabilir ya da ağırlık gibi diğer alanlarda artış da içerebilir. Örneğin insanlı uzay gemilerinde, o kadar çok yedek ve arızaya-dayanıklı bileşen vardır ki ağırlıkları, aynı derecede güvenlik gerektirmeyen insansız sistemlere göre çok büyük miktarlarda artış gösterir.

Kalitesiz bileşenler. Arızaya dayanıklı bir tasarım, kullanılmaması durumunda sistemi işletilmez kılacak olan kalitesiz bileşenlerin kullanımına izin verebilir (Örneğin bileşenlerin aşırı pahalı olması sebebiyle sistemin sadece bir kez ya da hiç kullanılmaması yerine 10 kat daha ucuz olan bileşenin kullanılması gibi). Bu uygulamanın maliyet artış miktarını azaltma ihtimali bulunmasının yanı sıra, çok sayıda kalitesiz bileşen kullanımı da sistemin güvenilirliğini, arızaya dayanıksız olan bir sistemin güvenilirliğine eş ya da ondan daha aşağı seviyelere düşürebilir.

Donanımsal Arızaya dayanıklılık bazen bozuk parçaların, sistem hala işler haldeyken, çıkarılıp yenileriyle değiştirilmelerini gerektirir (bilgisayar sistemlerindeki karşılığına Çalışırken Parça Değişimi - hot swapping denmektedir). Tek bir yedekle oluşturulmuş böyle bir sisteme tek noktada dayanıklı (single point tolerant) denmektedir, ve Arızaya dayanıklı sistemlerin büyük çoğunluğu bu şekildedir. Böyle sistemlerde Bozulmalar arası ortalama süre (mean time between failure - MTBF); işletmenlerin, yedek de ayrıca bozulmadan önce, bozuk aygıtları değiştirmesine yetecek kadar uzun olmalıdır (Ortalama onarım süresi-mean time to repair - MTTR). Bozulmalar arası sürenin olabildiğince uzun olması işleyişe yardımcı olacaktır, ancak bu özellik arızaya-dayanıklı sistemlerde özel olarak gerekmemektedir.

Arızaya dayanıklılık bilgisayar uygulamalarında belirgin bir şekilde başarılıdır. Tandem Computers şirketi bu tür sistemlerin pazarlanması amacıyla kurulmuştur, Aralıksız (NonStop) çalışan sistemlerinde tek-noktada dayanıklılığı kullanmışlardır. Şirketin bu tür sistemlerinin Kesintisiz çalışma süresi (uptime) yıllarla ölçülmektedir.

Veri biçimleri de ayrıca zarifçe bozulmak üzere tasarlanabilirler. Örneğin HTML, ileriye uyumlu olacak şekilde tasarlanmıştır. Böylece yeni HTML nesnelerinin/tanımlarının, onları anlayamayan/tanımlayamayan Web tarayıcıları tarafından göz ardı edilmesi sağlanmakta ve yüklenen HTML belgesinin dengesiz olması engellenmektedir.

Arızaya dayanıklılık ile nadiren sorun yaşayan sistemler arasında bir fark bulunmaktadır. Örneğin,Western Electric şirketinin Çapraz bağlantı(crossbar) sistemlerinin kırk yılda toplam iki saatlik arıza oranları vardı,ve dolayısıyla yüksek oranda arıza oluşmamasına yatkın idiler. Ancak bir arıza meydana geldiğinde tamamen duruyorlardı, ve dolayısıyla arızaya dayanıklı değillerdi.