En esta cuarta semana del curso, se integran los conceptos aprendidos en las semanas anteriores sobre la recopilación de requisitos, el ciclo de vida de la ingeniería de datos y la arquitectura de datos. Se abordará un escenario práctico que incluye la definición de requisitos funcionales y no funcionales, así como la selección de herramientas y tecnologías para la implementación de sistemas en la nube.
El proceso se puede dividir en los siguientes pasos:
Al final de esta semana, los participantes estarán equipados para traducir requisitos en un diseño arquitectónico y construir un sistema en la nube, aplicando las mejores prácticas y conceptos discutidos a lo largo del curso.
En este módulo, se exploran los aspectos fundamentales del marco de pensamiento de un ingeniero de datos, centrándose en la recopilación de requisitos y la jerarquía de necesidades que deben ser consideradas para el éxito de un proyecto de ingeniería de datos.
La jerarquía de necesidades en el contexto de la ingeniería de datos se puede desglosar de la siguiente manera:
Ejemplos: crecimiento de ingresos, aumento de cuota de mercado, expansión de la base de usuarios.
Necesidades de los Stakeholders
Requieren sistemas de datos robustos.
Requisitos del Sistema
En el siguiente video, se presentará a Matt Housley, un experto en la interacción con ejecutivos de C-suite, quien compartirá consejos sobre cómo comenzar en la ingeniería de datos y cómo involucrarse con líderes empresariales para resolver problemas de negocio.
Este resumen proporciona una visión general de los conceptos clave discutidos en el video sobre la recopilación de requisitos en la ingeniería de datos, destacando la importancia de alinear las necesidades de los stakeholders con los objetivos del negocio.
En este documento se resumen las ideas y conceptos discutidos en la conversación entre Joe y Matt Housley sobre la ingeniería de datos, su libro "Fundamentals of Data Engineering" y el curso relacionado. Se abordan temas como la motivación detrás del libro, el público objetivo, la importancia de los conceptos fundamentales y consejos para quienes desean ingresar al campo de la ingeniería de datos.
$## Consejos para Ingresar a la Ingeniería de Datos
La conversación entre Joe y Matt destaca la importancia de tener una base sólida en conceptos de datos y la necesidad de un enfoque práctico para quienes desean ingresar al campo de la ingeniería de datos. La combinación del libro y el curso proporciona un camino claro para desarrollar las habilidades necesarias en este campo en crecimiento.
| Concepto | Descripción |
|---|---|
| Motivación del Libro | Abordar la falta de materiales educativos en ingeniería de datos. |
| Público Objetivo | Técnicos que desean transitar a ingeniería de datos y gerentes de producto. |
| Relación Libro-Curso | Complementariedad entre teoría y práctica. |
| Consejos para Nuevos Ingenieros | Aprender conceptos básicos, experimentar con herramientas, desarrollar un marco mental. |
Este documento proporciona una visión general de la conversación y los temas tratados, ofreciendo un recurso útil para aquellos interesados en la ingeniería de datos.
En este documento se presenta un resumen de la conversación entre un ingeniero de datos recién contratado y el CTO de una empresa de comercio electrónico. Se discuten los objetivos comerciales y las iniciativas tecnológicas que impactarán el trabajo del ingeniero de datos.
| Herramienta | Descripción |
|---|---|
| Kinesis | Versión nativa de Amazon para streaming. |
| Kafka | Plataforma de streaming que se considerará para escalar ciertos pipelines. |
El ingeniero de datos tiene un papel crucial en la modernización de los sistemas y en la mejora de la calidad de los datos, lo que contribuirá al éxito de las iniciativas tecnológicas de la empresa. Se espera que el ingeniero adquiera habilidades en Kinesis y Kafka para gestionar y expandir las capacidades de streaming.
Este resumen proporciona una visión general de los temas discutidos en la conversación, destacando los objetivos, desafíos y el papel del ingeniero de datos en la empresa.
En este documento se resumen las ideas y conceptos discutidos en la conversación entre un ingeniero de datos y un gerente de marketing de productos. Se abordan las necesidades y expectativas del equipo de marketing en relación con dos iniciativas clave: la creación de paneles de control (dashboards) para métricas de ventas de productos y un sistema de recomendaciones de productos.
Necesidad de datos en tiempo real para capturar picos de demanda.
Sistema de Recomendaciones de Productos
Se pueden observar tendencias a largo plazo, pero se requiere información en tiempo real para actuar rápidamente.
Necesidades:
Sistema básico que muestra los productos más populares de la semana, sin personalización.
Necesidades:
La conversación entre el ingeniero de datos y el gerente de marketing resalta la importancia de entender las necesidades específicas del equipo de marketing para desarrollar soluciones efectivas. Se identificaron áreas clave para mejorar tanto en los dashboards como en el sistema de recomendaciones, lo que permitirá a la empresa tomar decisiones más informadas y mejorar la retención de clientes.
Este resumen proporciona una visión clara de las necesidades del equipo de marketing y los objetivos del ingeniero de datos en el contexto de la ingeniería de datos.
En este video, se analiza la conversación mantenida con el departamento de marketing sobre sus necesidades. Se profundiza en la documentación de los requisitos recopilados, utilizando una jerarquía que permite visualizar la conexión entre los requisitos del sistema y los objetivos comerciales de alto nivel.
Los objetivos comerciales identificados son: - Continuar con la trayectoria de crecimiento de la empresa. - Enfocarse en la retención y lealtad del cliente. - Expandirse a nuevos mercados y ofrecer nuevos productos. - Ser impulsados por datos en la toma de decisiones.
Los stakeholders considerados son: - Científico de datos. - Gerente de marketing de productos.
Requisito Funcional: - El sistema de datos debe servir datos transformados que no tengan más de una hora de antigüedad.
Requisito Funcional: - El sistema debe proporcionar los datos de entrenamiento adecuados para el desarrollo del modelo de recomendación. - Debe ser capaz de ingerir, transformar y servir datos de usuario al modelo entrenado, y devolver los resultados del modelo (IDs de productos) a la plataforma de ventas.
Se han documentado dos requisitos funcionales básicos: 1. Proveer datos transformados con una antigüedad máxima de una hora para los tableros de análisis. 2. Proveer datos de entrenamiento y permitir la interacción entre el modelo de recomendación y la plataforma de ventas.
En el próximo video, se abordará la documentación de requisitos no funcionales y se llevará a cabo una conversación con un ingeniero de software que mantiene la plataforma de ventas, que es el sistema fuente del cual se estará ingiriendo datos.
Este resumen proporciona una visión clara de las necesidades del departamento de marketing y cómo se traducen en requisitos funcionales para el sistema de datos.
En este documento se resumen las ideas y conceptos discutidos en la conversación entre un ingeniero de datos y un ingeniero de software sobre la ingesta de datos desde una plataforma de ventas. Se abordan los desafíos comunes en el flujo de datos, la comunicación con los propietarios de sistemas de origen y las mejores prácticas para mitigar problemas relacionados con la disponibilidad de datos y cambios en el esquema.
Cambios en el esquema que rompen los scripts de procesamiento.
Comunicación con Propietarios de Sistemas
Discusión sobre cómo anticipar y manejar interrupciones o cambios en los datos.
Soluciones Propuestas
Implementación de una API para acceder a los datos sin afectar el sistema de producción.
Problemas Potenciales
Fallos en servidores o centros de datos que pueden hacer que los datos no estén disponibles temporalmente.
Cambios en el Esquema de la Base de Datos
| Problema | Solución Propuesta |
|---|---|
| Datos no disponibles temporalmente | Notificación automática a los usuarios de datos |
| Cambios en el esquema | Notificación anticipada sobre cambios en el esquema |
| Acceso directo a la base de datos | Configuración de una réplica de solo lectura y API |
La colaboración entre ingenieros de datos y propietarios de sistemas es crucial para construir sistemas de datos robustos. La comunicación abierta y la planificación anticipada son fundamentales para mitigar problemas y asegurar un flujo de datos continuo y confiable. En el próximo video, se explorarán más a fondo los requisitos no funcionales del sistema.
En este documento se resumen las ideas y conceptos discutidos en el video "Documenting Nonfunctional Requirements" del curso de Introducción a la Ingeniería de Datos. Se abordan los requisitos no funcionales necesarios para los sistemas de datos, así como la importancia de documentarlos adecuadamente.
Durante la conversación con el ingeniero de software, se identificaron varios puntos clave:
La documentación se organiza en un formato jerárquico que incluye:
Se han documentado dos requisitos funcionales:
Los requisitos no funcionales son características o atributos que el sistema debe tener para funcionar correctamente. A continuación se presentan algunos ejemplos:
El sistema debe ser capaz de escalar para ingerir, transformar y servir el volumen de datos esperado durante el máximo nivel de actividad de los usuarios, manteniendo los requisitos de latencia.
Confiabilidad y Mantenibilidad:
El sistema debe tener una latencia de menos de un segundo desde la ingestión de datos del usuario hasta la entrega de datos de recomendación.
Escalabilidad:
El sistema debe ser capaz de escalar para manejar el número máximo de usuarios concurrentes en la plataforma.
Confiabilidad:
Es fundamental entender los sistemas no solo en términos de su funcionalidad, sino también en cómo esa funcionalidad servirá a los interesados y a los objetivos finales del negocio. La documentación de requisitos no funcionales es crucial para garantizar que los sistemas de datos sean robustos y cumplan con las expectativas de rendimiento y confiabilidad.
En el siguiente video, se resumirán los temas principales de esta lección antes de elegir herramientas y tecnologías basadas en los requisitos del sistema.
En esta lección se aborda la importancia de la recolección de requisitos en la ingeniería de datos, enfatizando la necesidad de comprender cómo los sistemas que se construyen aportan valor a los interesados. Se discuten las mejores prácticas para identificar necesidades, documentar hallazgos y evaluar compromisos en el desarrollo de sistemas de datos.
Conversar con diversas personas en la organización, desde líderes hasta científicos de datos y ingenieros de software.
Preguntas Abiertas:
Realizar preguntas abiertas para comprender los sistemas actuales, problemas potenciales y las acciones que los interesados planean tomar con los datos.
Documentación:
Documentar todos los hallazgos es esencial para confirmar que el sistema propuesto satisfará las necesidades de los interesados y de la empresa.
Requisitos Funcionales y No Funcionales:
Una vez que se comprenden las necesidades, se deben redactar requisitos funcionales y no funcionales para el sistema.
Evaluación de Compromisos:
| Aspecto | Descripción |
|---|---|
| Tiempo | Duración del proyecto. |
| Alcance | Extensión del trabajo a realizar. |
| Costo | Presupuesto asignado. |
La recolección de requisitos es fundamental para el éxito en la ingeniería de datos. A través de la identificación de interesados, la documentación adecuada y la evaluación de compromisos, se pueden construir y mantener sistemas de datos de alta calidad dentro de un cronograma y presupuesto predecibles. En la próxima lección, se explorarán los costos y capacidades de diferentes herramientas y tecnologías para la construcción de sistemas.
¡Nos vemos en la próxima lección!
En esta lección, se simula un proyecto desde la recolección de requisitos hasta la implementación, utilizando los conceptos aprendidos en el curso de Introducción a la Ingeniería de Datos. Aunque en la práctica este proceso puede llevar semanas, meses o incluso años, en esta actividad se realizará en un tiempo reducido.
Material Adicional: Se proporcionará la transcripción de la conversación para facilitar la revisión.
Extracción de Requisitos:
Se completará un cuestionario para evaluar la comprensión de los requisitos.
Exploración de Herramientas de AWS:
Se completará un segundo cuestionario para identificar qué herramientas satisfacen los requisitos del sistema de datos.
Ejercicio Práctico en el Laboratorio:
Este ejercicio es una simulación breve y limitada en comparación con la experiencia real de un ingeniero de datos. Sin embargo, es útil para imaginar el proceso de construcción de un sistema sin las restricciones habituales del entorno laboral.
Se invita a los participantes a trabajar a través de los materiales de lectura y cuestionarios, y luego proceder a la práctica en el laboratorio para aplicar lo aprendido.
En esta conversación, se discuten los avances en el desarrollo de un sistema de recomendación basado en contenido para un equipo de marketing. Se abordan aspectos técnicos del modelo, la estructura de los datos de entrenamiento y las expectativas de rendimiento del sistema.
| Tipo de Característica | Ejemplo de Atributos |
|---|---|
| Características del Usuario | Número de cliente, Límite de crédito, Ciudad, Código postal, País |
| Características del Producto | Código de producto, Cantidad en stock, Precio de compra, MSRP, Línea de producto, Escala de producto |
| Valor de Calificación | Valor de 1 a 5 que representa la calificación del usuario para el producto |
La conversación destaca la importancia de un sistema de recomendación eficiente y escalable, que pueda adaptarse a las necesidades cambiantes del negocio y proporcionar recomendaciones relevantes a los usuarios en tiempo real. Se requiere una colaboración continua entre los equipos de marketing y desarrollo para asegurar el éxito del proyecto.
En este documento se resumen los conceptos y herramientas discutidos en el video sobre servicios de AWS para el procesamiento de datos por lotes. Se abordan las decisiones tecnológicas necesarias para construir un sistema de datos, centrándose en las opciones de AWS para la ingesta, transformación y almacenamiento de datos.
Después de recopilar los requisitos del sistema, es crucial traducirlos en elecciones de herramientas y tecnologías. La elección de la tecnología adecuada depende de los requisitos específicos del proyecto, similar a elegir un vehículo para el transporte.
Se presentan dos vehículos como analogía para ilustrar la importancia de entender los requisitos: - Jumbo Jet - Rango: 10,000 millas náuticas - Velocidad máxima: 1,100 km/h - Capacidad: 250+ pasajeros - Costo: 70,000
La elección del vehículo depende de factores como la distancia, el número de pasajeros y el presupuesto.
Para el sistema de datos que se trabajará, se identifican dos componentes: por lotes y streaming. Este documento se centra en el procesamiento por lotes, específicamente en el paradigma de Extract, Transform, Load (ETL).
Existen varias maneras de implementar el proceso ETL en AWS:
EC2: Crear una instancia y escribir scripts para la ingesta y transformación. Sin embargo, esto puede ser complicado y requiere gestión de seguridad y software.
AWS Lambda: Permite ejecutar código en respuesta a eventos. Sin embargo, tiene limitaciones como un tiempo de espera de 15 minutos y restricciones de memoria y CPU.
Ideal para proyectos que requieren conveniencia y facilidad de uso.
Amazon EMR Serverless
La elección del almacenamiento depende del caso de uso: - Amazon RDS: Para datos tabulares normalizados. - Amazon Redshift: Para consultas analíticas complejas en grandes conjuntos de datos, aunque a un costo más alto. - Amazon S3: Comúnmente utilizado como área de preparación, flexible y escalable, ideal para almacenar cualquier tipo de datos.
Este documento proporciona una visión general de las herramientas y servicios de AWS para el procesamiento de datos por lotes. En la próxima sesión, se explorarán las herramientas para el procesamiento de datos en streaming.
| Servicio | Ventajas | Desventajas |
|---|---|---|
| AWS Lambda | Ejecución en respuesta a eventos | Limitaciones de tiempo y recursos |
| Amazon Glue ETL | Descubrimiento automático y fácil de usar | Menos control sobre el procesamiento |
| Amazon EMR | Mayor control y flexibilidad | Complejidad en la gestión |
| Amazon RDS | Ideal para datos tabulares | Costos variables |
| Amazon Redshift | Potente para análisis complejos | Costo elevado |
| Amazon S3 | Flexible y escalable | Puede requerir gestión adicional |
Este resumen proporciona una base sólida para entender las opciones disponibles en AWS para el procesamiento de datos por lotes.
En este documento se resumen los conceptos y servicios de AWS relacionados con la construcción de pipelines de streaming, complementando lo aprendido sobre pipelines por lotes. Se explorarán las opciones disponibles en AWS para manejar datos en tiempo real, así como las mejores prácticas para su implementación.
Los datos de streaming pueden provenir de diversas fuentes, tales como: - Dispositivos IoT - Datos de clics de sitios web o aplicaciones móviles - Cambios en bases de datos mediante un proceso conocido como Change Data Capture (CDC)
Requiere gestión de software, seguridad y complejidad de implementación.
Funciones Lambda:
A continuación, se presentan los principales servicios de AWS que soportan cargas de trabajo de streaming:
| Servicio | Descripción |
|---|---|
| Amazon Kinesis Data Streams | Permite la ingesta de datos en tiempo real. Acepta datos en varios formatos (JSON, XML, etc.) y permite múltiples consumidores para procesar los datos. |
| Amazon Managed Streaming for Apache Kafka (MSK) | Servicio gestionado que facilita la construcción y ejecución de aplicaciones que utilizan Apache Kafka para procesar datos de streaming. Soporta versiones de código abierto de Kafka. |
| Amazon Data Firehose | Facilita la lectura de datos de un stream y su almacenamiento en destinos como S3 o Redshift, sin necesidad de escribir código personalizado. |
Existen múltiples servicios en AWS que facilitan la implementación de pipelines de streaming. Es importante evaluar el caso de uso específico para elegir la herramienta adecuada. En el próximo ejercicio práctico, se aplicarán estos conceptos para implementar un pipeline de batch y streaming.
¡Diviértete y nos vemos en el próximo curso!
En este documento se resumen los pasos para implementar un pipeline por lotes y de streaming para un sistema de recomendación, utilizando AWS. Se detallan las herramientas y procesos necesarios para preparar los datos de entrenamiento y almacenar las salidas del sistema de recomendación.
El laboratorio se centra en la arquitectura del pipeline por lotes, que transforma los datos y los prepara para el entrenamiento del sistema de recomendación.
bash
mysql -h <endpoint> -u admin -p
sql
SELECT * FROM ratings LIMIT 20;
bash
./setup.sh
cd terraform
terraform init
terraform plan
terraform apply
bash
aws glue start-job-run --job-name <nombre_del_trabajo>
ratings_ml_training.Los archivos de Terraform se organizan en módulos. Cada módulo contiene los recursos necesarios para una parte específica del laboratorio. Asegúrate de declarar los módulos en el archivo principal de Terraform.
| Número de Cliente | Código de Producto | Calificación |
|---|---|---|
| 1 | A123 | 5 |
| 2 | B456 | 4 |
| 3 | C789 | 3 |
Hasta este punto, hemos transformado los datos de calificaciones en un formato adecuado para entrenar el sistema de recomendación. En la siguiente parte del laboratorio, se configurará una base de datos vectorial para almacenar las salidas del modelo de recomendación.
En este documento se resumen los pasos para configurar una base de datos vectorial que almacenará las salidas de un modelo de recomendación. Se abordarán los elementos clave del proceso, incluyendo la interacción con un bucket de S3, la creación de la base de datos y la carga de embeddings.
En esta sección, se configurará una base de datos vectorial que almacenará los resultados de un modelo de recomendación previamente entrenado. Los datos transformados se encuentran en un bucket de S3, que es compartido con los científicos de datos.
El bucket de S3 contiene tres carpetas principales: - embeddings: Contiene los embeddings de usuarios y productos. - models: Almacena el modelo entrenado que se utilizará para inferencias. - scalers: Incluye los objetos utilizados en la pre-procesamiento del entrenamiento.
En la carpeta de embeddings, se encuentran dos archivos CSV: - item_embeddings.csv: Embeddings de los productos. - user_embeddings.csv: Embeddings de los usuarios.
Estos embeddings se utilizarán para encontrar productos similares a los que un usuario ha agregado a su carrito de compras.
Para crear la base de datos vectorial, se seguirán los siguientes pasos:
main.tf y descomentar la sección que declara el módulo de la base de datos vectorial.Abrir el archivo outputs.tf y descomentar las variables de salida del módulo de la base de datos vectorial.
Crear Recursos:
bash
terraform init
terraform plan
terraform applyConfirmar la creación de recursos. La creación de la base de datos PostgreSQL puede tardar alrededor de siete minutos.
Obtener Credenciales:
Para cargar los embeddings en la base de datos vectorial, se realizarán los siguientes pasos:
Especificar el nombre del bucket de S3 en las sentencias SELECT.
Conectar a la Base de Datos:
Ingresar la contraseña cuando se solicite.
Ejecutar Sentencias SQL:
Una vez que se ha configurado la base de datos vectorial y se han cargado los embeddings del modelo, se procederá a la siguiente parte del laboratorio, que se centrará en el pipeline de streaming para pasar datos de usuarios y productos al sistema de recomendación.
| Paso | Descripción |
|---|---|
| 1. Modificar Archivos | Descomentar secciones en main.tf y outputs.tf. |
| 2. Crear Recursos | Ejecutar comandos de Terraform para crear la base de datos. |
| 3. Obtener Credenciales | Copiar el endpoint, nombre de usuario y contraseña. |
| 4. Cargar Embeddings | Especificar el bucket en el archivo SQL y ejecutar las sentencias. |
| 5. Verificar Carga | Listar tablas para confirmar la carga de embeddings. |
En el próximo video, se explorará la parte del pipeline de streaming que se utilizará para pasar datos al sistema de recomendación y almacenar las recomendaciones en un bucket de S3.
En este documento se resumen los pasos necesarios para implementar un pipeline de streaming utilizando un sistema de recomendación y una base de datos vectorial. Se describen los componentes arquitectónicos, la configuración de variables ambientales y el proceso de carga de datos en un bucket de S3.
El flujo de trabajo del streaming se compone de los siguientes elementos:
Guardar los cambios.
Implementación del Pipeline de Streaming:
main.tf que declara un módulo de streaming.bash
terraform init
terraform plan
terraform applyNota: Terraform no creará Kinesis Data Streams ya que ya está proporcionado como un recurso del laboratorio.
Verificación de la Carga de Datos:
Verificar que los datos están particionados por año, mes, día y hora para facilitar la localización.
Revisión de Logs:
¡Ahora es tu turno de intentar este laboratorio!