Sto progettando un'applicazione che utilizza Micro-Services e non sono sicuro sul miglior meccanismo da utilizzare per raccogliere dati da più servizi.
Credo che ci siano due opzioni:
- Integrare un meccanismo di comunicazione "interservizi" che consente ai servizi di parlare direttamente. Il gateway API chiamerebbe un singolo servizio, che quindi chiama altri servizi per raccogliere i dati, prima di restituire la risposta consolidata al gateway API. L'API restituisce quindi la risposta al chiamante. (Questo dovrebbe essere chiamate sincrone quando la chiamata al servizioB richiede la risposta dal servizio A. I. Seperate Person and Address Services.)
- Chiedere al gateway API di chiamare ciascun servizio direttamente e consolidare i dati all'interno dell'API prima di restituire la risposta.
Mi sto appoggiando alla seconda opzione, in quanto i servizi che si comunicano tra loro introdurranno l'accoppiamento, nel qual caso potrei anche solo progettare un'applicazione monolitica. Tuttavia, ci sono alcuni seri inconvenienti che riesco a ricambiare con questa opzione:
-
Se l'API esegue più chiamate su più servizi, aumenta il carico sul server API, soprattutto quando alcune di queste chiamate stanno bloccando.
-
Questo metodo significherebbe che l'API deve essere "a conoscenza" di ciò che l'applicazione sta tentando di fare (IE Logic dovrebbe essere programmata nell'API per gestire a turno la chiamata dei servizi, e quindi per consolidare il dati), piuttosto che agire come un "endpoint" stupido per i micro-servizi.
Mi piacerebbe sapere qual è l'approccio standard a questo problema e se c'è un'altra terza opzione che mi manca?