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í.