Sto progettando un'applicazione utilizzando Micro-Services e non sono sicuro del 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 dati, prima di restituire la risposta consolidata al gateway API. L'API restituisce quindi la risposta al chiamante. (Dovrebbero essere chiamate sincrone quando la chiamata al servizio B richiede la risposta dal servizio A. IE Servizi di persona e indirizzo separati.)
- Chiedi al gateway API di chiamare direttamente ciascun servizio e di consolidare i dati all'interno dell'API prima di restituire la risposta.
Mi sto inclinando verso la seconda opzione, poiché avere i servizi che parlano tra loro introdurrebbe l'accoppiamento, nel qual caso potrei anche solo progettare un'applicazione monolitica. Tuttavia, ci sono alcuni gravi inconvenienti che posso pensare in cima alla mia testa con questa opzione:
Avere l'API che esegue più chiamate a più servizi aumenta il carico sul server API, specialmente quando alcune di queste chiamate stanno bloccando.
Questo metodo significherebbe che l'API deve essere "consapevole" di ciò che l'applicazione sta cercando di fare (IE Logic dovrebbe essere programmato nell'API per gestire a sua volta la chiamata dei servizi e quindi per consolidare i dati), piuttosto che solo fungere da stupido "endpoint" per i micro-servizi.
Mi piacerebbe sapere qual è l'approccio standard a questo problema e se c'è un'altra terza opzione che mi manca?