Un po 'di contesto.
L'azienda in cui lavoro sta iniziando a passare a un'architettura modulare (qualcosa di simile ai microservizi) per il nostro prodotto principale, attualmente monolitico. Il primo passo è creare un servizio che al momento non è presente nel prodotto, e vogliamo costruirlo all'esterno del monolite per non aumentare le dimensioni e la complessità di esso.
Questo componente è un "connettore", nel senso che è qualcosa che dovrebbe occuparsi dell'invio di messaggi a parti esterne che utilizzano tutti protocolli, standard e formati diversi. Lo scopo è fornire un modo semplice per il cliente di interagire con questi servizi esterni tramite un servizio / API standardizzato. Attualmente il nostro prodotto principale genera i messaggi, ma non si occupa di inviarli.
Qui è dove faccio fatica. Vogliamo che questo nuovo connettore esponga un API REST che consenta al cliente di interagire con esso, al fine di inviare un messaggio per inviarlo, ottenere dettagli sul messaggio, ottenere l'elenco dei messaggi inviati e così via. Va tutto bene. Il problema è che vogliamo anche che l'applicazione sia in grado di raccogliere file da una condivisione file e inviarli, quindi mostrare i risultati tramite REST API. Questo perché si tratta di un miglioramento naturale rispetto al prodotto corrente: i monoliti posizionano i file nella cartella X, il connettore li preleva.
Ma come dovrebbe raccoglierli? Ho la sensazione che avere un microservizio sia accessibile sia tramite REST che reagire agli eventi dei file sia una cattiva idea. Il contenitore servlet si occupa di tutto il threading quando lo chiama tramite REST, quindi per quanto riguarda i file che verrebbero rilevati tramite condivisione file? Qui stiamo mixando REST sincrono e condivisione file basata su eventi.
Forse un'idea migliore è avere qualcosa che prelevi i file e POST il file alle API del connettore?
Il linguaggio scelto è Java, ma è più un problema di progettazione!
Grazie in anticipo.