Composizione dei microservizi. Cosa buona o cattiva?

0

Speriamo che questo argomento non sia supponente e potrei forse ottenere una risposta significativa per favore. Il nostro problema è, immagina di avere due microservizi: Car e Driver . DTO del driver potrebbe essere come dire:

DriverDTO 
{ 
  id: 1, 
  name: "John Smith" 
}

e CarDTO:

CarDTO
{ 
  name: "Ford", 
  driver: { 
    id: 1,
    name: "John Smith"
  }
}

Questo modello implica la composizione di microservizi che potrebbe non essere un modo molto carino per mantenere un accoppiamento lento tra i servizi - se si aggiorna DriverDTO (nessuna modifica sostanziale, basta aggiungere un campo), è necessario aggiornare tutti i microservizi che lo consumano se ne ho bisogno, perché il frontend si aspetta da "driver": solo l'intero modello fornito nel servizio Driver .

Se lo facciamo come segue:

CarDTO
{ 
  name: "Ford", 
  driverId: 1
}

Quindi dobbiamo fare una richiesta aggiuntiva dal frontend. Questo potrebbe essere risolto dal compositore di servizi però.

Dobbiamo decidere tra due scelte:

1) Stiamo pensando alla composizione del servizio nel gateway API, quindi fondamentalmente frontend -> API gateway (Spring Zuul) -> (2 calls, to car AND driver service) e creerà un bel risultato composto come si vede nel secondo blocco di codice sopra.

2) Dobbiamo attenerci all'approccio: il Car service (e anche altri servizi) lo stanno consumando e hanno bisogno di aggiungere un nuovo campo se ne hanno VERAMENTE bisogno. Quindi il campo driver: non ha lo stesso formato su tutti i microservizi.

Che ne pensi?

    
posta Mejmo 26.10.2018 - 00:08
fonte

1 risposta

1

Un errore comune nei micro-servizi è avere una bassa coesione, di cui questo è un esempio.

Se un driver appartiene direttamente a un'auto e vengono sempre utilizzati insieme, devono essere parte dello stesso micro-servizio.

Vuoi puntare al miglior rapporto tra coesione e accoppiamento che puoi ottenere. La separazione tra auto e guidatore sembra essere scarsa nell'accoppiamento, ma anche scarsa coesione.

Tuttavia, la mia ipotesi è che questo sembra essere un esempio forzato, quindi forse il tuo vero problema deve essere in servizi separati; difficile sapere senza ulteriori informazioni.

    
risposta data 26.10.2018 - 00:58
fonte

Leggi altre domande sui tag