Athrun Data Intelligence


Esta es una publicación invitada en coautoría con LaunchDarkly.

El Dispersión deDarkly La plataforma de dirección de características equipa a los equipos de software para acortar proactivamente el aventura de dirigir software malo y aplicaciones de IA mientras acelera su velocidad de tirada. En esta publicación, exploramos cómo la plataforma de estudio interno de tirada de la plataforma de estudio interno hasta 14,000 tareas por día, con un aumento leve en los costos, a posteriori de portar de otra decisión de flujo de ventarrón Apache administrado por el proveedor a AWS, utilizando Flujos de trabajo administrados por Amazon para Apache Airflow (Amazon Mwaa) y Servicio de contenedores elásticos de Amazon (Amazon ECS). Lo guiamos a través de los problemas que nos encontramos durante la migración, la decisión técnica que implementamos, las compensaciones que hicimos y las lecciones que aprendimos en el camino.

El desafío

LaunchDarkly tiene una representación para permitir que los equipos de suscripción velocidad mano, monitoreen y optimicen el software en la producción. El equipo de datos centralizados es responsable de rastrear cómo el tirada deDarkly está progresando en dirección a esa representación. Adicionalmente, este equipo es responsable de la mayoría de las deposición de datos internos de la compañía, que incluyen ingerir, juntar e informar sobre los datos de la compañía. Algunos de los grandes conjuntos de datos que administramos incluyen el uso del producto, la décimo del cliente, los ingresos y los datos de marketing.

A medida que la empresa creció, nuestro comba de datos aumentó y la complejidad y los casos de uso de nuestras cargas de trabajo se expandieron exponencialmente. Mientras usaba otras soluciones basadas en el flujo de ventarrón administrados por el proveedor, nuestro equipo de estudio de datos enfrentó nuevos desafíos a tiempo para integrar e incorporar nuevos servicios de AWS, aldea de datos y una decisión de orquestación y monitoreo no descentralizada en diferentes equipos de ingeniería internamente de la estructura.

Descripción común de la decisión

LaunchDarkly tiene una larga historia del uso de servicios de AWS para resolver casos de uso comercial, como Escalera de nuestra ingestión de 1 TB a 100 TB por día con Amazon Kinesis Data Streams. Del mismo modo, la migración a Amazon MWAA nos ayudó a avanzar y optimizar nuestras tuberías de extracto, transformación y carga interna (ETL). Utilizamos implementaciones de monitoreo e infraestructura existentes como Code (IAC) y eventualmente ampliamos Amazon MWAA a otros equipos, estableciéndolo como una decisión de procesamiento de lotes centralizada que orquestina múltiples servicios de AWS.

La decisión para nuestros trabajos de transformación incluye los siguientes componentes:

Nuestro plan flamante para la migración de Amazon MWAA fue:

  1. Cree una nueva instancia de Amazon MWAA que use Terraform a posteriori de los estándares de servicio de tirada de tirada.
  2. Oriente y cambie (o rehost) nuestra pulvínulo de código desde el flujo de ventarrón 1.12 hasta el flujo de ventarrón 2.5.1 en el proveedor de nubes flamante a la misma interpretación en Amazon MWAA.
  3. Cortar todo Croquis acíclico dirigido (DAG) corre a AWS.
  4. Actualice a Airflow 2.
  5. Con la flexibilidad y la facilidad de integración internamente del ecosistema de AWS, realiza mejoras en torno a la contenedorización, la registro y la implementación continua.

Los pasos 1 y 2 se ejecutaron rápidamente: usamos el Proveedor de Terraform AWS y la infraestructura de Terraform de tirada existente para construir un módulo Amazon MWAA reutilizable inicialmente en Airflow Interpretación 1.12. Tuvimos una instancia de Amazon MWAA y las piezas de soporte (CloudWatch y Artifacts S3 Bucket) que se ejecutan en AWS en una semana.

Cuando comenzamos a cortar Dags a Amazon MWAA en el paso 3, nos encontramos con algunos problemas. En el momento de la migración, nuestra pulvínulo de código de flujo de ventarrón se centró en una implementación de operadores personalizados que creó una Entorno potencial de Python Para nuestros requisitos de carga de trabajo en el disco de trabajador de flujo de ventarrón asignado a la tarea. Por prueba y error en nuestro intento de migración, aprendimos que este cirujano personalizado dependía esencialmente del comportamiento y el aislamiento de los ejecutores de Kubernetes de Airflow utilizados en la plataforma flamante del proveedor de la montón. Cuando comenzamos a ejecutar nuestros DAG simultáneamente en Amazon MWAA (que usa Ejecutor de apio Los trabajadores que se comportan de forma diferente), nos encontramos con algunos problemas transitorios en los que el comportamiento de ese cirujano personalizado podría afectar a otros DAG en funcionamiento.

