Volba a propojení architektur
Vytvořeno a udržováno pomocí AI agentů. Za posouzení a zveřejnění odpovídají lidé.
Návrh · vyžaduje lidské posouzení · r2
Rozhodujte podle omezení a odpovědnosti
Zaznamenejte hranice transakcí, požadavky na latenci a obnovu, citlivost dat, charakter zátěže a osoby schopné systém provozovat. Porovnejte nejjednodušší životaschopný návrh s navrženou alternativou. Následující tabulka je původní rozhodovací rámec této knihovny; citované popisy vzorů dokládají příslušné mechanismy a kompromisy, nikoli univerzální pořadí řešení.
| Přístup | Vhodná výchozí podmínka | Náklady a důvod k přehodnocení |
|---|---|---|
| Statický web | Veřejný obsah bez důvěryhodných serverových zápisů | Limity sestavení a cache; pro autentizované změny přidejte chráněné API |
| Modulární monolit | Jeden produkt potřebuje koordinované transakce a časté změny | Disciplína závislostí mezi moduly; oddělujte pouze změřené omezení nebo samostatně vlastněnou schopnost |
| Funkce | Ohraničená nárazová práce odpovídá podmínkám běhu poskytovatele | Studené starty, kvóty, tlak na počet spojení a opakování; přehodnoťte soustavnou nebo dlouhotrvající práci |
| Služby | Samostatná odpovědnost, vydávání nebo izolace selhání přinášejí konkrétní užitek | Síťová selhání, verzované kontrakty rozhraní, pozorovatelnost a provozní zajištění konzistence |
| Událostní zpracování | Práce může skončit později a odběratelé mají odlišné odpovědnosti | Duplicity, doručení mimo pořadí, zpoždění, opětovné přehrání a vývoj schémat |
| Odolná workflow | Dlouhotrvající obchodní kroky musejí přežít přerušení | Omezení enginu, uchování historie, aktualizace kódu a porovnání vnějších účinků |
Tyto volby lze kombinovat. Monolit může obsluhovat statický frontend a využívat frontu, aniž by se stal mikroslužbovým systémem. Směr závislostí v kódu a topologie nasazení jsou samostatná rozhodnutí: rozdělení procesů samo nevytvoří užitečné doménové hranice.
CQRS odděluje model čtení a zápisu; může začít uvnitř jedné databáze. Samostatná úložiště přidávají zpoždění synchronizace a dohodu o zastaralém čtení. Event sourcing určuje historii událostí jako autoritativní zdroj, což vyžaduje rozhodnutí o vývoji událostí, přehrávání, soukromí a retenci. Samotná fronta nebo auditní tabulka není event sourcing. Tyto vzory zavádějte výběrově, když jejich konkrétní přínos převýší dodatečné požadavky na obnovu a testování.
Umožněte posouzení hranic
U každého propojení prohlížeče, API, workeru, úložiště a poskytovatele zaznamenejte:
| Kontrakt | Důkaz, který má posuzovatel vidět |
|---|---|
| Oprávnění | Která identita smí provést kterou akci a nad čími daty |
| Vlastnictví dat | Která komponenta smí měnit každý invariant a jak ostatní žádají o změnu |
| Selhání | Timeout, zrušení, odpovědnost za opakování, zacházení s duplicitami a uživatelsky viditelný čekající nebo chybový stav |
| Kompatibilita | Podporovaní producenti a spotřebitelé, verze schématu a podmínka odstranění |
| Provoz | Traces a metriky, odpovědnost za podporu, postup obnovy a porovnání stavu, rozpočet |
Sdílená databáze může být záměrnou přechodnou volbou. Neomezené zápisy z více služeb komplikují samostatnou odpovědnost i migraci; tuto vazbu zdokumentujte místo označování služeb za nezávislé.
Prokažte změnu před oddělením komponenty
Před návrhem workeru nebo služby nejprve určete příznak: stáří fronty, soupeření o zámky, koordinaci nasazení nebo požadavek na izolaci. Zaznamenejte reprezentativní výchozí měření a porovnejte malý úplný průchod navrženým řešením se stávající cestou. Na nové hranici použijte kontraktní a black-box kontroly, zátěžové testy a testy obnovy a bezpečnostní testy. Zahrňte pomalou závislost, starého spotřebitele a opakovaný požadavek.
Plán migrace určuje vlastnictví dat během přechodu, výběr provozu, kompatibilitu a porovnání výsledného stavu. Zachovejte jediného autoritativního zapisovatele, pokud nebyl ověřen záměrný návrh řešení konfliktů. Určete důkazy umožňující přesun provozu, podmínku přerušení a postup obnovy po nových zápisech. Vrácení provozu samo nevrátí migrovaná data.
Pokud se přínos neprokáže, zachovejte jednodušší topologii a užitečnou vnitřní hranici. Výsledek zapište do ADR, aby další agent neopakoval nepodložený redesign.
Související rozhodnutí
Odolnost a distribuovaná práce · Architektura frontendu · Škálování podle měření · Hosting · Strategie testování
Primární zdroje
azure-architecture-styles · azure-cqrs · azure-event-sourcing · postgres-isolation · durable-workflows