Ho 2 micro-servizi. Uno è un Django API, l'altro è un lavoratore. Ognuno di questi vive in un contenitore docker.
L'API è un'API pubblica per il front-end Web. Gestisce le operazioni CRUD per gli utenti dell'applicazione Web e dispone solo di un back-end di autenticazione per gli utenti finali. Alcune azioni REST dell'utente creano messaggi SQS. L'API e l'operatore hanno ciascuno i propri ruoli e autorizzazioni AWS IAM. L'operatore esegue il polling dello SQS per i messaggi e, per ogni messaggio, esegue l'elaborazione.
Il problema è che dopo che l'operatore ha terminato l'elaborazione, è necessario che torni all'API con esito positivo o negativo. I lavoratori sono asincroni e potrebbero essere necessari alcuni minuti per terminare. Vedo 2 modi per farlo:
-
Crea un endpoint sull'API per il lavoratore da colpire. Il problema con questo è che penso che l'API django dovrebbe solo autorizzare gli utenti finali dell'applicazione. Dovrei aggiungere un altro back-end di autorizzazione solo per l'endpoint dell'API o eseguire un'autenticazione basata su token.
-
Colpisci direttamente il database, ma questo implica avere le credenziali del database in più punti.
C'è un modo migliore per farlo? Non mi piace l'idea di avere più backend di autenticazione in ciò che dovrebbe essere solo l'API CRUD dell'utente finale. Inoltre, non posso avere un utente in esecuzione nello stesso contenitore docker dell'API perché deve essere eseguito come un singolo processo all'interno del contenitore.