En este momento, dimos un paso antes y evaluamos soluciones para promover el aislamiento entre nuestras tareas de ejecución, finalmente aterrizando en Fargate para tareas de ECS Eso podría iniciarse desde Amazon MWAA. Inicialmente habíamos planeado mover nuestras tareas a su propio sistema arrinconado en circunstancia de que se ejecutaran directamente en el entorno de tiempo de ejecución de Python de Airflow. Conveniente a las circunstancias, decidimos avanzar este requisito, transformando nuestro tesina de rehosting en una migración de refactorización.

Elegimos Amazon ECS en Fargate por su facilidad de uso, Integraciones de flujo de ventarrón existentes (EcsRuntaskoperator), bajo costo y sobrecarga de dirección más desprecio en comparación con una decisión basada en Kubernetes como Servicio de Kubernetes de Amazon Elastic (Amazon EKS). Aunque una decisión que usa EK de Amazon mejoraría aún más el tiempo de aprovisionamiento de tareas, la decisión de Amazon ECS cumplió con los requisitos de latencia de las tuberías por lotes del equipo de estudio de datos. Esto fue aceptable porque estas consultas se ejecutan durante varios minutos periódicamente, por lo que un par de minutos más para rotar cada tarea de ECS no afectaron significativamente el rendimiento común.

Nuestra primera implementación de Amazon ECS involucró un solo contenedor que descarga nuestro tesina de un repositorio de artefactos en Amazon S3, y ejecuta el comando pasado a la tarea ECS. Activamos esas tareas usando el ECSRunTaskOperator En un DAG en Amazon MWAA, y creó un envoltorio cerca de del cirujano de Amazon ECS incorporado, por lo que los analistas e ingenieros del equipo de estudio de datos podrían crear nuevos DAG solo especificando los comandos con los que ya estaban familiarizados.

El subsiguiente diagrama ilustra los flujos de implementación de DAG y tareas.

Diagrama de flujo de trabajo de AWS de extremo a extremo que ilustra el despliegue automatizado de DAG y tareas a través de Github, Circleci, S3, MWAA y ECS

Cuando se completó nuestra implementación original de Amazon ECS, pudimos acortar todos nuestros DAG existentes a Amazon MWAA sin los problemas de concurrencia previos, porque cada tarea se ejecutó en su propia tarea aislada de Amazon ECS en Fargate.

En unos pocos meses, procedimos al paso 4 para poner al día nuestra instancia de Amazon MWAA a Airflow 2. Esta fue una aggiornamento de interpretación importante (de 1.12 a 2.5.1), que implementamos siguiendo el Supervisión de migración de Amazon MWAA y después derribando nuestros fortuna heredados.

El aumento de costos de asociar ECS de Amazon a nuestras tuberías fue leve. Esto se debió a que nuestras tuberías se ejecutan en horarios de lotes y, por lo tanto, no están activos en todo momento, y Amazon ECS en Fargate solo cobra por VCPU y fortuna de memoria solicitados para completar las tareas.

Como parte del paso 5 para Evaluación y mejoras continuasmejoramos nuestra implementación de Amazon ECS para impulsar registros y métricas a Datadog y CloudWatch. Podríamos monitorear los errores y el rendimiento del maniquí, y capturar fallas en las pruebas de datos cercano con el monitoreo de tirada de tirada existente.

Avanzar la decisión más allá de estudio interno

Durante la implementación original para el equipo de estudio de datos, creamos un módulo de Terraform de Amazon MWAA, que nos permitió rotar rápidamente más entornos de Amazon MWAA y compartir nuestro trabajo con otros equipos de ingeniería. Esto permitió que el uso de Airflow y Amazon MWAA para proveer tuberías por lotes internamente del producto LaunchDarkly en un par de meses poco a posteriori de que el equipo de estudio de datos completara la migración original.

El atestado Integraciones de servicios de AWS compatibles con Airflowel incorporado Paquete de proveedores de Amazony Amazon MWAA nos permitió expandir nuestro uso en los equipos para usar Amazon MWAA como orquestador genérico para tuberías distribuidas en servicios como los servicios como Amazon Athena, Servicio de pulvínulo de datos relacional de Amazon (Amazon RDS), y AWS Glue. Desde que adoptó el servicio, la incorporación de un nuevo servicio de AWS a Amazon MWAA ha sido sencillo, generalmente implica la identificación del cirujano o atractivo de flujo de ventarrón existente para usar, y luego conectando los dos servicios con Mandato de identidad y acercamiento de AWS (SOY).

Lecciones y resultados

