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.