Proč došlo k výpadkům SISTA? Podrobnější vysvětlení pro uživatele

Nový sdílený informační systém TA ČR (SISTA) čelil v minulém týdnu výpadkům. Zcela chápeme dopady těchto výpadků na práci našich uchazečů o podporu a hluboce se omlouváme. Rádi bychom všem poskytli podrobnější vysvětlení toho, co se v SISTA stalo a co děláme pro nápravu.

Architektura systému a její výzvy

SISTA je moderní systém, který má za cíl usnadnit podávání a správu žádostí o podporu a zefektivnit byrokratické procesy spojené s administrací projektů. Systém je navržen tak, aby běžel v cloudu a využíval aktuální technologie. Představte si ho jako komplexní stavebnici, kde jednotlivé díly (mikroslužby) reprezentují specifické funkce a společně tvoří celek. Každá mikroslužba musí komunikovat s ostatními pomocí určitých technologií. Každý tento díl navíc vytváří jiný dodavatel, což nám (zejména na začátku) umožnilo sestavit SISTA zcela dle našich požadavků a nebyli jsme odkázáni na technické možnosti a znalosti jen jednoho dodavatele. Zvolený přístup má mnoho výhod, například umožňuje nezávislý vývoj a škálování jednotlivých částí systému, ale přináší také určité výzvy. Tyto výzvy umocňuje komplexita systému např. kombinace mnoha uživatelských profilů a rolí, různorodost formulářů anebo kontrolní výpočty u finančního rozpočtu projektů včetně jeho správy. 

Jednou z klíčových výzev je zajištění efektivní komunikace mezi jednotlivými mikroslužbami. V ideálním případě by tyto služby měly být volně propojené, aby změna v jedné službě ovlivnila ostatní pouze minimálně. Při nesprávném nastavení míry komunikace (nadměrné nebo příliš malé) mezi službami mohou vznikat rizika v podobě problémů s pamětí, snížení výkonu či kaskádových selhání. Pro lepší ilustraci si můžete představit logistický řetězec – pokud jednotlivé uzly a dopravci nedostatečně koordinují své toky (příliš mnoho/málo zboží na špatném místě), celý systém se může zaseknout, vyčerpat kapacity skladů (paměť), zpomalit dodávky (výkon) a v konečném důsledku se zhroutit (kaskádové selhání), stejně jako služby systému při špatné komunikaci.

Další výzvou je správa zdrojů a škálování. Systém by měl být schopen automaticky reagovat na zvýšený počet uživatelů a přidělit potřebné zdroje (výpočetní výkon, paměť) jednotlivým službám. K tomu slouží technologie Kubernetes, která umožňuje automatické škálování na základě aktuálního zatížení. Správná konfigurace Kubernetes je však klíčová. Nesprávné nastavení může vést k neoptimálnímu využití zdrojů, zpožděnému škálování nebo dokonce k selhání celého systému.

Co se tedy konkrétně pokazilo?

Problém nenastal v jednotlivých částech systému, které byly samostatně testovány a prokázaly svou funkčnost a odolnost i při vysokém zatížení. Potíže nastaly, až když všechny části začaly pracovat společně a byly vystaveny reálnému zatížení v provozu.

V systému SISTA se projevila kombinace několika faktorů:

  • Neefektivní komunikace mezi mikroslužbami: Místo volného propojení se objevilo těsné svázání, které může vést ke kaskádovým selháním.  
  • Problémy s automatickým škálováním: Některé služby nereagují na zvýšenou zátěž tak, jak by měly, což vede k přetížení a nestabilitě.  
  • Konfigurace prostředí: Analýza potvrdila, že na selhání se podílela i komplexní konfigurace systému, jejíž nastavení se v kritický moment neukázalo jako plně optimální pro danou zátěž a specifické provozní podmínky.

Proč nepomohlo přidání výkonu serverů?

