Ugrás a tartalomhoz
← Vissza a Naplóhoz

NestJS modulok bounded context szerint — 60 modul tanulságai

A Consulting OS 60 NestJS modulból áll. Mutatjuk, mi változott, amikor elhagytuk a "feature folder" megközelítést és bounded context-re váltottunk.

A modul határai nem a fájlrendszerben vannak. Abban, hogy melyik csapat változtat rajtuk.

A Consulting OS első verziója "feature folder" elrendezést használt: users, projects, invoices, reports. Minden feature-re egy mappa, NestJS modul, controller, service. Klasszikus. A gond ott kezdődött, amikor a 15. modulnál már senki sem tudta, hogy egy új funkció melyik mappába tartozik — mert a modulok keresztben ismertek, és az új feature egyszerre érintett 4-et.

A váltás: bounded context

Áttértünk a DDD-ből ismert bounded context megközelítésre. Minden modul egy üzleti határt képvisel, ami a következő szabályokat követi: (1) saját domain modellel rendelkezik, (2) csak eseményeken keresztül kommunikál más contextekkel, (3) sosem importál szolgáltatást másik contextből, (4) a saját adattáblája(i) csak az övé — más modul nem piszkál bele.

A 7 top-level kategóriánk

  • identity/ — auth, users, tenants, roles
  • billing/ — invoices, quotes, payments, reconciliation
  • delivery/ — projects, tasks, time-tracking, milestones
  • communication/ — email, notifications, slack, in-app
  • insights/ — reports, dashboards, metrics, exports
  • automation/ — workflows, scheduled jobs, webhooks
  • platform/ — feature flags, audit log, search, backup

Mit nyertünk, mit vesztettünk

Nyertünk: a PR-ek 80%-a egyetlen modult érint, a merge conflict-ek számában 60%-os csökkenés. Az új csapattag 2 nap alatt ért le az első productive commit-ig (korábban 4-5 nap). Vesztettünk: néhány lekérdezés lassabb lett, mert nem join-olunk contextek között — helyette eventekre és projection táblákra támaszkodunk. Ez kb. +15% infra költség, és megéri.

Ez a pattern 2-3 ember alatt overkill. 5 fő fölött kötelező. A Nortinia minden új NestJS projektjét bounded context szerint indítjuk — még akkor is, ha az elején csak 5-6 modul van. Az első 3 hónapban úgy tűnik, hogy "túl sok struktúra", a 6. hónapban köszöni, hogy van.

Kiemelten érdekel egy téma?

Írj nekünk, és ha van tapasztalatunk benne, publikáljuk.