Rozhodli jsme se rozdělit monolit na mikroslužby. Přepsání od nuly? Ne — to je recepta na katastrofu. Strangler Fig pattern: postupná extrakce služeb z monolitu. Kus po kuse, bez big-bang migrace.
Strangler Fig Pattern¶
Jako fíkus, který obrůstá strom. Nové funkce implementujete jako mikroslužby. Existující funkce postupně extrahujete. Proxy (API Gateway) routuje requesty — starý kód nebo nová služba. Monolit se postupně zmenšuje.
API Composition¶
Klient potřebuje data z více služeb. API Composer (v gateway nebo dedicated service) volá služby paralelně a skládá odpověď. Pozor na latenci — N volání se sčítají. Cache a asynchronní volání pomáhají.
Saga Pattern¶
Distribuovaná transakce přes více služeb. Místo 2PC (two-phase commit) sékvence lokálních transakcí s kompenzačními akcemi. Objednávka: reserve inventory → charge payment → ship. Selhání: compensate (refund → release inventory).
Database per Service¶
Každá služba vlastní svá data. Žádné sdílené tabulky. Duplikace dat je OK — eventual consistency přes events. Největší mentální shift pro vývojáře zvyklé na jednu sdílenou databázi.
Patterns, ne framework¶
Mikroslužby nejsou o technologii — jsou o patterns. Strangler pro migraci, Saga pro transakce, CQRS pro čtení/zápis. Znalost patterns je důležitější než znalost konkrétního frameworku.