Laravel architektura: Proč většina projektů nepotřebuje microservices
Dobrý software není zbytečně složitý. Přesto mnoho týmů volí microservices, i když jim to zpomalí vývoj. Získejte pádné argumenty, kdy je modulární monolit efektivnější volba.
Dobrý software není zbytečně složitý. Přesto mnoho týmů volí microservices, i když jim to zpomalí vývoj. Získejte pádné argumenty, kdy je modulární monolit efektivnější volba.
V posledních letech se microservices objevují na každé konferenci, v každém blogpostu a v každé druhé firmě, která chce působit moderně. Ale potřebuje je opravdu každý projekt?
Sám jsem si tím prošel. Laravel projekty stavím roky, pracoval jsem na různě velkých systémech. A čím dál víc si stojím za tím, že dobře navržený monolit je v drtivé většině případů ta nejlepší možná cesta.
Microservices se často prodávají jako řešení pro škálování. Jenže tohle je hodně zjednodušené. Pokud má váš tým jen pár vývojářů (napočítáte je na prstech), microservices vám přinesou spíš problémy:
Zkrátka – rychlost vývoje dramaticky klesá. Microservices možná dobře škálují horizontálně, ale týmově to nefunguje bez správné struktury, kultury a seniorních lidí.
Dobře navržený monolit v Laravelu (i kdekoliv jinde) vám přinese:
V kombinaci s modulární architekturou (např. Domains
, Modules
, Services, Actions
) a přísným oddělením logiky od controllerů je možné udržet i větší aplikaci přehlednou a dlouhodobě životaschopnou.
Moje doporučení: Navrhujte monolit tak, jako byste ho jednoho dne museli rozdělit na microservices – i když ten den možná nikdy nepřijde.
Tady je to úplně jasné. Startupy by se microservices měly obloukem vyhnout. Potřebujete validovat nápad, dodat MVP, rychle reagovat. Rozsekání na služby vás akorát zpomalí.
Proč by měl tým o třech lidech řešit orchestraci, event-driven komunikaci, vlastní API gateway a deployment pro pět různých repozitářů, když ještě neví, jestli projekt přežije první měsíc?
Monolit vám umožní dělat rychlé změny, upravit business logiku v jednom místě, a hlavně – iterovat bez overheadu. A o to jde v prvních měsících nejvíc.
Neznamená to, že microservices jsou špatné. Jen jsou často nasazované moc brzo – ve chvíli, kdy by mnohem jednodušší řešení bohatě stačilo. Skutečný přínos microservices se totiž projeví až tehdy, když monolit přestává stíhat:
V takové situaci už má smysl o mikroarchitektuře uvažovat. Ale i tehdy se často ukáže, že bohatě stačí hybridní řešení – například API-first backend s odděleným frontendem nebo pár samostatných služeb tam, kde to opravdu dává smysl.
Monolit vám může sloužit roky, ale i ten má své limity. Tady je několik signálů, že možná nastal čas začít přemýšlet o oddělení některých částí systému:
Ale i v těchto případech se dá často začít malým krokem – například vytěžením konkrétní části do balíčku, který se udržuje samostatně, ale zůstává součástí monolitu.
Technologie nejsou cílem. Jsou prostředkem. A pokud je vaším cílem:
…pak je dobře navržený monolit v Laravelu téměř vždy ta nejrychlejší a nejrozumnější volba.
Na závěr jen drobná poznámka: architektura je živá věc. Monolit, který dobře slouží teď, může být za dva roky potřeba rozdělit. A to je v pořádku – pokud jste s tím od začátku počítali a psali kód tak, aby to šlo. Tohle není výzva k tomu, abyste nikdy nepřemýšleli o microservices. Ale spíš výzva, abyste začali přemýšlet v kontextu.
Jsem vývojář, který se zaměřuje na projekty, kde standardní řešení nestačí. Od roku 2018 pomáhám digitálním agenturám a firmám s technicky náročnými výzvami – od návrhu robustní architektury až po optimalizaci a další rozvoj WordPress a Laravel aplikací.
Nemusíme hned začít – stačí se pobavit o tom, co potřebujete. Někdy i krátký rozhovor hodně vyjasní.