Tegyük fel van egy nagy alkalmazás, amely többé-kevésbé DDD mentén van elkészítve.
Minden terület saját bounded contextben (BC) van, a BC-ek egymás felé csak az apijaikon keresztül kommunikálnak.
A fő cél az lenne, hogy a csapatok/emberek tisztán egy BC-en tudjanak dolgozni, ne kelljen a többit is mindig lefordítani, a méretek miatt. Ezért mondjuk minden BC-ből csak az API komponensét publikáljuk ki, nugetbe csomagoljuk, és így binárisan tudnak egymással kommunikálni a BC-ek. Ez eddig szerintem rendben van, bár a verziózás kérdése itt sem egyszerű, hiába próbáljuk a csatolást az API-kon és az Anti Corruption Layeren (ACL) keresztül lazítani.
A nagy kérdés számomra a közös komponensek használata. “A” BC használ mondjuk 10.1-es NewtonSoft.Json-t, “B” BC pedig 9.0-t. Amikor minden bounded contextet bemásolunk egy website bin könyvtárába, akkor esetleges lesz, hogy melyik verziójú külső komponens lesz bemásolva, illetve a verziókhoz passzoló assembly redirectek is kellenek a web.config-ba.
Hogy szoktak ebben rendet tenni? Vagy megfordítva a kérdést, jó ötlet egy processben hosztolni a BC-eket, vagy ha ennyire laza csatolást akarunk, akkor külön processzbe kell őket rakni, és elkezdeni elmenni a microservices irányba?
Ötletek, linkek, könyvek, bármi érdekel a témában.
Could you hire me? Contact me if you like what I’ve done in this article and think I can create value for your company with my skills.