En el subcapítol anterior vam construir un data lake per analitzar dades emmagatzemades. Però moltes dades arriben en temps real, de forma contínua: clics en una web mentre els usuaris naveguen, lectures de sensors cada segon, transaccions a mesura que ocorren... Com captures i processes aquest flux continu de dades en el moment, sense perdre res? Per això existeix Amazon Kinesis, el servei d’AWS per a dades en temps real (streaming). Veurem els seus dos components principals: Kinesis Data Streams i Kinesis Data Firehose.

El problema: dades que arriben sense parar, ara mateix

Hi ha dades que no arriben «de tant en tant» en arxius, sinó com un raig continu que no para:

Exemples de dades en temps real (streaming):
   - Clics i navegació de milers d’usuaris en una web (cada segon)
   - Lectures de sensors d’IoT (temperatura, GPS...) cada segon
   - Transaccions financeres a mesura que ocorren
   - Esdeveniments d’una aplicació en viu

Processar això planteja reptes: arriba constantment i en gran volum, no pots perdre dades, i sovint vols reaccionar a l’instant (detectar un frau mentre ocorre, no l’endemà). Necessites alguna cosa capaç de capturar i moure aquest flux continu de manera fiable i escalable.

Què és el processament en streaming

El processament de dades en temps real (streaming) consisteix a capturar i processar les dades a mesura que es generen, de forma contínua, en lloc d’esperar a tenir un lot gran i processar-lo després (el que seria processament «per lots» o batch).

   Processament per lots:   esperes → ajuntes moltes dades → processes (després)
   Processament en streaming: les dades arriben → les processes JA (al moment)

Analogia: la diferència és com entre una presa i un riu. El processament per lots és com una presa: acumules l’aigua i la deixes anar de cop cada cert temps. L’streaming és com un riu que flueix sense parar: l’aigua (les dades) passa contínuament i l’aprofites segons flueix. Kinesis és el «llit» preparat per gestionar aquest riu de dades sense que es desbordi ni es perdi.

Què és Kinesis

Amazon Kinesis és la família de serveis d’AWS per capturar, processar i analitzar dades en temps real (streaming) a gran escala. Et permet ingerir fluxos enormes de dades contínues de manera fiable. Té diversos components; veurem els dos principals.

Kinesis Data Streams: el flux en temps real

Kinesis Data Streams captura un flux continu de dades en temps real i el posa a disposició perquè les teves aplicacions el processin a l’instant. Les dades entren al «stream» i els teus consumidors (per exemple, Lambdas, recorda que Kinesis pot ser un trigger de Lambda, subcapítol 14.2) les llegeixen i processen al moment.

Productors (web, sensors...) → Kinesis Data Streams → Consumidors
   envien dades sense parar         (el flux en viu)     processen AL INSTANT
                                                          (Lambda, analítica...)
  • Per a què: quan necessites reaccionar en temps real a les dades (detectar frau a l’instant, alertar d’una anomalia d’un sensor, actualitzar un panell en viu).
  • Clau: les dades estan disponibles per processar-se immediatament, amb mínima latència.

Analogia: Kinesis Data Streams és com una cinta transportadora en viu en què van passant les dades, i els teus treballadors (aplicacions) les van agafant i processant a mesura que passen, sense esperar. Ideal quan cada dada importa ara.

Kinesis Data Firehose: carregar el flux en un destí

Kinesis Data Firehose se centra en una altra cosa: recollir un flux de dades i lliurar-lo automàticament en un destí d’emmagatzematge o anàlisi (com S3 —el teu data lake del subcapítol 29.1—, Redshift, etc.), sense que hagis de programar res per gestionar-ho. És la forma més senzilla de carregar dades de streaming en un lloc on guardar-les o analitzar-les.

Productors → Kinesis Data Firehose → lliura automàticament a S3 / Redshift / ...
   dades contínues   (recull i carrega)    (el teu data lake, magatzem de dades...)
  • Per a què: quan vols portar un flux de dades al teu data lake (S3) o un altre destí de manera automàtica i senzilla, sense necessitat de processar-lo a l’instant.
  • Clau: és totalment gestionat i molt fàcil: configures l’origen i el destí, i Firehose s’encarrega de moure les dades (pot fins i tot transformar-les o agrupar-les pel camí).

Analogia: si Data Streams és una cinta transportadora en viu, Firehose (el nom significa «mànega de bomber») és com una mànega que canalitza el raig de dades directament fins al dipòsit (S3). No t’has de preocupar de gestionar la cinta ni els treballadors: només connectes la mànega al dipòsit i les dades hi flueixen automàticament.

Streams vs Firehose: quan cada un

