Async, NATS a status widget
Další měsíc je za námi a tak nastal čas se s vámi podělit, co je na Roští nového. Všechny novinky, o kterých tu budu psát, jsou již nasazené, takže si je můžete hned vyzkoušet. V dubnu jsme se soustředili na zpětnou vazbu, kterou administrace poskytuje. Takže jsme věci, které bylo možné provádět na pozadí, přesunuli do asynchronních volání. Kromě tohoto jsme ještě přidali status widget, který dokáže identifikovat některé chyby v aplikaci i v naší infrastruktuře.
Kromě plateb už je Roští založeno na microservice architektuře. Za poslední dva roky se z absolutního monolitu stal dobře udržitelný systém rozdělený přesně tak, aby to celé do sebe zapadlo a zároveň nestálo v cestě budoucího vývoje. Po změnách v posledních dvou týdnech mám pocit, že budeme schopni příští rok přejít s administrací na nový design a single-page styl frontendu.
Teď to ale rozhodně není priorita. Začátkem měsíce jsme z HTTP komunikace mezi službami přešli na NATS. Daemona, který je velmi dobrý v doručování zpráv. Díky tomu, že všechny služby jsou přes NATS navzájem propojeny, není potřeba vytvářet pro každý požadavek nové TCP spojení a komunikace je tak doslova blesková a je vhodná i na request-reply požadavky. V předchozí i této aktualizaci jsme pokračovali v trendu odstraňování starého kódu a brzy budeme ve stavu, kdy administrace bude jen frontend generující zprávy do NATSu. V současné době ještě chybí komunikace s load balancerem a DNS servery.
Ale pojďme se podívat na to, co jsme pro vás vlastně připravili. První novinkou je asynchronní provádění změn u aplikací. Když tedy vytvoříte, smažete nebo upravíte nějakou aplikaci, stránka se načte hned a malá ikonka vedle názvu vám napoví, že se ještě něco děje a pak také že už je hotovo. Díky tomu je práce s administrací mnohem přirozenější. Jednotlivé stránky se načítají stejně rychle a tak podvědomě víte, když je něco špatně.
Malou vadou na kráse je, že sice práce s kontejnery je asynchronní, ale konfigurace load balanceru je stále synchronní. Tento nedostatek vyřešíme co nejdříve, ale vyžaduje to částečný přepis služby pro managování load balanceru a do toho se nám před nasazením toho, co teď máme, zatím nechce.
Služba, která konfiguruje load balancer, vznikla před několika lety a byla navržena mnohem univerzálněji než nakonec potřebujeme. To také komplikuje její použití. Uděláme tedy tlustou čáru za jejím současným rozhraním a přepíšeme ji tak, aby přirozeně navázala na naši novou message based architekturu.
Druhou velkou novinkou je nový status widget, který najdete v info kartě aplikace. Pokud dojde k nějakému problému, ať už u nás nebo někde v aplikaci, tak vám tento widget ukáže a napíše, co je špatně. Umí také upozornit, že dochází paměť, že jste překročili prostor na disku, který máte v balíčku nebo že máte špatně nastavené DNS záznamy.
Widget ještě není 100% dokončený, resp. nehlásí všechno, co chceme. Rádi bychom ho nechali analyzovat logy a dělat nějakou jednoduchou analýzu status kódů, které aplikace vrací. Viděli byste pak třeba upozornění, že aplikace odpovídá chybou 500 častěji než je jinak obvyklé. Také ještě není doplněna podpora pro databáze. Tohle všechno přijde s některým z dalších updatů.
Co bude dál
Je možné, že v rozhraní aplikací dojde ještě k několika málo změnám, jak od vás budeme sbírat zpětnou vazbu. Chceme také upravit službu pro správu load balanceru, abychom asynchronní provádění změn v aplikacích kompletně dokončili.
Prioritou ale teď pro nás bude se vrátit k nové implementaci plateb, kterou jsme připravili minulý rok a pomalu ji začít integrovat do administrace. Chybí nám v ní ještě integrace některé z platebních bran. Hlavním cílem této změny je možnost uložit do platební brány kartu, kterou se bude služba automaticky platit.
Ale stejně jako u jiných podobných změn, když už v tom budeme, tak přidáme i pár dalších věcí. Platby budou oddělené od administrace ve vlastní službě. Změní se způsob odečítání kreditu - nově se bude od prvního do posledního dne měsíce tvořit účet za služby, které u nás využijete. Ten se pak začátkem dalšího měsíce zaplatí buď automaticky a nebo ručně přes QR kód, převodem či kartou jak jste zvyklí. Na tomto účtu budete mít větší přehled o tom, za co u nás vlastně platíte. V současné době dochází k odečítání kreditu po hodinách. Nově budeme sledovat kdy aplikace vznikla a kdy byla smazána a z toho budeme počítat téměř na sekundu přesně její cenu. Platby by tak měly být o poznání předvídatelnější než jsou teď.
Platby jsou poslední část, která ještě nebyla přesunuta do vlastní služby/microservice. V posledních třech měsících jsme z administrace odstranili tisíce řádek kódu a až přesuneme platby, zůstane z ní jen hlavní databáze a frontend. Do konce roku bychom rádi přidávali nové funkce, ale na frontendu začíná být znát jeho stáří. Vznikl přeci jen v roce 2014, v době, kdy webu vládl Bootstrap 3 a Less. V dlouhodobém horizontu, tedy někdy příští rok, přijde pravděpodobně redesign, kde hlavním cílem bude přepsat veškeré HTML, CSS a JavaScript, ale spolu s tím určitě předěláme i rozhraní a přiblížíme ho aktuálním trendům a také bychom byli rádi, kdyby se administrace zobrazovala lépe na mobilu.
A to je pro dnešek vše. Užijte si status widget i to masivní zlepšení v responsivitě a uvidíme se zase příště, tentokrát už snad s plánem, jak budeme nasazovat nové platby :-)