AWS para Data Engineering - 1

Autor: Elias Velázquez

Elias Velázquez

De todos, 21

Amazon Web Services ofrece un ecosistema enorme, con +200 servicios, pero la realidad es simple: si entendés cómo funcionan estos 21 servicios clave, podés diseñar arquitecturas de datos completas en la nube: desde la ingestión y almacenamiento hasta la seguridad y la analítica.

¿Cuáles son? Estos de acá:

Tranqui. No los vamos a ver todos en este mismo post. Iremos cubriendo varios servicios en distintos artículos divididos bajo un criterio que creo es super importante tener claro si querés dedicarte a la Ingeniería de Datos.

Como suelo decir, no hay que dejarse llevar por el nombre del servicio o por si es tendencia en LinkedIn, sino que lo importante es:

No te voy a vender humo: a fecha de publicación de este post, varios de estos 21 servicios aún no los utilicé. Asi que crear este artículo fue un ejercicio de bastante aprendizaje. Lo que te comparto en esta entrada y en las que vendrán es el resultado de dicho ejercicio, sumado a lo que he aprendido en producción con algunos de ellos.

Te dije que vamos a dividir los servicios usando un criterio en particular. Arranquemos con eso primero.

El Ciclo de Vida de la Ingeniería de Datos

Para comprender qué problema resuelve cada servicio que vamos a ver, hay que entender qué rol juega dentro del Ciclo de Vida de la Ingeniería de Datos (CVID).

Este ciclo se halla definido y explicado en detalle en el libro "Fundamentals of Data Engineering" de Joe Reis y Matt Housley. Si me lees hace tiempo habrás visto que lo menciono siempre que puedo, ya que considero que es la Biblia de la Ingeniería de Datos.

¿Qué es y cómo está compuesto? Por un lado, el CVID es un subconjunto del ciclo de vida de los datos. Así como el ciclo de vida de los datos incluye a los datos durante toda su vida útil, el CVID se concentra en las etapas que un Ingeniero de Datos controla y sobre las que puede tener influencia o al menos, debería tener una noción al respecto.

Estas etapas permiten convertir datos crudos en un producto final útil, listo para consumo por parte de analistas, científicos de datos, ingenieros de Machine Learning y otros.

¿Cuáles son dichas etapas?

Ciclo de Vida de la Ingeniería de Datos - Ilustracion

Es interesante notar que, además de las etapas del CVID, también hay una sección llamada Undercurrents, que puede ser traducido como "Corrientes principales". El Fundamentals indica que...

La Ingeniería de Datos ahora abarca mucho más que solamente herramientas y tecnología, incorporando prácticas empresariales tradicionales como data management (gestión de datos), optimización de costos y prácticas mas nuevas como DataOps. […] Hemos denominado a todas estas prácticas como corrientes principales, ya que apoyan cada aspecto del Ciclo de Vida de la Ingeniería de Datos.

En esta serie vamos a cubrir servicios relacionados a algunas prácticas muy importantes, como lo son:

Ahora, aunque estas etapas parezcan estar definidas e ilustradas en orden, la realidad que el CVID no siempre es un flujo continuo. Varias etapas del ciclo pueden llegar a repetirse, ocurrir fuera de orden, solaparse o entrelazarse de maneras interesantes e inesperadas.

Por supuesto, esto es tan solo una introducción. En cada post de esta serie vamos a ahondar un poco en cada etapa o undercurrent asociado a los servicios que vamos a ver.

Ya a futuro abarcaremos este ciclo con más profundidad, incluyendo descripciones más detalladas, preguntas clave, y ejemplos, basándonos por supuesto en el Fundamentals.

Arranquemos con los servicios de AWS que nos permiten cubrir la Ingestión. Para que te puedas llevar info práctica y aplicable, vamos a responder estas preguntas para cada servicio:

Banner de Ingestión con logos de servicios de AWS

Ingestión

Esta es la etapa donde nos enfocamos en extraer datos desde un sistema fuente y que está estrechamente relacionada con la etapa de Generación. Vamos por partes.

La Generación involucra a los sistemas fuente, esos sistemas que producen los datos en crudo que necesitamos ingestar mediante nuestra pipeline. Ejemplos de sistemas fuente pueden incluir:

Ahora bien, la Ingestión es el proceso de consumir los datos desde el sistema fuente.

Extraer datos a veces puede ser algo tan sencillo como llamar a una API, recibir su respuesta como un JSON bien acomodadito y procesarla. O también puede ser tan engorroso como consultar una base de datos de producción usada por una aplicación, con esquemas que cambian con frecuencia y ojo, no sea cosa que el proceso de extracción que implementemos impacte en su rendimiento (spoiler: muy probablemente lo haga).

Es por esta y otras razones que ambas etapas pueden representar un cuello de botella en nuestra pipeline de datos, según nos indican en el Fundamentals.

¿Qué servicios de AWS nos ayudan en esta tarea? Tenemos varios. Lo ventajoso de todos ellos es que simplifican la carga operativa que podria representar el ingestar datos desde diversas fuentes.

1. AWS DataSync

2. AWS Database Migration Service (DMS)

3. Amazon AppFlow

4. Amazon Kinesis

Conclusión

Llegamos al final de esta primera entrega. En este post sentamos las bases repasando el Ciclo de Vida de la Ingeniería de Datos (CVID) y exploramos los 4 servicios clave de AWS para resolver la etapa de Ingesta:

Como ves, la clave no es memorizar cada botoncito de la consola web de AWS, sino entender qué tipo de ingestión requiere tu arquitectura (batch vs. streaming, archivos masivos vs. datos SaaS, migraciones puntuales vs. replicación continua) y elegir la herramienta que resuelva el problema con la menor complejidad operativa posible. Ese es el poder de la nube.

¿Qué se viene en la Parte 2?

Una vez que los datos entran a nuestro ecosistema, necesitamos guardarlos adecuadamente y darles forma.

En el próximo post nos meteremos de lleno en las dos etapas siguientes del ciclo: Almacenamiento y Transformación.

Vamos a analizar servicios fundamentales como Amazon S3, Amazon RDS, Amazon DynamoDB, Amazon Redshift, AWS Glue, Amazon EMR y AWS Lambda, entendiendo cómo combinar almacenamiento estructurado y no estructurado con procesamiento serverless o administrado.

Tags

Compartir