Ya te contamos en el apartado de competencias de un Data Engineer qué es un Data Engineer, qué hace, cuáles son sus principales responsabilidades y habilidades. En esta ocasión veremos todo lo que necesitas saber sobre la suite de herramientas y tecnologías necesarias para llevar a cabo su trabajo.
Como todo empleo en IT, las tecnologías implicadas son muy cambiantes, por lo que te animamos a que sigas descubriendo las que mejor se adaptan a ti y a tu trabajo, ¡o incluso que desarrolles las tuyas propias!
Como puedes comprobar en el siguiente diagrama, el Data Engineer participa apoyando en prácticamente todas las etapas de un proyecto de datos, desde su carga y procesado para servirlos a los Datas Scientist, al despliegue de infraestructura, automatización de procesos, e incluso taggeado y control de acceso a tablas. Por tanto, será fundamental que el Data Engineer aprenda a manejarse con una serie de herramientas que le permitan abordar todas las etapas del proyecto.
1. Lenguajes de programación adecuados para Data Engineer
Es de vital importancia dominar al menos un lenguaje de programación que pueda servir para el tratamiento de los datos y de apoyo en la orquestación de procesos.
Los principales lenguajes de programación para un Data Engineer serían Python y SQL. Python es uno de los lenguajes más usados en todo el mundo y es de propósito general, lo que nos permite emplearlo en muchos tipos de tareas como ETL, analítica o Machine Learning. SQL es el lenguaje de consultas de BBDD por excelencia. Ambos están más que arraigados en la industria, por lo que los verás integrados en prácticamente todas las plataformas cloud.
¿Son los únicos lenguajes? Por supuesto que no, pero con ellos podrás llevar a cabo gran parte de las tareas de automatización y ETLs.
Otros lenguajes interesantes con los que ganamos en velocidad de cómputo serían Scala, C o C++. Y tampoco hay que olvidarse de Java, que continúa siendo de los más consolidados en el desarrollo de aplicaciones. En WeLearnData tienes otros artículos donde se profundiza en la correcta elección del lenguaje de programación.
2. Plataformas Cloud que usan los Data Engineers
Lo más probable es que todo el trabajo del Data Engineer se desarrolle en un entorno Cloud. Esto nos permite tener una gran flexibilidad y escalabilidad. Dentro de estas plataformas tenemos una ingente cantidad de recursos con los que cubrir las especificaciones del proyecto. Es posible que el Data Engineer no solo consuma esos recursos, sino que también tenga que desplegarlos y mantenerlos. Las principales plataformas Cloud son:
Se trata de plataformas de propósito general que incluyen SaaS, PaaS e IaaS, por lo que en este apartado excluiremos otras dedicadas exclusivamente a IA, modelos e integración de fuentes de datos.
AWS, Azure y GCP son las que llevan tiempo siendo líderes de mercado, pero tampoco hay que dejar de lado otras plataformas interesantes con gran cantidad de recursos orientados a data como IBM Cloud, Tencent Cloud o Alibaba Cloud.
Te recomendamos nuestra serie de artículos de Cloud donde tendrás más detalle y ejemplos prácticos sobre las distintas nubes y sus recursos
3. Bases de datos
Tradicionalmente los datos se han almacenado en fuentes de datos estructuradas, on premis, con gestores de bases de datos relacionales como SQLServer, MySQL, PostgreSQL, o no relacionales como mongoDB. Sin embargo, el mercado se está orientando cada vez más a herramientas serverless, con gran capacidad de cómputo y almacenamiento como Big Query, lo que nos permite despreocuparnos de la infraestructura que lleve por debajo.
Los gestores de bases de datos más utilizados a día de hoy son SQLServer, MySQL, Oracle, MongoDB, Hive, PostgreSQL, DB2 o Big Query.
No nos podemos quedar únicamente en los datos estructurados, puesto que se genera una gran cantidad de información desestructurada, en formato audio, imagen, código o texto, que pasaba desapercibida por nuestras plataformas digitales, pero que ha día de hoy supone una fuente de datos importantísima, y mejora considerablemente la comprensión de cómo es nuestro cliente, teniendo un impacto directo en las estrategias de marketing y ventas. Por tanto, no podemos dejar de lado en este apartado a fuentes de almacenamiento de blobs, documentos, audio, imágenes o código como Azure Blob Storage, Amazon S3 o Cloud Storage de GCP.
Para más detalle sobre cómo funcionan las bases de datos, te recomendamos nuestra serie de artículos de base de datos donde te explicamos los conceptos básicos, arquitecturas, principales fabricantes y tipos de bases de datos.
4. Procesamiento de datos masivos
Un Data Engineer se ocupa de todo el desarrollo y automatización de pipelines de datos con el objetivo de estructurar mejor la información y servir los datos en una capa de consumo mucho más amigable, y para ello necesita trabajar con grandes motores de procesamiento de datos, que pueden trabajar en batch o real time, es decir, en grandes bloques o en streaming.
Puesto que tecnologías que procesen datos hay muchas, en este apartado queremos hablar de la suite de herramientas de Apache, con las que podemos procesarlos de forma escalable, barata, en batch o real time y con APIs para varios lenguajes
En procesamiento masivo de datos, Spark y Hadoop son los que más destacados en la industria debido a que son open source, muy escalables y cuentan con una suite de APIs que cubren la mayor parte de casuísticas. Spark nos puede servir tanto para batch como real time, lo podemos usar con Python, Java, R o Scala y corre sobre Hadoop, lo que permite beneficiarnos de su sistema de almacenamiento HDFS y de su procesamiento de datos MapReduce. Por otro lado, si lo que necesitamos es procesar los datos en real time, dos buenas opciones serían Kafka o Spark streaming.
5. Data Cloud – Plataformas integrales
Existen soluciones cloud que vienen a sustituir varias piezas anteriormente mencionadas, lo que permite tener una mayor integración de las herramientas y procesos, de manera escalable, centralizada, y suponen un ahorro de tiempo y recursos en despliegues y mantenimiento de infraestructura.
Algunos de los servicios incluidos en estas plataformas serían: ingestas automáticas, storage, APIs, pipelines, algoritmos ya implementados de IA y Machine Learing, monitorización y herramientas de BI. Plataformas como Snowflake, databricks, dataiku o Amazon Redshift.
Cabe mencionar también algunas herramientas que están a medio camino entre un Data Warehouse clásico y una plataforma de datos cloud, como son Amazon Athenea, Azure Data Factory o Big Query. No se quedan en la simple explotación del dato, sino que ofrecen servicios escalables, de integración de datos y serverless.
Por suerte, hay una gran diversidad de herramientas, por lo que es muy probable que encontremos una plataforma que se adapte a nuestro proyecto, siempre que hagamos un buen estudio de mercado y tengamos claras las necesidades del proyecto, costes, y sus sus futuras evoluciones.
6. Orquestación de procesos
En una arquitectura de datos empresarial conviven muchos procesos desarrollados en distintas tecnologías. El Data Engineer tiene que encargarse de coordinar todos estos procesos de forma automática, con un sistema de monitorizado, y que sea tolerante a fallos.
Existen ya herramientas que facilitan este trabajo como Airflow, Composer o Dagster, aunque siempre podemos optar por orquestar nosotros los servicios productivos mediante el uso de funciones lambdas, triggers u otros recursos cloud que permitan programar e interconectar varios procesos. Las plataformas cloud ofrecen una gran cantidad de recursos con los que podremos por ejemplo ejecutar un pipeline de procesado de datos a una hora concreta, que luego esta ejecución sea el trigger de otro proceso, que si se produce un fallo llegue un aviso por Slack, etc…
Pásate por nuestro artículo de procesamiento de datos batch en un Data Lake para conocer más detalles sobre cómo se orquestan los pipelines de datos.
7. Visualización y reporting para Data Engineers
Aunque analizar datos no es la actividad principal del Data Egineer, sus “clientes” son las unidades de negocio y Data Scientist que consumen los datos de la capa analítica, por lo que tendrá que trabajar mano a mano con aquellas tecnologías donde se consuma el dato, ya sean de reporting o incluso un Data Warehouse de la capa analítica.
Estas herramientas también le sirven para monitorizar y llevar a cabo seguimientos de sus procesos, además de ser un gran apoyo para la comunicación y presentación de resultados. Las más importantes serían Tableau, Power BI, Looker o Qlik Sense.
Es fundamental realizar un buen estudio de mercado a la hora de elegir qué tecnología se adapta mejor a la empresa, por lo que hay que tener muy en cuenta factores como el coste de la herramienta y las licencias, flexibilidad, niveles de acceso, aspecto visual, ¿es gratis compartir mi dashboard con otros departamentos?
8. Gestión del dato y Data Governance
Se trata de una responsabilidad común a todos los implicados en proyectos de datos, y el Data Engineer no está exento de ello (aunque al igual que en reporting, no es su actividad principal).
Como parte de su trabajo es crear estructuras de datos para la capa analítica, tiene que colaborar en el metadatado y taggeado, y no está de más que defina una capa de control y acceso a las tablas. Estas son algunas de las soluciones más usadas hoy en día son Google Cloud Dataplex, Alation o Atlan.
9. Monitorización, testing y logs
Cuanto más automaticemos nuestro trabajo, mejores herramientas de control necesitaremos. En ocasiones habrá que desarrollar nuestros propios sistemas de control y reporting, o podremos usar el propio de la plataforma cloud que estemos empleando. Herramientas que nos ayudan en la gestión de logs de aplicaciones son Datadog o Cloud Logging de GCP.
No podemos dejar de lado el testing de todos los servicios que se pongan en producción, e intentar automatizar e integrar lo mejor posible ese testing. Algunas herramientas interesantes serían Logtail, JUnit o pytest.
10. DevOps y puesta en producción
Existe un rol dedicado exclusivamente a DevOps, pero no siempre te lo vas a encontrar en la empresa, va a depender principalmente de su tamaño, por lo que es posible que el Data Engineer asuma esa responsabilidad y tenga que ocuparse de la integración y puesta en producción de software en la infraestructura IT de la compañía. Algunas de esas herramientas serían: Ansible para automatización de infraestructura, Docker para ejecutar de forma aislada microservicios en contenedores, Kubernetes para la orquestación de contenedores, Jenkins para flujos de trabajo, o herramientas de IaC (Infraestructure as Code) como Terraform o CloudFormation para definir infraestructura de manera programática.
Otro aspecto fundamental es saber trabajar con sistemas operativos Unix, que es el sistema operativo sobre el que normalmente se despliega software. ¿No es recomendable desarrollar en Windows? En Windows se puede desarrollar perfectamente y se ha adaptado muy bien a muchas plataformas de software, incluso puedes tener un Linux integrado mediante el WSL. No obstante, La mayoría de despliegues de software y maquinas virtuales en cloud son en sistemas operativos Linux, por lo que se recomienda saber trabajar con este sistema operativo. Tienes otros artículos en WeLearnData donde se aborda este tema más en profundidad. No obstante, también cabe la posibilidad que te de igual el sistema operativo que manejes porque quizá la mayor parte de tu trabajo se centre en una herramienta SaaS, y por tanto lo único que necesites es un navegador y conexión a internet.
11. Otros
Hay una serie de tecnologías que van más ligadas a la metodología de trabajo, o que forman parte del background del Data Engineer (es decir, se dan por sabidas), pero que tenemos que mencionar en este artículo.
Una de ellas sería el control de versiones de código. A día de hoy el más utilizado es Git, acompañado de repositorios Cloud como GitHub o Bitbucket.
En cuanto a metodología de trabajo, es importante que el Data Engineer sepa manejarse con metodologías ágiles, y se adapte a las herramientas implantadas en su equipo para el seguimiento y desarrollo de proyectos. Una plataforma que se usa bastante es Atlassian, donde integra varias aplicaciones como Jira, Trello o Confluence.
Otro punto fuerte para los Data Engineers es su conocimiento en redes de comunicaciones. Debe apoyarse en herramientas que no son tanto de desarrollo de software o despliegue de infraestructura, sino más bien de apoyo. Algunas de ellas son Filecilla o Putty para conectarnos a servidores remotos, o Postman para conexiones HTTP.
Conclusiones
Resulta abrumadora la cantidad de tecnologías y herramientas que debería conocer un Data Engineer, por lo que es muy complicado intentar abarcarlas todas. En primer lugar, y antes de que te vuelvas loco con tanta tecnología, te recomendamos que lo primero que aprendas es la teoría. Que sepas programar, razonar, diseñar soluciones, teoría de redes, de bases de datos, y con ello vendrán las herramientas de trabajo que te hemos descrito en este artículo, no al revés.
Ahora bien, dentro de la ingente cantidad de herramientas, intenta conocer funcionalmente cómo trabajar con todas las que puedas (o tengas más a mano en el trabajo), pero céntrate en un nicho concreto y especialízate en ese nicho.
Intenta focalizarte en aquellas que consideres que vayan a ser más longevas. Es decir, céntrate primero en un lenguaje como Python, que está ya muy consolidado en el sector y con perspectiva de seguir creciendo, en vez de hacerte experto de una herramienta de BI concreta, puesto que esa herramienta de BI no tiene por qué servirte en otra empresa, y sin embargo, con Python o SQL es probable que vuelvas a trabajar. Además, gran parte del código que hayas desarrollado en Python lo podrás reutilizar en otros proyectos.
Y respecto al cloud, si te estás preguntando en cuál centrarte, lo primero que tienes que hacer es analizar el mercado y ver cuáles son los clouds más demandados dentro del tipo de empresa en la que te gustaría trabajar. Y lo segundo y no menos importante es consolidar bien la teoría y los fundamentos, puesto que si entiendes de redes, despliegues, recursos cloud y control de usuarios en AWS, no te va a resultar difícil migrarte a Azure o a GCP.
Pingback: We Learn Data