Una volta creati componenti separati che devono comunicare tra loro, si entra nel regno della programmazione dei sistemi in cui si deve presumere che gli errori possano originarsi in qualsiasi fase del processo. Butta try-catch
a bloccare la finestra e devi sviluppare solide alternative per la gestione degli errori.
Abbiamo due sistemi entrambi con apis REST. Entrambi i sistemi dispongono di GUI che gli utenti possono utilizzare per aggiungere / aggiornare informazioni. Quando le informazioni vengono aggiunte a un sistema, devono essere propagate all'altro. Abbiamo un software di integrazione (l'intermediario) che esegue il polling su base minuto per minuto, preleva aggiunte / modifiche e le traduce da un sistema all'altro. Ogni chiamata tiene traccia del timestamp dell'ultima esecuzione riuscita - abbiamo un timestamp per la comunicazione in entrambe le direzioni. In questo modo, se qualche parte del sistema fallisce, possiamo riprendere da dove eravamo rimasti quando i problemi sono stati corretti.
Ho sentito cose negative sugli approcci basati su sondaggi: vale a dire il fatto che funziona senza considerare se ci sia effettivamente lavoro. Ho sentito che gli approcci basati su push sono più efficienti perché sono attivati su richiesta.
Sto cercando di capire come avrebbe potuto funzionare un approccio basato su push. Se uno dei due sistemi tenta di spingere un add / edit, dobbiamo supporre che potrebbe fallire perché l'altro sistema è inattivo. Mi sembra che entrambi i sistemi debbano mantenere la propria coda in uscita per poter riprendere una volta risolto il problema con l'altro sistema.
Mi sembra che l'utilizzo di un approccio push elimina l'intermediario, ma accumula più responsabilità su ciascun sistema per gestire i suoi messaggi verso l'altro sistema. Questo sembra non essere un modo pulito per separare le preoccupazioni. Ora entrambi i sistemi devono assumersi le responsabilità degli intermediari.
Non vedo come ridisegnare l'intermediario per un'architettura basata su push. Corri il rischio che i messaggi vengano persi se l'intermediario stesso fallisce.
Esiste un'architettura fault-tolerant che potrebbe essere utilizzata per gestire le interazioni di sistema senza il polling? Sto cercando di capire se ci siamo persi un'alternativa migliore quando abbiamo ideato / implementato il nostro intermediario basato sul sondaggio. Il software fa il lavoro, ma c'è un po 'di latenza.