Stiamo iniziando a ridefinire uno dei nostri principali prodotti in una architettura orientata ai microservizi . Attualmente stiamo utilizzando la struttura di cartelle Implementazione di Domain Driven Design per organizzare i file di origine . Tuttavia, stiamo scoprendo che i progetti di dominio e infrastruttura non stanno facendo un buon lavoro nell'organizzare logicamente ciascun microservizio.
Ad esempio, abbiamo la nozione di "gestore di eventi di dominio" che funziona quando riceve un messaggio. Attualmente tutti questi gestori vengono semplicemente scaricati nella stessa cartella / spazio dei nomi "Gestore" all'interno di "Dominio". Forse va bene, ma sembra che non ci sia una separazione organizzativa tra i contesti dei microservizi. Un altro esempio sono le nostre entità di dominio: un'entità "membro" può avere significati diversi (e persino strutture differenti) a seconda del contesto del microservizio.
Stiamo anche prevedendo alcuni problemi con l'implementazione in futuro. Ovviamente vogliamo che il processo di implementazione sia il più possibile disgiunto. Distribuire ogni servizio con una DLL "Dominio" da 10mb piena di assembly che non verrà mai caricata non è auspicabile.
È meglio organizzare l'origine in spazi dei nomi e cartelle che rispettano le divisioni logiche dei microservizi? Ogni microservizio dovrebbe avere la propria soluzione con ciascuno dei progetti DDD prescritti? Dovremmo "salire di livello nell'albero" e creare una soluzione per ogni nodo nella struttura DDD, quindi creare singoli progetti per ogni microservizio?
Mi sento come se fossi in un territorio in qualche modo inesplorato qui e apprezzerei qualche consiglio!