A través de nuestro alucinación de orquestar tuberías de datos a escalera con Amazon MWAA y Amazon ECS, hemos adquirido ideas y lecciones valiosas que han hexaedro forma al éxito de nuestra implementación. Una de las lecciones secreto aprendidas fue la importancia del aislamiento. Durante la migración original a Amazon MWAA, encontramos problemas con nuestro cirujano de flujo de ventarrón personalizado que se basaba en el comportamiento específico de los ejecutores de Kubernetes utilizados en la plataforma flamante del proveedor de la montón. Esto destacó la requisito de la ejecución de tareas aisladas para sostener la confiabilidad y la escalabilidad de nuestras tuberías.

A medida que escalamos nuestra implementación, además reconocimos la importancia del monitoreo y la observabilidad. Mejoramos nuestro monitoreo y observabilidad integrándonos con herramientas como Datadog y CloudWatch, para que pudiéramos monitorear mejor los errores y el rendimiento del maniquí y capturar fallas en las pruebas de datos, mejorando la confiabilidad común y la transparencia de nuestras tuberías de datos.

Con la implementación de flujo de ventarrón preparatorio, estábamos ejecutando aproximadamente 100 tareas de flujo de ventarrón por día en un equipo y dos servicios (Amazon ECS y Copo de cocaína). Al momento de escribir esta publicación, hemos ampliado nuestra implementación a tres equipos, cuatro servicios y la ejecución de más de 14,000 tareas de flujo de ventarrón por día. Amazon MWAA se ha convertido en un componente crítico de nuestras tuberías de procesamiento por lotes, aumentando la velocidad de incorporar nuevos equipos, servicios y tuberías de nuestra plataforma de datos de semanas a días.

Mirando en dirección a el futuro, planeamos continuar iterando sobre esta decisión para expandir nuestro uso de Amazon MWAA a servicios adicionales de AWS como AWS Lambda y Servicio de huesito dulce simple de Amazon (Amazon SQS), y automatice aún más nuestros flujos de trabajo de datos para consentir una escalabilidad aún anciano a medida que nuestra empresa crece.

Conclusión

La orquestación de datos efectiva es esencial para que las organizaciones recopilen y unifiquen datos de diversas fuentes en un formato centralizado y apto para el estudio. Al automatizar este proceso en todos los equipos y servicios, las empresas pueden transfigurar los datos fragmentados en ideas valiosas para impulsar una mejor toma de decisiones. LaunchDarkly ha acabado esto mediante el uso de servicios administrados como Amazon MWAA y adoptando las mejores prácticas, como el aislamiento de tareas y la observabilidad, permitiendo a la compañía acelerar la innovación, mitigar los riesgos y acortar el tiempo de valía de sus ofertas de productos.

Si su estructura planea modernizar su orquestación de tuberías de datos, comience a evaluar su configuración de dirección de flujo de trabajo coetáneo, explorando las capacidades de Amazon MWAA y considerando cómo la contenedores podría beneficiar a sus flujos de trabajo. Con las herramientas y el enfoque adecuados, puede transfigurar sus operaciones de datos, impulsar la innovación y mantenerse por delante de las crecientes demandas de procesamiento de datos.


Sobre los autores

ASENA UYAR es ingeniero de software en LaunchDarkly, centrándose en construir productos de experimentación impactantes que capaciten a los equipos para tomar mejores decisiones. Con experiencia en matemáticas, ingeniería industrial y ciencias de datos, Asena ha estado trabajando en la industria tecnológica durante más de una lapso. Su experiencia albarca varios sectores, incluidos SaaS y Logistics, y ha de segunda mano una parte significativa de su carrera como ingeniero de plataforma de datos, diseñando y administrando sistemas de datos a gran escalera. A As ASena le apasiona usar la tecnología para simplificar y optimizar los flujos de trabajo, lo que hace una diferencia vivo en la forma en que operan los equipos.

Dean Verhey es ingeniero de plataforma de datos en LaunchDarkly con sede en Seattle. Ha trabajado en todos los datos en LaunchDarkly, que van desde pilas de informes de lotes internos hasta la transmisión de tuberías que alimentan las características del producto, como la experimentación y los cuadros de uso de la bandera. Antaño de Dispersión deDarkly, trabajó en ingeniería de datos para una variedad de empresas, incluidas las adquisiciones SaaS, las nuevas empresas de viajes y la dirección de registros de Fire/EMS. Cuando no está trabajando, a menudo puedes encontrarlo en el esquí de las montañas.

Daniel Lopes es un arquitecto de soluciones para ISV en AWS. Su enfoque es permitir que los ISV diseñen y construyan sus productos en columna con sus objetivos comerciales con todas las ventajas que los servicios de AWS pueden proporcionarles. Sus áreas de interés son arquitecturas basadas en eventos, computación sin servidor e IA generativa. El trabajo forastero, Daniel mentora a sus hijos en los videojuegos y la civilización pop.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *