Navrhujte software pro cloud native prostředí
DokončenoPropojte opakovatelnou infrastrukturu, nahraditelné procesy, trvalý stav a pozorovatelné chování. Posuzujte cloud native návrh nad rámec zabalení do kontejneru.
Vydává TaigaJak píšeme
Ověřte si porozuměníPlatforma po selhání nahradí worker pro sestavy. Co zajistí bezpečné opakování?Vypracovat cvičení
Co se naučíte
- Odlišit zabalení do kontejneru od cloud native chování.
- Určit rizika stavu, opakování a nahrazení ve vygenerované službě.
- Definovat kontrakt platformy, který agenti i lidé dokážou ověřit.
Definujte potřebné chování
Cloud native postupy podporují opakovatelný vývoj a provoz ve veřejných, soukromých i hybridních prostředích. CNCF zdůrazňuje systémy, které při změnách zůstávají spravovatelné, pozorovatelné a odolné. Kontejnery a orchestrace mohou tento přístup podporovat. Samy všechny tyto vlastnosti nezajišťují.
Začněte fiktivní službou sestav. Nástroj AI vytvoří endpoint, worker a kontejnerový image. Ukázka vytvoří správné PDF. Před produkcí musí tým odpovědět na další otázku: co se stane, když platforma během úlohy nahradí worker?
To je otázka návrhu aplikace i infrastruktury. Restart může obnovit proces, ale ztratit jeho nedokončenou práci.
Oddělte proces od trvalého stavu
Prototyp uchovává čekající úlohy a dokončené sestavy na disku kontejneru. Nahrazení kontejneru může obojí odstranit. Přidání dalších workerů může také vést k odlišným odpovědím podle toho, který worker požadavek obdrží.
Upravený návrh používá trvalé úložiště úloh a schválené objektové úložiště. Požadavek zaznamená identitu úlohy. Worker ji převezme, vytvoří výsledek a zaznamená jeho umístění. Kontroly přístupu platí i při stažení sestavy uživatelem.
| Oblast | Otázka pro službu sestav |
|---|---|
| Stav | Které záznamy musí přežít nahrazení procesu? |
| Konfigurace | Jak stejný artefakt běží v každém prostředí? |
| Identita | Která identita služby může číst úlohu a zapisovat její výsledek? |
| Stav služby | Dokáže worker přijmout práci a dokončit ji? |
| Ukončení | Co se stane s převzatou úlohou, když se worker zastaví? |
| Kapacita | Který limit nastane první: workery, databáze, úložiště nebo jiná služba? |
Tajné údaje uchovávejte mimo image. Poskytujte je schváleným systémem tajných údajů. Zaznamenejte, které změny konfigurace vyžadují nové vydání nebo restart procesu.
Navrhněte opakování před přidáním workerů
Předpokládejme, že worker uloží PDF a pak se zastaví před potvrzením úlohy. Fronta úlohu doručí znovu. Druhý pokus nesmí zákazníkovi znovu účtovat platbu ani odeslat rozporné zprávy o dokončení.
Kde je to vhodné, použijte idempotentní operaci. Opakování stejného logického požadavku má zachovat zamýšlený účinek. Definujte stabilní identitu požadavku, trvale zaznamenejte výsledek a ověřte chování v každém bodě selhání. AWS tuto techniku popisuje v příručce bezpečného opakování.
Opakování potřebuje také limity. Použijte časový limit, limit počtu pokusů a prodlevu, která brání souběžným opakovaným požadavkům. Neúspěšnou práci zachovejte k prozkoumání, místo abyste ji opakovali donekonečna.
Umožněte kontrolu požadovaného stavu
Deklarativní konfigurace určuje zamýšlené nasazení. Řídicí komponenta se snaží tento stav udržovat. Kubernetes Deployment například spravuje repliky aplikace a řízené aktualizace. Aplikace stále musí nahrazení správně zvládat.
Verzujte infrastrukturu a konfiguraci aplikace. Změny kontrolujte běžným procesem dodávky. Sledujte skutečné dokončení úloh, stáří čekajících položek, selhání a limity závislostí. Běžící proces stále může být neschopný vytvořit sestavu.
Vyberte platformu, kterou tým dokáže provozovat
Cloud native nevyžaduje, aby se každá aplikace změnila na mikroslužby. Modulární aplikace na spravovaném běhovém prostředí může své požadavky splnit. Více služeb přidává více rozhraní, rozhodnutí o nasazení a provozní práce.
Vývojovému agentovi dejte skutečný kontrakt platformy: podporované běhové prostředí, způsob identity, datové služby, pravidla nasazení a potřebné důkazy. Vedle úspěšných požadavků testujte chování při přerušení a nahrazení. Pokračujte lekcí o dostupnosti a hranicích selhání.
Vypracovat cvičení
Fiktivní služba sestav ukládá úlohy a dokončené soubory na disk kontejneru. Nakreslete tok přes požadavek, úlohu, soubor a stažení. Označte trvalý stav. Definujte, co se stane, když se worker zastaví po zápisu souboru, ale před potvrzením úlohy.
Stáhnout pracovní list (Markdown)Zrušení této volby smaže veškerý postup uložený v tomto prohlížeči.
Postup zůstává v tomto prohlížeči. Bez účtu a sledování.
Zdroje a další čtení
- CNCF: Cloud Native Definition v1.1 ↗
- Kubernetes: Deployments ↗
- AWS Builders’ Library: Making retries safe with idempotent APIs ↗