Když mluvíme o složitých systémech, jednou z často zkoumaných vlastností je odolnost systému. Odolnost znamená schopnost zotavit se z obtíží nebo selhání. O tomto se často hovoří v oblasti počítačových systémů, ale platí také pro jiné systémy, jako jsou organizace. Je užitečné klasifikovat úroveň odolnosti, abychom mohli posoudit současný stav našeho systému a rozhodnout se, zda chceme investovat do zvýšení jeho odolnosti, na základě toho, jak kritický je systém.
Úroveň 1: Křehký
Na nejnižší, nebo nejméně odolné úrovni, může být systém popsán jako křehký. Křehký systém netoleruje žádná selhání. Pokud je vystaven velmi malému stresu, rozpadá se.
Křehké systémy jsou obvykle výsledkem existence kritických bodů selhání (single point of failure, SPOF) nebo nedostatečné kapacity.
Je jasné, že pokud může komponenta způsobit selhání systému, systém je pouze tak odolný jako nejméně odolná komponenta. Situace se ještě zhoršuje, když existuje více takových komponent, protože selhání jakékoli z nich může způsobit selhání systému a pravděpodobnosti se sčítají.
Méně zřejmý je případ, kdy systém funguje blízko své kapacity. Selhání tohoto druhu mohou nastat v systémech, které se zdají být odolné tím, že jsou postaveny pomocí redundantních komponent, takže nemají žádný SPOF.
Jedním takovým příkladem by mohl být klastr webových serverů, z nichž každý má omezený počet současně zpracovávaných požadavků s load balancery před nimi. Takový systém se zdá být odolný bez SPOF. Pokud systém funguje blízko vyčerpání workerů na webových serverech, je však křehký. Tato křehkost vyplývá z toho, že jakmile se provoz i malou trochu zvýší, jeden z webových serverů vyčerpá svůj pracovní fond. To může zvýšit latenci na úroveň, kdy load balancer považuje server za mrtvý, vyřadí ho z rotace, čímž přetíží zbývající servery a celý systém se rozpadne, protože všechny webové servery jsou považovány za mrtvé. Takový systém obvykle nebude schopen se zotavit sám, i když provoz mírně klesne, protože load balancery téměř nikdy nevrátí všechny webové servery zpět do rotace najednou. Může být zapotřebí lidského operátora, aby si uvědomil, že takový stav nastal, a manuálně resetoval balancer.
Tato křehkost systému je mnohem těžší odhalit než SPOFs. Často se stává, že systém funguje hladce až do určitého bodu, ale rozpadne se velmi rychle i při zvýšení propustnosti o 1%. Je také velmi snadné zaměnit příčinu a důsledek. Jsou servery přetíženy, protože je vyčerpán pracovní fond, nebo je pracovní fond vyčerpán, protože jsou servery přetíženy?
Úroveň 2: Robustní
Pokud je systém schopen odolávat některým selháním nebo zvýšenému stresu (až do určitého limitu), nazýváme ho robustním. Nebude se rozpadat tak snadno jako křehký systém, ale v nějakém bodě se také rozpadne.
Robustní systém nebude mít žádné SPOFs, což je zajištěno redundantními komponenty a schopností obcházet jakékoli selhání jednotlivých komponent. Problémy popsané v příkladu křehkého systému lze zmírnit použitím front k ochraně komponent s omezenou kapacitou. Fronta způsobí zpoždění některých požadavků, ale systém stále bude fungovat. Zpomalení je také relativně snadné pozorovat a monitorovat a poskytuje systému jeho robustnost tím, že odolává úplnému rozpadnutí, i když je systém nad kapacitou. Dokud se také fronty nenaplní, systém je schopen fungovat, i když v degradované formě.
Další úspěšnou technikou pro vytváření robustních systémů je omezování rychlosti. To znamená zcela odmítnout zpracování požadavků, které by systém dostaly nad jeho kapacitu. Vždy je lepší být schopen obsloužit 80% svých zákazníků než neobsloužit žádného, protože systém vyčerpá své zdroje a úplně se rozpadne, jak tomu bylo v případě křehkého systému.
Redundance také činí systém robustním. Tak dlouho, jak jsou dostatečné kopie komponenty živé, aby zvládly zátěž, systém je schopen fungovat. Možná bude pomalejší a jeho kapacita bude snížena, ale bude fungovat.
Robustní systém je samozřejmě mnohem lepší než křehký systém. Je schopen odolávat, ale stále není schopen se přizpůsobit.
Úroveň 3: Odolný
Odolný systém je takový, který se dokáže přizpůsobit selháním nebo zvýšenému stresu. Teď už se konečně dostáváme někam.
Takový systém nesmí mít žádné SPOFs a musí být schopen odolávat jakýmkoli nárazům činnosti prostřednictvím front a přepážek, ale musí se také aktivně přizpůsobit a změnit sám sebe. Je možné, aby takový systém byl změněn lidským operátorem, ale většinou to tak není, protože by to vyžadovalo, aby operátoři neustále monitorovali systém a byli schopni reagovat dostatečně rychle. Takže nejspíš, abychom dosáhli odolného systému, musí mít schopnost měnit se automaticky a to vyžaduje inteligentní programovatelné platformy, jako jsou veřejné nebo soukromé cloudové infrastruktury.
Nebudeme se tu pouštět do přílišných podrobností, ale jedním příkladem může být využití autoškálovacích skupin místo pevných skupin zdrojů ve vaší cloudové platformě dle výběru. Autoškálovací skupina může automaticky nahradit servery které selhaly a může zvýšit (nebo snížit) počet serverů na základě aktuální zátěže nebo propustnosti. Tímto způsobem selhání komponenty nesníží celkovou kapacitu systému a zvýšený provoz by neměl zvýšit celkovou latenci systému, jak tomu bylo v případě systému, který byl pouze robustní.
Pamatujte, že se jen nebráníme. My se přizpůsobujeme. Takže pokud nevyčerpáte svou kreditní kartu na cloudové služby, mělo by to být v pořádku. Nebo vám dojdou připojení k databázi.
Úroveň 4: Antifragilní
Může existovat něco lepšího než systém, který je odolný, ptáte se? No, zřejmě existuje ještě jedna úroveň výš. Místo toho, aby byl systém schopen odolávat selháním, může se skutečně zlepšit a zůstat lepší. Nazýváme to antifragilní.
Je těžké najít příklady počítačových systémů, které jsou antifragilní, protože je obtížné si představit systém, který může poskytovat lepší službu, než jak byl původně navržen. Ale existuje mnoho jiných tříd systémů, které můžeme pozorovat. Například organizace jsou také systémy.
Není příliš těžké si představit společnost, která prochází krizí, která ji posílí, pokud je v podstatě antifragilní. Nebo zvažte úžasně složitý systém nazývaný lidské tělo. Pokud je vystaven neustálému stresu cvičením nebo terapií studenou vodou, zlepší se a budete schopni dosáhnout věcí, které byly dříve nepředstavitelné.
Tato čtyřúrovňová klasifikace odolnosti systémů může být užitečná na vaší cestě za lepšími systémy. Pomůže vám posoudit, v jaké fázi se váš systém nachází, a také vám umožní přemýšlet o tom, kde by váš systém měl být, protože ne všechny systémy potřebují být odolné nebo dokonce robustní.
V budoucích článcích bych chtěl prozkoumat techniky pro „vylepšení úrovně“, tak zůstaňte naladěni.
Comments