Sto introducendo un Redshift per il mio team e diventa una sfida per fare un solido processo di sviluppo, quindi ho bisogno di alcune informazioni su come affrontarlo.
Innanzitutto, alcune informazioni sul layout corrente. Utilizziamo 3 envs per lo sviluppo (ENV LOCALE di ogni sviluppatore, TEST env, PROD) e stiamo usando Postgres come database principale. Per le modifiche DDL, stiamo creando script sql per un aggiornamento incrementale e sono applicati in modalità automatica per ogni ambiente durante la distribuzione. È solido e diretto.
Ora, dobbiamo fare alcuni rapporti analitici e Postgres non va affatto bene (problemi di prestazioni). Quindi ci stiamo muovendo per caricare regolarmente dati su Redshift. Come strumento per il trasferimento dei dati al momento attuale, utilizziamo AWS DataPipeline, ma è una sfida creare un processo solido. Quindi sto cercando un consiglio:
-
I dati da redshift provengono da Postgres tramite i lavori di trasferimento dati (AWS DataPipeline), la prossima fase di lavori - i lavori che filtrano e reimballano i dati adatti ai rapporti. È molto difficile mantenere i dati uguali sugli invianti TEST e PROD: è necessario creare tutte le pipeline in 2 copie (o più nel caso in cui si abbia Redshift in un cloud) e assicurarsi di eseguirle tutte nello stesso ordinare in tempo utile per ottenere dati coerenti. Forse la pipeline di AWS Data non è lo strumento migliore per questo? O c'è un modo per tenere traccia del lavoro di trasferimento dati in modo solido, per essere sicuri che stiano lavorando contro due env nello stesso modo?
-
C'è anche un problema con i lavori di trasferimento dati - non possono essere eseguiti localmente (AWS DatapipeLine è basato su cloud), quindi trascorri molto tempo avviandolo direttamente contro env TEST in un cloud, che potrebbe anche portare a dati errati su un env TEST, quindi è necessario ricreare il database da un dump (anche una perdita di tempo). Esistono soluzioni per lo sviluppo e il debug di questo tipo di lavoro (può essere correlato non solo allo strumento DataPipeline) localmente?
-
La pipeline di dati di AWS viene creata tramite GUI, quindi esiste la possibilità di creare 2 lavori diversi per diversi envs, ma esiste un'opportunità per creare un lavoro dal file di configurazione JSON - in modo che possa essere memorizzato come codice . Qualunque buona pratica su come organizzare le versioni di per creare pipeline di dati durante il processo CI? Ricrea lavori su ogni schieramento? Qualunque strumento adatto per questo o forse script bash?