Ho il seguente scenario: sto sviluppando un CRM in symfony che sfrutta i microservizi per raccogliere e gestire le informazioni. In sostanza, ciò che fa è presentare le informazioni provenienti dai microservizi - che possono essere raggiunte attraverso una libreria che chiama e gestisce la comunicazione con il Servizio - e gestisce alcune operazioni chiamando anche loro.
I microservizi restituiscono oggetti DTO.
Ho spostato le librerie dei microservizi in alcuni servizi di symfony, che vengono chiamati dai controller. Quando ho bisogno di creare informazioni strutturate (cioè informazioni che dovrebbero essere costruite con dati provenienti da più microservizi), chiamo i microservizi all'interno di un servizio symfony, creo una "entità" - meglio dire, un modello di dominio - e utilizzo i DTO restituiti per riempirli. Nel caso in cui avessi bisogno solo delle informazioni provenienti da un singolo servizio, restituisco il DTO, dal momento che non vedo il punto di creare un altro involucro per il gusto di avere un'architettura pulita.
Il problema qui è che sto usando DTO che provengono dall'infrastruttura e passano attraverso tutte le classi fino al ramoscello. Non mi piace davvero, sembra che la separazione delle preoccupazioni sia super violata. D'altra parte, la creazione di un livello di modello che rispecchia i DTO e la duplicazione del codice per copiare le informazioni DTO che ritornano dai microservizi, appare complicata. Cosa ne pensi? Come struttureresti il codice?
Cosa faresti per presentare i dati provenienti dai servizi? Passando al DTO che viene da loro? Creare qualche modello?