Dost malá, aby se vešla celá
Každá služba dělá jednu věc a vejde se do jedné hlavy. V systému není část, která vyžaduje dvoutýdenní zaškolení, než na ni jde bezpečně sáhnout.
Skoro každý jiný inženýrský spor je věc vkusu a rádi ho prohrajeme. Tenhle rozhoduje, jestli váš systém bude za tři roky ještě stát za změnu.
Nikdo se nerozhodne postavit systém, který se brání změnám. Stane se to postupně a příznaky se v byznysu objeví dřív, než někdo pojmenuje příčinu.
Složitost není počet částí, ale počet vztahů mezi nimi. Deset věcí, které o sobě vzájemně vědí, je složitějších než padesát věcí, z nichž každá zná dvě.
V těsně provázaném systému přidá nová část vztah ke všemu, co už existuje. Množství, které musíte držet v hlavě, testovat a udržovat, roste multiplikativně — jedenáctá část stojí mnohem víc než třetí, bez viditelného důvodu.
Od určitého bodu je racionální systém přestat měnit. Týmy k tomu závěru obvykle dojdou, aniž ho vysloví; prostě začne být zřejmé, že nejbezpečnější release je žádný release.
Rozdělte systém na mnoho malých služeb, dejte každé jednu úlohu a kontrakt — a aritmetika se změní. Přidaná část přidá jen svou vlastní složitost: celek roste o +n, ne ^n.
Každá služba dělá jednu věc a vejde se do jedné hlavy. V systému není část, která vyžaduje dvoutýdenní zaškolení, než na ni jde bezpečně sáhnout.
Rozbitá služba je rozbitá služba. Systém degraduje, nezastaví se — a hledání příčiny začíná uvnitř jedné hranice.
Smazání části odečte přesně to, co její přidání stálo. Tahle symetrie brání systému tiše hromadit funkce, které už nikdo nepoužívá.
Služby komunikují přes verzovaná rozhraní ověřovaná v CI na obou stranách — rozbíjející změna selže v pipeline, ne v produkci. Kontrakty navíc skrývají implementaci: službu jde přepsat v jiném jazyce a zbytek systému si toho nevšimne.
Nemusíte mít pravdu předem. Tvar se může měnit během stavby i dlouho po ní — restrukturalizace je tu běžná operace.
Větší systém je víc malých částí, ne těžší systém. Škálování je otázka počtu a kapacity — dá se plánovat, nacenit i obsadit lidmi.
Mikroslužby nejsou zadarmo. Za nezávislé nasazování a ohraničené chyby platíte provozní režií — víc pohyblivých částí k nasazení, sledování a ladění. Pod určitou velikost je to špatný obchod a řekneme vám, když je váš systém pod ní.
Nad ní ten obchod funguje díky platformě: většina režie je v Kubernetes vyřešená, takže ji platíte jednou za cluster, ne opakovaně za každou službu.
Technologický stack pro váš typ produktu. Služby jde přepsat za odpoledne; špatná volba úložiště se nese roky, protože než je zjevně špatná, jsou v ní data.
Klademe jednoduché otázky o tom, jak práce probíhá dnes a co by znamenalo „lépe“. Žádné zadání po vás nechceme — jeho napsání je naše práce, ne vaše.
→ poznámky k doméně, omezení, co se nesmí rozbít
Technologie vybraná pro tento typ produktu — především databáze a datový model. Tady záměrně zpomalujeme.
→ rozhodnutí o stacku s napsaným zdůvodněním
Základní mikroslužby a hlavně tok dat mezi nimi — které deploymenty běží průběžně, které joby podle plánu, jak se řetězí pipeline a jak služby komunikují.
→ náčrt architektury, hlavní uzly toku, kontrakty
Každá služba v jazyce, který sedí její úloze — Go pro propustnost a provoz, Python pro data a modely, TypeScript pro rozhraní, nebo co jiného úloha vyžaduje. Kontrakty skrývají implementaci, volba je tedy volná pro každou službu zvlášť. Malý rozsah, vlastní testy, vlastní metriky.
→ běžící služby, image, CI
Proud stálý od začátku do konce: propustnost pod zátěží, backpressure kde je potřeba, bezpečné retry a pipeline úloh, které selhávají nahlas.
→ pipeline, plány, fronty, zátěžové testy
Napojit systém na to, co vaši lidé už používají, a na vaše stávající produkty. Kde AI skutečně pomáhá, patří sem — často jako chatbot nebo asistent nad službami, které odpovědi už mají.
→ integrace, boti, služby s AI
Na tolik strojů, kolik zátěž potřebuje, spojených do jednoho clusteru — s monitoringem a alertingem živým dřív, než na systému cokoli závisí.
→ cluster, dashboardy, alerty, runbooky
Systém je váš: repozitáře, infrastruktura, dokumentace i zdůvodnění rozhodnutí. Další podpora je k dispozici — a nikdy není něčím, do čeho bychom vás vprojektovali.
→ předání, dokumentace, volitelná podpora
Obvyklé uspořádání chce po klientovi technické zadání — tedy žádá člověka, který zná software nejméně, o nejtěžší překlad v celém projektu. My to vedeme obráceně.
Co se dnes děje mezi příchodem dat a rozhodnutím, které na nich stojí?
Dva lidé je vyexportují, spojí v tabulce a před obědem rozešlou mailem.
Co se na tom za poslední rok pokazilo?
Dvakrát zdroj změnil formát a pár dní si toho nikdo nevšiml.
Kdybyste se těch dat mohli kdykoli zeptat na jednu věc, jaká by to byla?
Kde jsme právě teď vystavení — bez čekání na ranní soubor.
Ingest s validací schématu, která se ozve při změně formátu; služba spojování, která nahradí tabulku a nechá po sobě auditní stopu; průběžně udržovaný pohled na expozici; a bot, který na tu otázku odpoví na požádání. Čtyři malé služby — a žádnou z nich klient nemusel specifikovat.
Nevyjednává se to po zakázkách. Tohle je základ, díky kterému má všechno nad ním smysl.
Pokud ano, dalším krokem je rozhovor o vašem byznysu — ne o technologiích. Pokud ne, je lepší to zjistit teď než za tři měsíce.