Cesta modulitu

Cesta modulitu

Headshot Bronislav Klučka on 08. 5. 2025 22:14

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.

Používáme cookies a podobné technologie, jako Google Analytics, pro sběr analytických dat. To nám pomáhá pochopit, jak uživatelé používají naše stránky.

Více info

Stránky používají Google Analytics, a analytické služby poskytované společností Google. Google Analytics používá cookies, aby nám tato služba pomohla analyzovat, jak uživatelé používají naše stránky. Informace generované cookies, které se týkají vašeho používání stránek (včetně vaší IP adresy) budou přeneseny a uloženy u společnosti Google. Požíváme tato data pro vytváření reportů o aktivitě a k poskytování dalších služeb, které se týkají těchto stránek.

Analytická data nám pomáhají vylepšovat naše služby. Nepoužíváme je k marketingovým a reklamním účelům. Tato data nepředáváme ani neprodáváme dál.