Hlídač Webů a hrátky s NEN

Kdo zpochybnil Národní ekonomický nástroj (zdroj)

  • Úřad pro ochranu hospodářské soutěže (ÚOHS) v roce 2012 pokutoval ministerstvo pro místní rozvoj za to, že při vypisování zakázky na realizaci Národního ekonomického nástroje na zadávání veřejných zakázek (NEN) porušilo zásadu rovného zacházení.
  • Antimonopolní úřad v roce 2016 zakázalplnění smlouvy na aktualizaci NEN (chyby při zadání veřejné zakázky na dodávku).
  • ÚOHS v roce 2017 zakázaluzavřít smlouvu na technickou podporu NEN kvůli chybám při zadání zakázky.
  • Národní kontrolní úřad v roce 2016konstatoval, že NEN nepřinesl předpokládanou úsporu státních peněz.
  • Ministerstvo financí v roce 2016 seškrtalo po mimořádném auditu o čtvrtinu dotace, které ministerstvo pro místní rozvoj použilo na NEN a na systém Národní infrastruktury pro elektronické zadávání veřejných zakázek (NIPEZ).

NEN je Národní Elektronický nástroj, neboli jak o sobě sám říká, „komplexní elektronický nástroj pro administraci a zadávání veřejných zakázek a koncesí pro všechny kategorie veřejných zakázek a všechny kategorie zadavatelů“.

Je to také IT systém zařazený mezi kritickou infrastrukturu státu, který byl nezákonně vysoutěžen, bylo za něj utraceno více než 600 miliónů korun a dalších 400 miliónů korun za provoz.

Od 18. března 2018 sledujeme dostupnost a rychlost odezvy samotné aplikace NEN, běžící na adrese portalnen.nipez.cz. Odezva byla velmi špatná, dokonce natolik, že nás donutila upravit grafy zobrazující dostupnost aplikací.

V úterý (27.3.) v poledne se však aplikace 10x zrychlila a odezvy začaly být poměrně dobré (v průměru kolem 0.3 sekundy).

Takové zrychlení bychom obvykle kvitovali a ještě se pochválili, jak jsme k němu pomohli ?.

V případě NEN jsme však zbystřili. NEN je pomalý už 3 roky, odezva se se zátěží prudce zhoršuje a řádové zrychlení po takové době by bylo velmi překvapivé (a jistě by nezůstalo neohlášeno ze strany MMR). Rozhodli jsme se proto ověřit, zda zrychlení aplikace je komplexní, anebo pouze v izolovaných částech.

Architektura webové části NEN

Neznáme vnitřní architekturu NEN, ale některé věci se dají odhadnou zvenku podle chování a z HTTP komunikace. NEN aplikace je napsána jako Silverlight klient, který volá neveřejné API rozhraní NEN. Toto rozhraní my monitorujeme pomocí Hlídače Webů.

API běží na více než dvaceti serverech. Silverlight aplikace si při startu zvolí (nejspíše náhodně) jeden z těchto serverů a veškeré další požadavky již směřuje na tento jediný API server. Klient na jiném počítači si zvolí jiný API server a tím tak dochází k rozdělení zátěže. Pokud by došlo ke změně výkonu jedno API serveru, poznají to pouze uživatelé, kteří se náhodně k tomuto serveru připojí.

Stejně tak je s jedním zvolenýn API serverem spojena authentifikace a aktivní session uživatele. Pokud klient začne volat jiný API server, musí vytvořit novou authentikovanou session.

Pozn.: rozkládání výkonu se dělá běžně, ale obvykle neviditelně pro klienta a při problému jednoho serveru dojde k přesunu na jiný bez nutnosti nového zalogování. Jak tušíte, NEN není obvyklá aplikace.

Jak jsme měřili předtím a nyní

Původně jsme volali jednu jedinou funkci API (seznam posledních veřejných zakázek) na jednom, stále stejném API serveru.

Abychom změřily rychlost NEN objektivněji, postupujeme nyní jinak. Pro měření si náhodně vybereme API server a tento server vždy po nějaké době změníme za jiný. Dále voláme 3 různá API serveru (resp. dotazy na veřejné zakázky) v různém pořadí a s různými parametry. Jako výslednou hodnotu počítáme odezvu nejpomalejšího volání či volání s chybou.

Výsledkem nového měření je návrat dostupnosti k původním pomalým hodnotám (odpoledne ve státní svátek odezva kolem 15s). Za pár dní bude jasnější proč. Zda různými dotazy, rotací API serverů či kombinací obou.

V následujících dnech bychom se měli potkat s vývojáři NEN ze společnosti Tesco SW a tento způsob monitoringu s nimi zkonzultujeme. Rozhodně není naší cílem výsledné měření ovlivňovat, či zbytečně zatěžovat servery NEN, stejně tak jako zobrazovat výsledky optimalizované pouze pro Hlídač Webů.