
Cesta modulitu

Monolitický styl má špatnou reputaci, nicméně je vhodnou volbou pro menší aplikace. Problémem není nutně monolit, ale spíš způsob jeho implementace. A upřímně řečeno, pokud developeři píši monolit jako legacy bordel, kterému nikdo nerozumí, proč si občas myslí, že distribuovaný systém napíší lépe?
Výsledkem bude distribuovaný bordel.
Představte si následující aplikace:
- Aplikace pro správu zákazníků
- Aplikace pro správu obsahu
- Fakturační/účetní aplikace
- Help desk
- Project management systém
- Software pro správy skladových zásob
Nemalé množství aplikací, které používáme nebo píšeme sdílí společné vlastnosti:
- Správa uživatelů, autentizace a autorizace
- Doménové entity, které aplikace spravuje
- Vizualizace dat napříč doménami
Je důležité si uvědomit, že různé typy aplikací vyžadují různé strategie architektury. Například operační systém, hry, AI...
Nicméně pro aplikace zmíněné na začátku tohoto článku se skvěle hodí modulární monolit - modulit.
Takže co je vlastně monolit? Jednoduše řečeno se jedná o aplikaci, která je vystavitelná jako jedna část. Technicky řečeno, spousta aplikací - jako například webové aplikace a client-server aplikace - jsou distribuované. Server běží nezávisle na frontendu a je vystavovaný nezávisle na frontendu (na klientovi).
Nicméně, pokud vezmeme v úvahu pouze backend, nebo pouze frontend, můžeme se bavit o monolitu.
Proč zvolit monolit na místo distribuované architektury (např. microservices)? Networking mezi jednotlivými komponentami představuje novou sadu problémů. Existují benefity stejně, jako nevýhody.
Zkusme si odpovědět na několik otázek:
- Bude na dané aplikaci pracovat více teamů?
- Potřebujeme jiné strategie pro vystavení různých částí aplikace?
- Potřebuje různé části aplikace škálovat výrazně jiným způsobem? např. musí být jedna část aplikace 100x výkonnější než zbytek?
- Potřebujeme podporovat stovky, tisíce, či více konkurenčních připojení?
Pokud je odpověď na všechny tyto otázky "ne", potom není důvod zvolit microservices. Prostě na tuto architekturu přejdete, až to bude potřeba.
Existuje způsob, jak vytvořit dobře navržený monolit, ze kterého se nestane "big ball of mud". Jedná se o způsob, který lze evolučně dlouhodobě rozvíjet a je připraven na situaci, kdy byste chtěli oddělit nějakou část do samostatné služby.
Tím způsobem je modulit.
Základním problémem při volbě distribuovaného systému jsou odpovědi na otázky zmíněné výše. Pokud na ně neznáte odpověď dopředu, nejste schopni správně navrhnout hranice jednotlivých distribuovaných služeb. Je jednodušší, rychlejší a méně bolestivé začít modulitem a oddělit specifické části do samostatných služeb až na základě konkrétní potřeby.
V další části se podíváme na strukturu modulitu.