Come ho costruito una pipeline di dati a cascata basata su AWS (Parte 2)

Building a cascading data pipeline on AWS (Part 2)

Automatico, scalabile e potente

Foto di Mehmet Ali Peker su Unsplash

In precedenza, ho condiviso la mia esperienza nello sviluppo di un flusso di dati utilizzando la tecnologia AWS CloudFormation. Tuttavia, non è un approccio ottimale, poiché lascia 3 problemi in sospeso:

  1. La distribuzione deve essere impostata manualmente, aumentando le possibilità di errori;
  2. Tutte le risorse vengono create in un’unica pila, senza confini e livelli adeguati; man mano che il ciclo di sviluppo prosegue, la pila delle risorse diventerà sempre più pesante e la sua gestione sarà disastrosa;
  3. Molte risorse dovrebbero essere mantenute e riutilizzate in altri progetti.

In breve, stiamo cercando di aumentare la gestibilità e la riutilizzabilità di questo progetto, in modo agile.

Soluzione

AWS consente agli utenti di implementare 2 tipi di pattern strutturali di CloudFormation: il riferimento tra pile (cross-stack reference) e l’annidamento di pile (nested stacking). Il riferimento tra pile si riferisce a uno stile di progettazione che prevede lo sviluppo di pile cloud separatamente e di solito in modo indipendente, mentre le risorse tra tutte le pile possono essere interrelate in base alla relazione di riferimento. L’annidamento di pile significa che una pila di CloudFormation è composta da altre pile. Ciò viene realizzato utilizzando la risorsa AWS::CloudFormation::Stack.

Una pila annidata nella vita reale: un nido pieno di nidi/uova (Foto di Giorgi Iremadze su Unsplash)

Poiché una delle nostre missioni è quella di migliorare la gestione dei progetti, il progetto verrà suddiviso in strati e l’annidamento di pile ci aiuterà. Tuttavia, riguardo all’interrelazione intrinseca tra gli artefatti della pila esistente, avremmo anche bisogno di fare un uso limitato del riferimento tra pile.

Implementazione

Abbiamo creato 3 funzioni Lambda, 3 tabelle DynamoDB, 1 ruolo IAM con relative politiche associate, diverse code SQS e diversi allarmi Cloudwatch. A causa della complessità delle funzioni stesse, in questa versione saranno definite in modelli separati, con i servizi utilizzati solo da loro stessi, inclusi gli allarmi e le code dei messaggi non consegnati. Oltre a questi, le risorse IAM saranno…