Z čeho vycházím: U automatizovaného nákupního procesu jsem řešil frontu požadavků, stav jednotlivých úloh, odmítnutí duplicit a ukončení před krokem, který musí potvrdit člověk.

Nejčastější chyba: automatizovat jen šťastnou cestu

Demo obvykle vypadá jednoduše: přijde požadavek, systém provede kroky a vrátí výsledek. V provozu ale do toho vstoupí pomalé API, odhlášená session, změněný formulář nebo výpadek služby.

Proto si před implementací kreslím nejen průchod, ale i stavy, které mohou nastat. Úloha může být čekající, zpracovávaná, dokončená, odmítnutá, opakovaná nebo nejasná. Nejasný stav je důležitý: systém nesmí předstírat úspěch jen proto, že nedostal chybu.

Fronta odděluje požadavek od provedení

Pokud uživatel čeká na celý proces v jednom HTTP požadavku, vznikne křehké řešení. Fronta umožní požadavek přijmout, zpracovat ho samostatně a průběžně ukazovat stav.

Fronta musí mít pravidla pro timeout, maximální počet pokusů a způsob, jak se ručně vyřeší úloha, která se opakovaně vrací.

Opakování musí být bezpečné

Retry řeší dočasný problém, ale může vytvořit nový. Pokud první požadavek na straně služby proběhl a odpověď se ztratila, druhý pokus může provést stejnou operaci podruhé.

Proto rozlišuji operace, které lze bezpečně zopakovat, od operací s vedlejším účinkem. Pomáhá idempotency key, evidence provedených kroků, kontrola aktuálního stavu a limity. U plateb nebo nákupů je zkušební běh a ruční potvrzení často důležitější než maximální rychlost.

Co musí být v logu

Log nemá být výpis všeho, co aplikace udělala. Potřebuji z něj zjistit, co se stalo s konkrétní úlohou:

Citlivé tokeny, hesla a celé odpovědi externích služeb do logu nepatří. Diagnostika musí pomoci vývojáři, ale nesmí vytvořit další bezpečnostní problém.

Co ukazuji klientovi před předáním

Neukazuji jen zelený průchod. Procházíme i timeout, odmítnutí, duplicitní požadavek a obnovení po přerušení. Pokud je určitý krok citlivý, je součástí návrhu jasné místo pro ruční kontrolu.

Potřebujete automatizaci, která přežije provoz?

Začneme mapou stavů a rizik, ne výběrem knihovny. Teprve potom vybereme technologii a rozsah první verze.

Popsat proces
Související:API integrace, nebo automatizace prohlížeče?Stabilizace a automatizace procesů v Softflow