Než schválíte propojení objednávkového, skladového nebo účetního systému, zeptejte se, co se stane, když stejná aktualizace dorazí dvakrát. Doručení může být potřeba zopakovat. Faktura, požadavek na expedici nebo zpráva zákazníkovi už ale mohou existovat.
Chybějící odpověď nechává otázku otevřenou
Představte si, že jeden systém odešle aktualizaci a přijímající systém dokončí práci. Odpověď potvrzující úspěch se cestou zpět ztratí. Odesílatel čeká, vyprší mu časový limit a zkusí to znovu.
Časový limit vysvětluje, proč došlo k dalšímu doručení. Neříká vám, zda se první pokus dokončil. Vypnutí opakovaných pokusů může nechat práci nedokončenou; opakování každé obchodní akce může naopak vytvořit práci navíc.
Malcolm Featonby popisuje tuto nejistotu v článku Amazon Builders’ Library o bezpečném opakování požadavků pomocí idempotentních API. Stripe a Shopify také popisují opakovaná doručení webhooků. Webhook je automatická aktualizace odeslaná z jednoho systému do druhého. O tomto chování má smysl mluvit ještě před uvedením propojení do provozu.
Která akce se má provést jen jednou?
Představte si internetový obchod, kde má aktualizace o zaplacené objednávce vytvořit jeden požadavek na vyřízení. Tyto tři situace vyžadují odlišné zacházení:
Stejná aktualizace dorazí znovu
Požadavek na vyřízení už může existovat. Další doručení by nemělo vytvořit další požadavek pro stejnou zamýšlenou akci v dohodnutých mezích.
Jiná aktualizace se týká téže objednávky
Změna adresy nebo zrušení může vyžadovat jiný postup. Stejné číslo objednávky neznamená, že každá aktualizace je nadbytečná.
Zákazník zadá druhou objednávku
Nová objednávka se musí zpracovat, i když zákazník, položky a celková částka vypadají stejně. Podobné údaje nedokazují, že jde o opakování.
Zeptejte se dodavatele, co určuje zamýšlenou akci a jak se její identita zachová při dalším doručení. Nemusíte vybírat technický mechanismus. Potřebujete ale vysvětlení, proč systém rozpozná opakování a zároveň dovolí skutečně novou práci.
Podrobnosti se liší podle poskytovatele. Dokumentace Stripe popisuje opakované události i samostatné události týkající se stejného objektu. Shopify rozlišuje jednotlivé doručení od činnosti obchodníka, která za ním stojí. Identifikátor užitečný pro jeden účel není automaticky správným pravidlem pro každou obchodní akci.
Příklady najdete v dokumentaci webhooků Stripe a v průvodci Shopify ověřováním doručení. Dodavatel by měl ověřit aktuální chování systémů, které skutečně propojujete.
Zjistěte, co se stane, když se dokončí jen část práce
Předpokládejme, že požadavek na vyřízení vznikne, ale propojení se přeruší dřív, než zaznamená dokončení. Jak při dalším pokusu najde existující požadavek? Co když dorazí dvě kopie současně? Samotný seznam dříve zaznamenaných aktualizací na žádnou z těchto otázek neodpovídá.
Požádejte, aby vám dodavatel ukázal tři věci odděleně: důkaz, že aktualizace dorazila, stav jejího zpracování v propojení a doklad o výsledné akci v přijímajícím systému. Potvrzení doručení samo o sobě nemusí dokazovat, že požadavek na zásilku nebo faktura existuje.
Když výsledek zůstane nejistý, předem určete, kdo ho prověří a co zkontroluje, než povolí další pokus. Dejte zaměstnancům jasné hranice: které akce mohou obnovit, které vyžadují pomoc dodavatele a kdy mají zastavit, aby neriskovali další obchodní akci. Některé problémy vyžadují porovnání záznamů mezi systémy a rozhodnutí člověka o dalším postupu.
„Zkuste to znovu“ pomáhá jen tehdy, když víte, co další pokus smí provést a kdo převezme řešení, když výsledek není jasný.
Požádejte o bezpečnou ukázku
Použijte podporované testovací prostředí s vymyšlenými záznamy a vypnutými externími obchodními akcemi. Ukázka má pokrýt dvojí doručení stejné aktualizace, skutečně druhou objednávku a selhání po úspěšném dokončení jednoho kroku. Zkontrolujte výsledné záznamy i protokol doručení. Nikdy neopakujte živou platbu ani objednávku jen proto, abyste zjistili, co se stane.
Požádejte o krátký písemný popis spouštěče, zamýšlené akce, způsobu rozpoznání opakování a místa, kde zaměstnanci uvidí výsledek. Zahrňte, jak dlouho si propojení pamatuje předchozí práci, co se stane s opožděným doručením a kdo řeší nejistou nebo částečně dokončenou akci.
Pokud systémy neumožňují bezpečně předvést konkrétní selhání, zaznamenejte tuto mezeru a dohodněte s dodavatelem užší kontrolu. Úspěšný test potvrzuje chování za daných podmínek. Nezaručuje přesně jedno provedení napříč všemi propojenými službami ani nedokazuje, že se celá posloupnost dokončí jako jediná nedělitelná operace.
Vytváříme integrace a zakázkový firemní software. Pokud plánujete propojení, přineste seznam zapojených systémů, akci, kterou chcete spustit, a chování při opakování, které ještě potřebujete vysvětlit. Probereme práci potřebnou pro toto propojení.
Otázky před schválením propojení
Znamená časový limit, že první pokus selhal?
Ne. Práce mohla být dokončena, zatímco odpověď se ztratila. Než rozhodnete, co má další pokus provést, zkontrolujte výsledek zpracování i přijímající systém.
Mohou být dvě objednávky, které vypadají stejně, obě platné?
Ano. Zákazník může záměrně zadat druhou objednávku se stejnými položkami a částkou. Propojení musí rozlišit nový záměr od opakovaného doručení; samotná shoda údajů to nerozhodne.
Jak bezpečně otestujeme chování při opakování?
Požádejte o podporované testovací prostředí s vymyšlenými záznamy a vypnutými externími obchodními akcemi. Zahrňte opakování, skutečně novou akci a selhání poté, co se část práce dokončí. Mezery v testování zaznamenejte místo experimentování na živých objednávkách nebo platbách.
Kdo má vyřešit částečně dokončenou akci?
Před spuštěním určete konkrétní osobu nebo odpovědný tým. Zaměstnanci musí vědět, co mohou sami zkontrolovat nebo obnovit a kdy musí dodavatel prověřit situaci, než bude povolena další akce.