Ho più artefatti (applicazioni) distribuiti su host diversi (chiamiamoli A, B e C per semplicità) e attualmente sto cercando un tipo di modello di integrazione, perché devo ridurre il numero di chiamate al backend, in modo che non abbia bisogno di chiamate separate per A, B e C, ma piuttosto una chiamata a D che raccoglie tutte le informazioni e la restituisce al client. Lo considero come una specie di applicazione di aggregazione.
Ho letto il libro di Sam Newman su Microservices e sto cercando di implementare qualcosa che sia conforme al modello "Backend for frontends", il che significa che ogni canale (mobile, web) ha una propria interfaccia RESTful. Parla anche delle chiamate interne, ma non dei dettagli di implementazione.
Uso Java (RestEasy) per tutte le applicazioni e ho pensato di utilizzare Retrofit per l'invio di chiamate interne, che potrebbe risolvere alcuni dei miei problemi. Ci sono altri quadri da recensire?
Inoltre, mi piacerebbe avere una sorta di re-routing automatico in atto e non so se questa è la strada da percorrere. Provo a spiegarlo con un esempio: c'è un endpoint GET / cliente / nome utente / qualcosa / istruzioni che possono essere utilizzate solo dagli utenti verificati. Se un cliente non viene verificato, l'endpoint deve restituire informazioni sull'upgrade che è possibile recuperare chiamando GET / cliente / nome utente / verifica. Così ho pensato a diverse opzioni:
- / customer / nomeutente / sometool / istruzioni restituisce un'eccezione, il programma di lettura delle eccezioni legge il codice di errore (qualcosa come "cliente non verificato") e il programma di mappatura delle eccezioni sa che deve raccogliere le informazioni da / customer / username / verification - & gt ; lato negativo: il mapping delle eccezioni diventerà onnipotente nel tempo
- / customer / username / sometool / instructions controlla se il cliente è già verificato, e in caso contrario chiama / customer / username / verification e raccoglie le informazioni - > lato negativo: aggiunge logica alle istruzioni endpoint che in realtà non appartengono alle istruzioni
- un modulo aggregatore che funziona con annotazioni che vengono intercettate prima che venga richiamato MessageResponseWriter. Qualcosa di simile a: @OnFailure (errorCode="notverified" invoke="/ customer / username / verification") - > lato negativo: ancora una volta, l'aggregatore diventerà onnipotente
Come pensi che dovrebbe essere implementato?