microservices: come modellare oggetti di dominio correlati? [chiuso]

4

Ho 2 oggetti di dominio: Progetto e Contratto. Un progetto può avere molti contratti, quindi nel database è modellato come una relazione classica uno-a-molti. La nostra domanda è questa: come modellate quanto sopra nel contesto dei microservizi? Hai (a) due servizi di microservizio ProjectService e ContractService? oppure (b) disponi di un ProjectService che comprende sia progetti che contratti?

Pensiamo che la risposta (a) (cioè 2 microservices ProjectService e ContractService) implichi che si dovrebbe chiamare 2 servizi per recuperare e salvare la gerarchia di oggetti Project completa. D'altra parte, la risposta (a) disaccoppia completamente i Progetti dai Contratti, che può essere una buona cosa in teoria, ma praticamente inutile poiché un Contratto non può logicamente esistere senza un Progetto.

Qual è l'approccio corretto qui? La risposta è (a) un esempio del modello di anti nano servizio?

    
posta chrisl08 30.11.2015 - 10:13
fonte

1 risposta

4

Ho esaminato l'anti-pattern dei nano servizi e infatti secondo me l'opzione (a) ne è un esempio.

Ma anche, devi considerare che la tua logica di dominio qui, detta l'accoppiamento "Project-Contracts" (è per definizione) quindi la granularità più fine (più piccola) del microservice dovrebbe includere l'intera cosa (Project- Accoppiamento dei contratti).

Suggerimento: sceglierei l'opzione (b) con il seguente tocco, ma solo se pensi che la gestione dei Contratti richieda un numero eccessivo di codice: considera di averlo come servizio privato classe (non esposta al mondo esterno) che dovrebbe essere costruita solo da un costruttore parametrizzato che prende come parametro il ProjectID (o simile).

    
risposta data 02.12.2015 - 18:41
fonte

Leggi altre domande sui tag