Sfondo : sto lavorando a un nuovo progetto al lavoro che verrà eseguito in AWS. Stiamo cercando di utilizzare una moderna architettura di microservice e sfruttare la tecnologia cloud, ma non abbiamo ancora molta esperienza in questo senso. A causa di alcune limitazioni della libreria, è necessario eseguire almeno alcuni dei servizi in Python, che la mia organizzazione ha una grave mancanza di esperienza di produzione con. La maggior parte delle nostre precedenti applicazioni sono in Spring / Java (e alcuni dei nostri altri microservizi saranno in esecuzione usando loro).
Nella nostra architettura, vogliamo avere un numero di microservizi in esecuzione in una sorta di pipeline di elaborazione che comunica usando SQS / SNS per la comunicazione asincrona. Allo stesso tempo, dovranno essere in grado di accettare le comunicazioni REST dal nostro frontend o da altri servizi che necessitano di dati del servizio.
La mia domanda : come posso gestire al meglio entrambe queste forme di comunicazione in python? La mia soluzione è sotto vitale, o dovremmo fare qualcosa di completamente diverso con la nostra strategia di comunicazione?
Quello che mi è venuto in mente : la mia idea attuale è di avere l'elaborazione in background / pipeline per un microservizio su un'istanza EC2 che ascolterà ed elaborerà messaggi SQS, quindi creerà una richiesta POST a un servizio di archiviazione specifico per quel microservizio che si trova dietro un gateway API AWS e utilizza le funzioni Lambda per archiviare i risultati in un database. In questo modo, possiamo chiamare frontend / altri servizi al gateway API per estrarre i dati dal microservice senza interrompere l'elaborazione dei messaggi SQS. Questo ci permette anche di sfruttare l'architettura senza server, rendendo il ridimensionamento molto più semplice.
Personalmente sono abbastanza inesperto e non sono stato in grado di trovare informazioni soddisfacenti o esempi di architettura come questa attraverso la mia ricerca, quindi apprezzerei qualsiasi intuizione o input che puoi dare.
Per chiarire, ciò di cui sono più curioso è il problema più fine di come aprire i miei microservizi sia a REST che alle comunicazioni di messaggistica, o se qualche altro modello sarebbe un'idea migliore.