Sto cercando di pensare al modo più ragionevole di progettare l'architettura di un sistema di generazione dati con diversi passaggi.
I dati nel sistema attraversano diverse trasformazioni che possono essere suddivise in passaggi separati (dal punto di vista della logica aziendale).
Desidero che il sistema mantenga questo design modulare, in modo tale che ogni modulo rappresenti un passaggio nella trasformazione dei dati.
L'ingresso di un modulo dovrebbe essere l'uscita del modulo precedente.
- Quali sono alcuni buoni modi per orchestrare questo flusso?
- In che modo i moduli possono comunicare tra loro?
- In ogni passaggio, da dove dovrebbe provenire l'input e dove dovrebbe andare l'output?
- È una buona idea utilizzare un database come fonte e destinazione del consumo / generazione di dati per ogni modulo?
- I moduli dovrebbero essere costruiti come script / eseguibili separati che solo comunicare direttamente con il database?
Modifica
Il sistema sarà implementato da più persone. Ad ogni sviluppatore verrà assegnato un modulo. Vorrei che l'architettura semplificasse il flusso di lavoro consentendo a ciascuno sviluppatore di lavorare in modo indipendente; e fare assunzioni solo sui dati che il loro modulo specifico consuma.
Modifica 2 :
La relazione dei moduli è illustrata di seguito.
I moduli sono rappresentati come caselle blu. Alcuni moduli dipendono da dati generati da altri moduli (frecce nere). Alcuni moduli devono mantenere i dati sul DB (frecce tratteggiate grigie).