Fondamentalmente sto progettando un'applicazione abilitata per il web che dovrebbe avere un'API nel mezzo. Ho trovato questa domanda su Stack Overflow , che sfortunatamente non ha risposte.
Diciamo che c'è un sistema, simile a questa immagine:
Ilcentro"API" è fondamentalmente un server HTTP scritto con uno dei framework RESTful in una lingua. La "Web App" è fondamentalmente un altro "Client", quindi dovremmo trattarlo allo stesso modo.
Ora, diciamo che i miei clienti (iOS, Android, Web) si connettono tramite OAuth2 e comunicano con un server RESTful basato su JSON. Tutto buono e logico, ogni nuovo 'utente' ha una chiave API assegnata a loro, quindi quando un utente esegue un'operazione, ovvero viewOrder (333), il sistema registra che "utente 'xxx' a H: i: s tempo richiesto ordine n. 333 ". Ancora buono.
Quindi abbiamo dei lavoratori ed è qui che risiede la mia domanda principale. Dire ai lavoratori di eseguire l'elaborazione degli ordini, ad esempio un lavoratore che controlla lo stato di pagamento di un ordine. Quello che fa il lavoratore è il controllo di nuovi pagamenti (correlati) in un sistema esterno e li spinge a un server di accodamento per l'elaborazione successiva. Un altro lavoratore (o lo stesso, forse?) Controlla costantemente la coda per i pagamenti appena aggiunti, li preleva dalla coda, esegue tutto il processo e, se tutto è corretto, aggiorna il DB con il nuovo stato dell'ordine, i soldi pagati, ecc, ecc. ...
Quindi la mia domanda è: dovrei trattare un lavoratore come un altro 'utente' nel mio sistema? Dì "system_user_1" che è responsabile per l'elaborazione degli ordini. Questo utente di sistema dovrebbe anche autenticarsi con OAuth2 come il resto di loro? È anche corretto avere questo 'utente di sistema' nel sistema? Quali sono gli svantaggi della sicurezza? Quali sono le altre possibili implicazioni di un simile sistema? O sto sbagliando tutto questo e c'è una soluzione completamente diversa al mio problema?
P.S. Questo sistema deve essere scalabile e potenzialmente potrebbe ridimensionarsi molto velocemente, quindi questo è un tentativo di creare una soluzione a lungo termine. Idealmente ci saranno più istanze del server 'API' con il bilanciamento del carico di nginx per carichi elevati.