Serverovny.cz/Fórum/Jak rozdělit monolit na microservices?

Jak rozdělit monolit na microservices?

Když se bavíme o modernizaci softwarových aplikací, často narážíme na téma přechodu z monolitické architektury na microservices. Mám pocit, že jsem se dostal do bodu, kdy náš stávající monolit je už příliš velký a složitý na to, abychom s ním mohli efektivně pracovat. Všichni víme, že microservices mohou nabídnout lepší škálovatelnost a flexibilitu, ale jak vlastně začít s tímto rozdělením? Jaké jsou ty klíčové kroky, které bychom měli dodržet? Měli bychom začít tím, že si identifikujeme jednotlivé komponenty v našem monolitu a pokusit se je přetvořit na samostatné služby? Nebo spíš přistoupit k nějakému konkrétnímu modulu a ten postupně odtrhávat od zbytku? Co dělat s databázemi? Je lepší mít jednu centrální databázi nebo každá služba by měla mít svou vlastní? A co třeba komunikace mezi jednotlivými službami? Jak nejlépe řešit otázku API a event-driven architekturu? A co když se něco pokazí během procesu migrace? Jak zajistit, aby celková funkčnost aplikace zůstala zachována? Zkrátka, jak se vůbec dostat z toho bodu A (monolit) do bodu B (microservices)? Rád bych slyšel vaše názory, zkušenosti nebo tipy. Díky!

175 slov
1.8 minut čtení
16. 12. 2023
Luboš Brabec

Pokud chcete rozdělit monolit na microservices, tak začněte s identifikací jednotlivých komponent nebo modulů ve vašem stávajícím systému. Prozkoumejte, co by mohlo mít smysl jako samostatná služba, třeba podle obchodních funkcionalit nebo podle toho, jak jsou jednotlivé části navzájem závislé. Je fajn se zaměřit na jednu oblast a postupně ji odtrhávat od zbytku – třeba začít s něčím jednodušším, co je nezávislé a má jasně definované rozhraní.

Co se týče databází, většinou je doporučený přístup mít pro každou službu svou vlastní databázi. To sice znamená nějaké úsilí ohledně migrace dat, ale ulehčuje to škálování a nezávislost. Pro komunikaci mezi službami můžeš použít REST API nebo event-driven architekturu s využitím message brokerů, což vám umožní lépe reagovat na události v systému.

Během migrace může nastat spousta problémů, takže je dobré mít plán, jak udržet funkčnost aplikace. Například můžete implementovat feature toggles nebo postupnou migraci pomocí strangler fig patternu, což umožní souběžný provoz monolitu a nových microservices.

Celkově je to o trpělivosti a iterativním přístupu. Každý kousek, který se podaří odtrhnout, by měl být plně funkční dřív, než přejdete na další. Hodně štěstí!

178 slov
1.8 minut čtení
21. 2. 2024
Kristýna Musilová

Přechod na microservices je fakt náročnej, ale jde to. Začal bych tím, že si projdeš celej monolit a pokusíš se rozdělit jeho funkcionality na menší části. Zkus identifikovat jednotlivý domény, co máš v aplikaci. Většinou je dobrý začít s těma nejvíc nezávislejma komponentama, třeba nějakým modulem, kterej není moc napojenej na zbytek.

Co se týká databází, tak je dneska spíš trend mít pro každou službu vlastní databázi. To ti dává větší flexibilitu a nezávislost. Ale pozor na to, aby sis nenačinil chaos s datama. Komunikace mezi službama může bejt klidně přes REST API nebo gRPC, ale event-driven architektura pomocí message brokerů jako Kafka nebo RabbitMQ je taky skvělej způsob, jak to zvládnout.

Během migrace se ti určitě něco pokazí, to je jasný. Doporučuju mít pořádnou testovací sadu a možná i nějaký monitoring, abys mohl rychle reagovat, když se něco posere. A nezapomeň na postupný přechod – neni nutný hned všechno rozkopat a udělat to najednou. Klidně začni s malou částí a postupně to rozšiřuj.

Jako poslední věc – buď trpělivej, celej ten proces zabere čas a bude to chtít hodně iterací. Ale nakonec bys měl získat mnohem lépe udržovatelnej systém.

187 slov
1.9 minut čtení
28. 4. 2024
Karel Hácha
Serverovny.cz/Články/Serverové technologie budoucnosti
Jak vyřešit škálovatelnost serverů pomocí microservices?Objevte, jak implementace architektury microservices může zlepšit škálovatelnost a výkon vaší serverové infrastruktury.
1000 slov
10 minut čtení
27. 7. 2023
Karolína Malá
Přečíst článek
Podobné otázky