Sto passando da un'architettura accoppiata a un'architettura disaccoppiata utilizzando i microservizi con AWS Lambda.
Ecco la mia architettura attuale:
OgniroutedelgatewayAPIècollegataaunLambdaspecifico,ognunodiessihaun'attivitàspecifica,matutticondividonoilcodicecomune.
Puntididolore:-DevodistribuiretuttoilLambdaquandosimodificailcodicecondiviso.
-Riutilizzodelcodicenonostanteilriutilizzodeimicroservizi.
Checosavorreifare:
Ilcodicechesioccupadicontrollaregliinputdeiclient,chiamareilcodicebusinessspecificoeformattarel'outputèospitatoinquellochehochiamato"AWS Lambda API Gateway" (sul mio grafico) o lambda collegato all'API pubblica.
Il codice aziendale è ospitato in diversi Lambda raggruppati in servizi identificati. (A e B nel mio esempio).
Ho alcune domande su questo design:
-
Quale protocollo dovrei usare per connettere i vari lambda:
- Esecuzione di chiamate da lambda collegate all'API pubblica a lambda del servizio.
- Un lambda di un servizio che chiama un lambda da uno stesso servizio.
- Un lambda di un servizio che chiama un lambda da un servizio diverso.
-
Il modo più pulito per i servizi di versione e un meccanismo di fallback su una versione diversa di un servizio?
Idee:
- Informazioni sui protocolli di comunicazione tra lambda collegato con l'API pubblica:
- I lambda collegati all'API pubblica comunicano con lambdas del servizio, tramite un'API privata servita con il gateway API per la richiesta CRUD.
- I lambdas contenuti nei servizi comunicano con lambda di altri servizi tramite gateway API (per attività di sincronizzazione) o SNS / SQS (per attività asincrone)