Recentemente ho iniziato a spostare un'applicazione monolitica su architettura di microservizi utilizzando contenitori docker. L'idea generale dell'app è:
scraping data - > formatta i dati - > salva i dati su MySQL - > servire i dati tramite API REST.
Voglio suddividere ciascuno dei passaggi in un servizio separato. Penso di avere due scelte, qual è la migliore pratica nell'architettura dei microservizi qui?
Opzione uno
Servizio di raschiatura - raschia e pubblica su Kafka
Servizio di formattazione - consuma messaggi da Kafka e li formatta
Servizio API - consuma messaggi Kafka, aggiorna MySQL e espone un'API REST
Svantaggio: Se non sbaglio, i contenitori docker devono preferibilmente eseguire solo un processo per contenitore
Opzione due
Servizio di raschiatura - raschia e pubblica su Kafka
Servizio di formattazione - consuma messaggi da Kafka e li formatta
Salvataggio in servizio DB - riceve le informazioni formattate e aggiorna solo MySQL (viene eseguito come processo python)
Servizio API - espone un'API REST che serve le richieste con il flacone python.
Svantaggio: Due servizi che si collegano allo stesso DB, supposto sconsigliato in quanto non sarebbero disaccoppiati
Qual è la migliore pratica qui? dovrei andare con l'opzione uno ed eseguire il server flask e il listener di kafka nello stesso contenitore?
Grazie!