O novinkách a trendoch z DDD a Microservices priamo z µCon London 2019

106

Koncom mája som sa zúčastnil konferencie µCon London 2019. Stretnutie bolo zamerané na microservices, DDD (Domain-Driven Design) a softvérovú architektúru. Vo svete vývoja veľkých aplikácií sú tieto témy veľmi úzko prepojené. Softvérová architektúra veľkých informačných systémov je v súčasnosti stavaná hlavne ako architektúra typu microservices. Domain-Driven Design je taktika členenia aplikácie na logické celky, ktoré následne určujú funkčnosť a obsah jednotlivých modulov v microservices.

Konferenciu organizovala komunita „Skills Matter“ v Londýne. Pred tromi rokmi som sa zúčastnil podobného stretnutia tejto komunity, ktoré však bolo zameraná výlučne len na Domain-Driven Design. Vtedy ho otváral Eric Evans – „father or everything“ (ako ho nazval moderátor). Organizátori tohtoročnej DDD-konferencie sa rozhodli zlúčiť tému DDD s témou microservices. Keďže ide o veľmi príbuzné oblasti, ich zlúčenie rozhodne prospelo.

Stretnutie sa podstatne rozrástlo o technologický rozmer a aj o účastníkov. Preto sa konalo vo väčších priestoroch než naposledy – v budove Business Design Center. A zatiaľ čo stretnutie pred tromi rokmi trvalo iba jeden deň, tohto roku už rozšírený záber konferencie zabral tri dni v troch samostatných behoch.

Príspevky bežali v troch oddelených sálach. Z ponuky som si vyberal hlavne prednášky týkajúce sa Domain-Driven Designu. V krátkosti by sa dali trendy softvérovej architektúry veľkých informačných systémoch zhrnúť tak, že už nikto nepochybuje o potrebe rozdeľovania aplikácií na menšie subsystémy – mikroslužby. A že rozhodujúcu úlohu pri tomto rozdeľovaní hrá Domain-Driven Design so svojou koncepciou „Bounded Context“. Doménový význam a doménová reprezentácia pojmov je považovaná za kľúčový aspekt, cez ktorý sa architekti pozerajú na definovanie microservices. Veľa sa na prednáškach spomínal aj koncept doménových udalostí a vzájomnej komunikácie modulov prostredníctvom nich. Nechýbali ani „filozofické prednášky“. Pre mňa osobne bola veľkým prínosom prezentácia Simona Wardleyho: „Crossing the River by Feeling the Stones“. Zamýšľal sa v nej nad významom stratégie, mapy, komunikácie a doktrín pri vývoji softvéru.

V nasledujúcom slede prinášam pár zaujímavých faktov, ktoré som si na jednotlivých prednáškach poznačil. Ak máte chuť vypočuť si niektoré témy z konferencie podrobnejšie, pozývam vás na najbližšie stretnutie slovenskej DDD-community v Bratislave, kde sa vybraným prednáškam budem venovať hlbšie. Všetky prednášky z konferencie sú zverejnené aj na webe organizátora – komunity Skills Matter.

Zaujímavosti:

  • Trendom je zdôrazňovanie sociálneho aspektu vývoja – rozdeľovania vývojárov na tímy a ich zviazanosť s konkrétnou doménou a službami.
  • Pozor na skoré oddeľovanie modulov – na dobré definovanie modulov je znalosť domény kľúčová.
  • Domain-Driven Design použila firma Taboola na riadenie akvizície a pochopenie správnej integrácie tímu novej firmy do tímu pôvodnej firmy.
  • Choreography 2.0 kladie veľký dôraz na to, aby správy posielané medzi modulmi jasne komunikovali svoj zámer (intention).
  • Neexistuje softvér bez dizajnu. Existuje iba sofvér s dobrým dizajnom alebo zlým dizajn.
  • K implementácii security na úrovni containerov (napr. Docker) treba pristupovať novým spôsobom, security as a code => DevSecOps.
  • Ak začínate s DDD, zvážte postupný nábeh. Napríklad už len využitie ValueObjectov v dizajne môže výrazne pomôcť na každom projekte.
  • Event store je vhodná databáza napríklad na riešenie audit logov.
  • Modulárny monolit (modulith) je oveľa lepšia architektúra než distibuovaný „Big Ball of Mud“. Preto treba nájsť najprv prirodzené hranice vo vnútri domény („Bounded Context“) a až potom sa snažiť o definovanie modulov.
  • Pozor na implementáciu „Big Ball of Mud“ ako distribuovaného systému (microservices). Takýto koncept vyberá to najhoršie z oboch svetov: z monolitu jeho neoddelené moduly a z microservices zase distribuovanosť riešenia. Zabrániť sa tomu dá využitím Bounded Contextu z DDD.
  • wisdom = knowledge + experience + good judgement
  • Aj GUI môže byť modulárne. Používajú sa dva prístupy: Edge-Side Include a Server-Side Include.

Dúfam, že som vás týmito myšlienkami navnadil na stretnutie DDD community v Bratislave, 17.6.2019 o 18:00 v HubHube.

Dobrý článok? Chceš dostávať ďalšie?

Už viac ako 6 200 ITečkárov dostáva správy e-mailom. Nemusíš sa báť, nie každé ráno. Len občasne.

Súhlasím so spracovaním mojich osobných údajov. ( Viac informácií. )

Tvoj email neposkytneme 3tím stranám. Posielame naňho len informácie z robime.it. Kedykoľvek sa môžeš odhlásiť.

Zdeno Jašek
Pracujem ako Solution Architect vo firme PosAm a programovaním sa zaoberám takmer 30 rokov. Prešiel som jazykmi Basic, Assembler, Pascal, Object Pascal, Lisp, Prolog, Magic, MUMPS, Clipper, Paradox a Java, z ktorých najmilšia mi je Java. Pracoval som hlavne ako softvérový architekt, ale aj ako programátor, analytik, dizajnér a projektový manažér. Pri vývoji softvéru sa mi najviac páči navrhovanie objektového dizajnu – obzvlášť pre zložité aplikácie. Svoje blogy chcem zamerať na postupy pri vytváraní objektového návrhu aplikácie a ich technologickej realizácii v podobe hexagonálnej architektúry a microservices.