Kinesis Data Streams Kinesis Data Firehose
Per a què Processar el flux en temps real Lliurar el flux a un destí (S3, etc.)
Reacció Immediata (processes al moment) No immediata (carrega les dades per després)
Gestió Tu programes els consumidors Totalment gestionat (només configures)
Ideal per a Detecció de frau, alertes en viu Omplir el data lake amb dades de streaming

💡 Regla pràctica: si necessites reaccionar a l’instant a les dades, fes servir Data Streams. Si només vols portar les dades de streaming a un lloc (com el teu data lake a S3) de manera fàcil i automàtica, fes servir Firehose. Sovint s’usen junts: Streams per reaccionar en viu i Firehose per arxivar el mateix flux a S3.

Com connecta amb el data lake

Kinesis és sovint la porta d’entrada de dades en temps real cap al data lake del subcapítol 29.1:

Dades en temps real → Kinesis Firehose → S3 (data lake)
                                              │
                                    Glue cataloga, Athena consulta
   → les dades de streaming acaben analitzables juntament amb la resta

Així, les dades que arriben contínuament acaben al teu data lake, a punt per analitzar-se juntament amb les altres. Streaming (Kinesis) i data lake (S3+Glue+Athena) es combinen en una plataforma de dades completa.

Exemple del món real: una plataforma de videojocs online vol analitzar el comportament dels jugadors en temps real i també guardar-lo per a anàlisis posteriors. Usen Kinesis Data Streams per capturar cada acció dels jugadors (milions per minut) i processar-les a l’instant amb Lambdas que, per exemple, detecten trampes o ajusten la dificultat en viu. Alhora, usen Kinesis Data Firehose per bolcar aquest mateix flux d’esdeveniments a S3 (el seu data lake), on després l’analitzen amb Athena per entendre tendències a llarg termini. Streaming per reaccionar ara, data lake per entendre l’històric: el millor dels dos mons.

El que has de recordar

  • Moltes dades arriben en temps real, de forma contínua (clics, sensors, transaccions); processar-les requereix capturar aquest flux continu sense perdre res, sovint per reaccionar a l’instant.
  • El processament en streaming tracta les dades a mesura que es generen (com un riu que flueix), enfront del processament per lots (com una presa que acumula i deixa anar).
  • Amazon Kinesis captura, processa i analitza dades en temps real a gran escala. Dos components principals:
    • Kinesis Data Streams: captura un flux en viu per processar-lo a l’instant (reaccionar en temps real: frau, alertes). Com una cinta transportadora en viu.
    • Kinesis Data Firehose: recull un flux i el lliura automàticament en un destí (S3, Redshift...), totalment gestionat. Com una mànega cap al dipòsit.
  • 💡 Data Streams per reaccionar a l’instant; Firehose per portar dades a un destí fàcilment. Sovint s’usen junts.
  • Kinesis és la porta d’entrada de dades en temps real cap al data lake (S3), combinant streaming i històric.

En el següent subcapítol veurem l’altre gran pilar de l’analítica: el magatzem de dades optimitzat per a consultes a gran escala, Redshift.

Cloud, AWS & Terraform — De zero a expert

Capítol 1 · Què és el cloud computing

Capítol 2 · El mercat cloud i els grans proveïdors

Capítol 3 · Regions, zones de disponibilitat i edge

Capítol 4 · Càlcul: EC2

Capítol 5 · Emmagatzematge: S3

Capítol 6 · Xarxes: VPC

Capítol 7 · Identitat i accés: IAM

Capítol 8 · Bases de dades gestionades

Capítol 9 · Per què Infraestructura com a Codi

Capítol 10 · HCL: el llenguatge de Terraform

Capítol 11 · Providers i estat

Capítol 12 · La teva primera infraestructura real amb Terraform

Capítol 13 · Balanceig de càrrega i autoescalat

Capítol 14 · Serverless amb Lambda

Capítol 15 · Missatgeria i esdeveniments

Capítol 16 · Lliurament de contingut i DNS

Capítol 17 · Contenidors a AWS

Capítol 18 · Mòduls: reutilització i composició

Capítol 19 · Workspaces i gestió d'entorns

Capítol 20 · Backends remots i locking

Capítol 21 · Testing d'infraestructura

Capítol 22 · Terraform en CI/CD

Capítol 23 · Seguretat en profunditat

Capítol 24 · Observabilitat: logs, mètriques i traces

Capítol 25 · Optimització de costos

Capítol 26 · Alta disponibilitat i disaster recovery

Capítol 27 · Well-Architected Framework d'AWS

Capítol 28 · Arquitectures serverless a escala

Capítol 29 · Plataformes de dades a AWS

Capítol 30 · Multi-compte i landing zones

Capítol 31 · Platform Engineering i Internal Developer Platform

Capítol 32 · Certificacions AWS rellevants

Capítol 33 · Projectes per consolidar el que s'ha après

Capítol 34 · Recursos i comunitat

© Copyright 2024. Tots els drets reservats