Stiamo iniziando a considerare l'implementazione di un'architettura ESB / Microservices. Io (penso) conosco i concetti, ma c'è una cosa che non riesco a farmi un'idea: replica / sincronizzazione dei dati.
Creare un evento per ogni tabella (magari anche multiplo (creare, aggiornare, eliminare)) mi sembra eccessivo, se si tratta solo di sincronizzare i dati. Una soluzione di replica ETL / SQL non sarebbe molto più semplice, nei casi in cui nessuna logica di business sarà corretta, poiché è solo per aggiornare la cache / db locale del server?
Quali strategie consiglieresti?
Semplice esempio, abbiamo un'applicazione che gestisce tutti i dati di prodotto, vogliamo creare un'API (servizio Web) che fornirà un'applicazione mobile che visualizzerà tali dati.
Ci sono diverse opzioni:
- API accede direttamente al database L'API
- ha un database locale che viene mantenuto aggiornato utilizzando i messaggi ESB L'API
- ha un database locale che viene mantenuto aggiornato utilizzando alcuni strumenti di replica L'API
- ha un database locale che viene aggiornato una volta al giorno utilizzando un'operazione batch.
A mio parere, la ragione per usare i messaggi sarebbe quella di disaccoppiare ulteriormente i sistemi poiché la struttura del database dietro di essa può essere cambiata senza influenzare il sistema in quello scenario. Per tutti gli altri mezzi e scopi 3/4 sembra molto più complesso, che nel mio caso incontra il principio KISS.
Che cosa consiglieresti? Dove posso trovare una sorta di diagramma di flusso / esempio di albero decisionale su quale alternativa usare quando?