Možná vás napadlo logické řešení – přidat více výpočetního výkonu a paměti. Bohužel v tomto případě to není tak jednoduché. Pokud je hlavní příčina problému v neefektivní konfiguraci a komunikaci, přidání dalších zdrojů situaci nevyřeší. Je to podobné jako při dopravní zácpě – přidání dalších pruhů na dálnici nepomůže, pokud nejsou optimálně navrženy nájezdy a sjezdy nebo pokud existuje chyba v řízení toku dopravy.

Co děláme pro nápravu?

V současnosti by měly být odstraněny všechny příčiny, které vedly k výpadkům SISTA v minulém týdnu. Nicméně stále intenzivně pracujeme na finálním řešení a soustředíme se na několik klíčových oblastí:  

  • Upevnění komunikace mezi jednotlivými mikroslužbami: Měníme způsob, jakým mezi sebou jednotlivé služby v systému komunikují. Opouštíme starší řešení pro vnitřní účely a přecházíme na bezpečnější a odolnější metody.
  • Důležité úkony budou mít zálohy: Zajistíme, aby kritické části systému běžely ve více nezávislých kopiích současně. Tím pádem výpadek jedné části neznamená nedostupnost celé služby a systém bude lépe připraven na vyšší zátěž (škálovatelnost).
  • Vylepšujeme monitoring a diagnostiku: Sjednocujeme sledování provozu (tracing) a záznamy o dění (logování) pod standardizované formáty a nástroje. Zavedeme i odchytávání chyb přímo v prohlížeči uživatele, abychom problémy odhalili rychleji.
  • Standardizujeme a automatizujeme údržbu: Zavádíme nástroje pro automatické hlídání a aktualizaci softwarových knihoven. Sjednocujeme postupy pro práci se soubory, oprávněními a konfigurací, čímž snižujeme riziko chyb a zvyšujeme konzistenci.
  • Izolujeme Frontend: Upravujeme načítání částí uživatelského rozhraní tak, aby chyba v jedné komponentě neovlivnila zobrazení celé stránky.

Posilujeme odolnost proti chybám: Zavádíme mechanismy pro lepší odchytávání chyb při zpracování dat a pro izolaci konfiguračních funkcí, aby problém v jedné oblasti neohrozil celý systém. Statický obsah servírujeme efektivněji přes dedikovaný server.

Proč to děláme až nyní a nespustili jsme systém bez těchto chyb?

SISTA vyvíjíme a spouštíme postupně a všechny výše uvedené technické detaily řešíme od počátku. Rozvoj u těchto nových technologií je velmi rychlý a využíváme poradenství expertů v daných technických oblastech. Před nasazením každého modulu či jeho nové verze vše testujeme. Nicméně některé nedostatky se projeví až při větším zatížení systému jako celku tedy všech modulů za všech možných podmínek. S ohledem na komplexnost systému zkrátka není prakticky reálné testovat dopředu absolutně všechny možné podmínky při zatížení. Nicméně právě analýza selhání při reálném provozu a zatížení nám umožňuje nasazení oprav a změn, které významně snižují riziko dalších podobných selhání. 

Je nám líto, že se všichni uživatelé systému SISTA při jeho používání v reálném provozu stali testovacími uživateli, což nebylo naším záměrem. O vývoji SISTA, jeho funkcionalitách, procesu spouštění a rizicích s tím spojených průběžně a důkladně všechny uživatele informujeme. K postupnému přechodu bude docházet po celý letošní rok. Věříme, že nový systém za jeho plného provozu v příštím roce přinese určité zadostiučinění i aktuálním negativním pocitům uživatelů (včetně uživatelů na straně poskytovatelů).

Chápeme, že výpadky SISTA vám způsobily komplikace ve vaší práci. S ohledem na komplexnost systému se však mohou po celou dobu postupného spouštění všech modulů do finální podoby vyskytovat různé nedostatky. Ujišťujeme vás, že děláme maximum pro jejich co nejrychlejší a nejefektivnější odstranění, aby se vždy nic podobného v budoucnu neopakovalo. Děkujeme vám za trpělivost a pochopení.