Optimalizácia architektúry projektu e-Test

Klient
Národný ústav certifikovaných meraní vzdelávania
Dátum realizácie
2015
Technológie
ScalaGatlingRedis
Služby
Architektúra Záťažové testovanie Optimalizácia SW Správa serverov

Zadanie

Po predchádzajúcej pozitívnej skúsenosti nás NÚCEM oslovil so žiadosťou o pomoc pri riešení zaujímavého problému. Počas implementácie projektu e-Test a vykonaní prvotných testov s reálnymi používateľmi sa zistilo, že systém nezvláda obsluhovať požadovaný počet 10 000 konkurentných používateľov. Naším cieľom bolo identifikovať úzke hrdlo systému a navrhnúť príslušné opatrenia.

Analýza

Najskôr sme potrebovali zmerať reálne výkonnostné metriky systému e-Test. Prostredníctvom záťažových Gatling testov sme zistili, že systém prestáva byť použiteľný pri približne 1 000 používateľoch, kedy 90. percentil časov spracovania požiadaviek zo servera príde až po viac ako 5 sekundách. Ďalším krokom bolo zistiť, ktorý prvok architektúry je úzkym hrdlom. White box testovanie preukázalo, že problémom nie je priepustnosť linky dátového centra, ani aplikačný server, ale (neprekvapivo) databázový server.

Riešenie

Logickým krokom bola optimalizácia databázových dopytov a indexov, čo zlepšilo výkon systému približne dvojnásobne, stále však nie dostatočne. Bolo treba vykonať razantnejšiu zmenu v podobe zmeny architektúry systému, preto sme navrhli pridanie in memory úložiska Redis, ako akejsi nárazníkovej zóny pred databázovým systémom.

Prínos pre klienta

Záťažové testy preukázali, že po implementácii našich odporúčaní sa podarilo znížiť dobu odozvy v 90. percentile z pôvodných 5 sekúnd pri 1 000 používateľoch na 80 milisekúnd pri 10 000 konkurentných používateľoch. Pomerne jednoduchou zmenou na úrovni architektúry sa nám podarilo zrýchliť systém niekoľko stonásobne.