{"id":5260,"date":"2022-12-23T09:30:00","date_gmt":"2022-12-23T08:30:00","guid":{"rendered":"https:\/\/blog.besharp.it\/?p=5260"},"modified":"2022-12-23T10:18:00","modified_gmt":"2022-12-23T09:18:00","slug":"etl-serverless-su-aws-integrazione-diretta-sns-kinesis","status":"publish","type":"post","link":"https:\/\/blog.besharp.it\/it\/etl-serverless-su-aws-integrazione-diretta-sns-kinesis\/","title":{"rendered":"ETL Serverless su AWS: Integrazione diretta SNS – Kinesis"},"content":{"rendered":"\n
Al giorno d\u2019oggi, pi\u00f9 che mai, le aziende capiscono il potenziale e il valore dei dati e dell\u2019importanza di utilizzarli in maniera consona. Per questo motivo soluzioni ETL sono sempre pi\u00f9 comuni e dedicate.<\/p>\n\n\n\n
In questo articolo parleremo di una pipeline ETL con un\u2019integrazione non comunemente usata in problemi di questo tipo, ma necessaria per il business preso in esame.<\/p>\n\n\n\n
L’ETL (Extraction, Transformation, and Loading) \u00e8 ormai uno standard per pipeline dedicate al dato.\u00a0<\/p>\n\n\n\n
Lo step di estrazione raccoglie dalle varie sorgenti il dato grezzo: avere un Data Lake correttamente organizzato \u00e8 la chiave per semplificare la fase di estrazione e le successive.<\/p>\n\n\n\n
Una volta che il dato \u00e8 stato recuperato si possono applicare tutte le trasformazioni necessarie ad estrarre il valore maggiore possibile dal dato. <\/p>\n\n\n\n
Questi step in linea, che si riassumono in ci\u00f2 che viene chiamato \u201cstep di trasformazione\u201d, sono specifici in base alle necessit\u00e0 di utilizzo del dato. I risultati saranno passati all\u2019ultimo step di salvataggio: lo step di caricamento (Loading). <\/p>\n\n\n\n
I risultati possono essere analizzati e visualizzati per avere una visione chiara e migliore da un punto di vista analitico in modo da aiutare i processi decisionali.<\/p>\n\n\n\n
Il vantaggio di questa struttura di processo \u00e8 la facilit\u00e0 di modifica e\/o implementazione di una trasformazione aggiuntiva. Il tempo richiesto \u00e8 drasticamente ridotto garantendo cos\u00ec un vantaggio enorme in termini di tempo nel rispondere a domande chiave dal punto di vista business in modo da guidare, dati alla mano, decisioni a pi\u00f9 alto livello.<\/p>\n\n\n\n
Ogni step pu\u00f2 essere realizzato con diverse modalit\u00e0. In questo articolo andremo a vedere una di queste possibilit\u00e0, aggiungendo qualche consiglio riguardo come farlo nel miglior modo.<\/p>\n\n\n\n
Prima di iniziare con la descrizione della soluzione tecnica contestualizziamo il flusso dati.<\/p>\n\n\n\n
L\u2019idea finale \u00e8 un servizio a cui le persone si possano sottoscrivere e inviare flussi di dati continui che dovranno essere salvati e processati in, quasi, tempo reale.<\/p>\n\n\n\n
Il caricamento in maniera corretta, senza perdita di dati, \u00e8 critico per il funzionamento del flusso. <\/p>\n\n\n\n
Inoltre, i componenti dovranno essere in grado di scalare in maniera efficiente.<\/p>\n\n\n\n
Soluzione tecnica: integrazione SNS – Kinesis Firehose e SQS<\/h2>\n\n\n\n
Ora che abbiamo un quadro generale, possiamo iniziare con la descrizione delle componenti della soluzione tecnica, spiegandone le possibilit\u00e0 e come connetterle tra di esse per farle interagire.<\/p>\n\n\n\n
Il servizio AWS SNS pu\u00f2 essere configurato per inviare notifiche con diversi protocolli: dalle classiche eMail e messaggi, alle richieste API HTTP\/HTTPS, fino a integrazioni dirette con servizi AWS come SQS, Lambda e Kinesis Data Firehose.<\/p>\n\n\n\n
Per questo motivo i topic SNS sono un\u2019ottima soluzione per il disaccoppiamento dell\u2019infrastruttura.<\/p>\n\n\n\n
Il topic SNS invier\u00e0, nella nostra soluzione, dati a molteplici destinatari: un Kinesis Delivery Stream e una coda SQS. <\/p>\n\n\n\n
Nota: possiamo anche usare una sottoscrizione email per ricevere direttamente notifiche su un subset di input grazie alle possibilit\u00e0 fornite da SNS filter.<\/p>\n\n\n\n
L\u2019idea \u00e8 processare i dati in input e, al contempo, salvarli in una sezione differente dell’infrastruttura in modo da poterli visualizzare e, se necessario, ri-processarli successivamente con altri tipi di trasformazioni o con una versione aggiornata del nostro flusso dati. <\/p>\n\n\n\n
L\u2019SNS topic si interfaccer\u00e0 quindi sia con la componente di estrazione, che con con quello di trasformazione del nostro flusso ETL: il Delivery Stream salver\u00e0 i dati che faranno parte del nostro Data Lake e la coda SQS invier\u00e0 lo stesso dato al servizio per la trasformazione.<\/p>\n\n\n\n