Esta es una publicación invitada en coautoría de Michael Davies de Open Universities Australia.
En Open Universities Australia (OUA)Empoderamos a los estudiantes para explorar una amplia viso de títulos de las reconocidas universidades australianas, todos entregados a través del enseñanza en partidura. Ofrecemos caminos alternativos de los estudiantes para ganar sus aspiraciones educativas, proporcionándoles la flexibilidad y la accesibilidad para alcanzar sus objetivos académicos. Desde nuestra fundación en 1993, hemos apoyado a más de 500,000 estudiantes para ganar sus objetivos al proporcionar vías a más de 2,600 materias en 25 universidades en Australia.
Como ordenamiento sin fines de beneficio, el costo es una consideración crucial para OUA. Al revisar nuestro acuerdo para la útil de terceros que habíamos estado utilizando para nuestras tuberías de extracto, transformación y carga (ETL), nos dimos cuenta de que podríamos replicar gran parte de la misma funcionalidad utilizando Servicios web de Amazon (AWS) servicios como AWS Glue, Amazon AppFlowy Funciones del paso de AWS. Igualmente reconocimos que podríamos consolidar nuestro código fuente (gran parte de los cuales se almacenó en la útil ETL) en un repositorio de código que podría implementarse utilizando el Kit de mejora de la aglomeración de AWS (AWS CDK). Al hacerlo, tuvimos la oportunidad no solo de estrechar costos sino todavía de mejorar la visibilidad y la mantenimiento de nuestras tuberías de datos.
En esta publicación, le mostramos cómo utilizamos los servicios de AWS para reemplazar nuestra útil ETL de terceros existente, mejorando la productividad del equipo y produciendo una reducción significativa en nuestros costos operativos ETL.
Nuestro enfoque
La iniciativa de migración consistió en dos partes principales: construir la nueva inmueble y portar tuberías de datos desde la útil existente hasta la nueva inmueble. A menudo, trabajamos en uno y otro en paralelo, probando un componente de la inmueble mientras desarrollamos otro al mismo tiempo.
Desde el principio de nuestro alucinación de migración, comenzamos a delimitar algunos principios rectores que aplicaríamos a lo extenso del proceso de mejora. Estos fueron:
- Simple y modular – Use patrones de diseño simples y reutilizables con la beocio cantidad de partes móviles posible. Estructura la colchoneta de código para priorizar la facilidad de uso para los desarrolladores.
- Rentable -Use bienes de una guisa competente y rentable. Intente minimizar las situaciones en las que los bienes se ejecutan de guisa inactiva mientras esperan que se completen otros procesos.
- Continuidad del negocio – En la medida de lo posible, haga uso del código existente en circunscripción de reinventar la rueda. Llegue actualizaciones en etapas para minimizar las posibles interrupciones en los procesos comerciales existentes.
Descripción normal de la inmueble
El futuro diagrama 1 es la inmueble de detención nivel para la decisión.
Diagrama 1: Inmueble normal de la decisión, utilizando funciones de paso de AWS, Amazon Redshift y Amazon S3
Los siguientes servicios de AWS se utilizaron para dar forma a nuestra nueva inmueble ETL:
- Amazon Redshift -Un servicio de almacén de datos a escalera de petabyte totalmente administrado en la aglomeración. Amazon RedShift sirvió como nuestro repositorio de datos central, donde almacenamos datos, aplicaríamos transformaciones y pondríamos datos a disposición para su uso en observación e inteligencia empresarial (BI). Nota: El clúster aprovisionado en sí se implementó por separado de la inmueble ETL y permaneció sin cambios durante todo el proceso de migración.
- Kit de mejora de la aglomeración de AWS (AWS CDK) -El Kit de mejora de AWS Cloud (AWS CDK) es un situación de mejora de software de código amplio para delimitar la infraestructura en la aglomeración en el código y aprovisionarla a través de AWS CloudFormation. Nuestra infraestructura se definió como código utilizando el AWS CDK. Como resultado, simplificamos la forma en que definimos los bienes que queríamos implementar al usar nuestro estilo de codificación preferido para el mejora.
- Funciones del paso de AWS – Con las funciones de paso de AWS, puede crear flujos de trabajo, todavía llamados máquinas de estado, para crear aplicaciones distribuidas, automatizar procesos, orquestar microservicios y crear datos de datos y enseñanza obligatorio. Las funciones de AWS Step pueden apetecer a más de 200 servicios de AWS, incluidos AWS Glue, AWS Lambda y Amazon Redshift. Utilizamos las máquinas de estado de la función del paso AWS para delimitar, orquestar y ejecutar nuestras tuberías de datos.
- Amazon Eventbridge -Utilizamos Amazon EventBridge, el servicio de autobuses de eventos sin servidor, para delimitar las reglas y los horarios basados en eventos que desencadenarían nuestras funciones de estado de AWS Step Máquinas.
- AWS Glue – Un servicio de integración de datos, AWS Glue consolida las principales capacidades de integración de datos en un solo servicio. Estos incluyen el descubrimiento de datos, ETL actual, castidad, transformación y catalogación centralizada. Igualmente no tiene servidor, lo que significa que no hay infraestructura para tener la llave de la despensa. Incluye la capacidad de ejecutar scripts de Python. Lo usamos para ejecutar scripts de larga duración, como para ingerir datos de una API externa.
- AWS Lambda – AWS Lambda es un servicio de enumeración en extremo escalable y sin servidor. Lo usamos para ejecutar scripts simples, como para analizar un solo archivo de texto.
- Amazon AppFlow – Amazon AppFlow permite la integración simple con aplicaciones de software como servicio (SaaS). Lo usamos para delimitar flujos que cargarían periódicamente los datos de los sistemas operativos seleccionados en nuestro almacén de datos.
- Amazon Simple Storage Service (Amazon S3) -Un servicio de almacenamiento de objetos que ofrece escalabilidad líder en la industria, disponibilidad de datos, seguridad y rendimiento. Amazon S3 sirvió como nuestro campo de acción de puesta en estampa, donde almacenamos datos sin procesar ayer de cargarlos en otros servicios como Amazon Redshift. Igualmente lo usamos como repositorio para el código de almacenamiento que podría ser recuperado y utilizado por otros servicios.
Cuando sea práctico, utilizamos la estructura de archivos de nuestra colchoneta de código para delimitar bienes. Configuramos nuestro AWS CDK para referirnos al contenido de un directorio específico y delimitar un arbitrio (por ejemplo, una máquina de estado de funciones de paso de AWS o un trabajo de pegamento AWS) para cada archivo que encontró en ese directorio. Igualmente utilizamos archivos de configuración para poder personalizar los atributos de bienes específicos según sea necesario.
Detalles sobre patrones específicos
En el diagrama de inmueble 1 antedicho, mostramos múltiples flujos por los cuales los datos podrían ingerirse o descargar de nuestro almacén de datos de desplazamiento rojo de Amazon. En esta sección, destacamos cuatro patrones específicos con más detalle que se utilizaron en la decisión final.
Patrón 1: Transformación de datos, carga y descarga
Varias de nuestras tuberías de datos incluyeron pasos significativos de transformación de datos, que se realizaron principalmente a través de declaraciones SQL ejecutadas por Amazon Redshift. Otros requirieron ingestión o descarga de datos del almacén de datos, que podría realizarse de guisa competente utilizando declaraciones de copia o descarga ejecutadas por Amazon Redshift.
De acuerdo con nuestro objetivo de usar bienes de guisa competente, buscamos evitar ejecutar estas declaraciones internamente del contexto de un trabajo de pegamento AWS o la función de AWS Lambda porque estos procesos permanecerían inactivos mientras esperan que se complete la revelación SQL. En cambio, optamos por un enfoque donde las tareas de ejecución de SQL serían orquestadas por una máquina de estado de funciones de paso de AWS, lo que enviaría las declaraciones a Amazon Redshift y verificaría periódicamente su progreso ayer de marcarlas como exitosas o fallidas. El futuro diagrama 2 muestra este flujo de trabajo.
Diagrama 2: Transformación de datos, carga y patrón de descarga utilizando Amazon Lambda y Amazon Redshift internamente de una función de paso AWS
Patrón 2: Replicación de datos utilizando AWS Glue
En los casos en que necesitábamos replicar datos de una fuente de terceros, utilizamos AWS Glue para ejecutar un script que consultara la API relevante, analizaría la respuesta y acumular los datos relevantes en Amazon S3. Desde aquí, utilizamos Amazon RedShift para ingerir los datos utilizando una revelación de copia. El futuro diagrama 3 muestra este flujo de trabajo.
Diagrama 3: Copiar de API externa a desplazamiento al rojo con pegamento AWS
Nota: Otra opción para este paso sería usar Amazon Redshift Coche-Copypero esto no estaba adecuado en el momento del mejora.
Patrón 3: Replicación de datos utilizando Amazon AppFlow
Para ciertas aplicaciones, pudimos usar los flujos de APPFLOW de Amazon en circunscripción de los trabajos de pegamento de AWS. Como resultado, podríamos idealizar parte de la complejidad de consultar las API externas directamente. Configuramos nuestros flujos de APPFLOW de Amazon para acumular los datos de salida en Amazon S3, luego utilizamos una regla EventBridge basada en un Evento de noticia de Fin Flow Run (que es un evento que se publica cuando se completa una ejecución de flujo) para activar una carga en Amazon Redshift utilizando una revelación de copia. El futuro diagrama 4 muestra este flujo de trabajo.
Al usar Amazon S3 como un almacén de datos intermedio, nos dimos un control maduro sobre cómo se procesaron los datos cuando se cargó en Amazon Redshift, en comparación con la carga de los datos directamente al almacén de datos utilizando Amazon AppFlow.
Diagrama 4: Uso de Amazon AppFlow para integrar datos externos en Amazon S3 y copiar a Amazon Redshift
Patrón 4: ETL inverso
Aunque la mayoría de nuestros flujos de trabajo implican datos que se llevan al almacén de datos de fuentes externas, en algunos casos necesitábamos que los datos se exportaran a sistemas externas. De esta guisa, podríamos ejecutar consultas SQL con razonamiento compleja que se basan en múltiples fuentes de datos y usar esta razonamiento para respaldar los requisitos operativos, como identificar qué grupos de estudiantes deben cobrar comunicaciones específicas.
En este flujo, que se muestra en el futuro diagrama 5, comenzamos ejecutando una revelación de descarga en Amazon Redshift para descargar los datos relevantes en los archivos en Amazon S3. A partir de aquí, cada archivo es procesado por una función AWS Lambda, que realiza las transformaciones necesarias y envía los datos a la aplicación externa a través de una o más llamadas API.
Diagrama 5: flujo de trabajo de ETL inversa, enviando datos a fuentes de datos externas
Resultados
El proceso de rearquitectura y migración tardó 5 meses en completarse, desde el concepto auténtico hasta el desmantelamiento exitoso de la útil de terceros antedicho. La maduro parte del esfuerzo arquitectónico fue completado por un solo empleado a tiempo completo, y otros en el equipo asistieron principalmente con la migración de tuberías a la nueva inmueble.
Logramos reducciones de costos significativas, con los gastos finales en los servicios nativos de AWS que representan solo un pequeño porcentaje de costos proyectados en comparación con continuar con la útil ETL de terceros. Ocurrir a un enfoque basado en el código todavía nos dio una maduro visibilidad de nuestras tuberías e hizo el proceso de mantenerlos más rápido y más hacedero. En normal, la transición fue perfecta para nuestros usuarios finales, que pudieron ver los mismos datos y paneles durante la migración, con una interrupción mínima en el camino.
Conclusión
Al utilizar la escalabilidad y la rentabilidad de los servicios de AWS, pudimos optimizar nuestras tuberías de datos, estrechar nuestros costos operativos y mejorar nuestra agilidad.
Pete Allen, un ingeniero de observación de Open Universities Australia, dice: “La modernización de nuestra inmueble de datos con AWS ha sido transformadora. La transición de una plataforma externa a una pila de observación interna basada en código ha mejorado enormemente nuestra escalabilidad, flexibilidad y rendimiento. Con AWS, ahora podemos procesar y analizar datos con un cambio mucho más rápido, costos más bajos y maduro disponibilidad, lo que permite el mejora rápido y la implementación de soluciones de datos, lo que lleva a ideas más profundas y mejores decisiones comerciales «.
Fortuna adicionales
Sobre los autores
Michael Davies es ingeniero de datos en OUA. Tiene una amplia experiencia internamente de la industria educativa, con un enfoque particular en construir una inmueble de datos robusta y competente y tuberías.
Emma Arrigo es un arquitecto de soluciones en AWS, centrándose en clientes de educación en Australia. Se especializa en utilizar la tecnología en la aglomeración y el enseñanza obligatorio para invadir desafíos comerciales complejos en el sector educativo. La pasión de Emma por los datos se extiende más allá de su vida profesional, como lo demuestra su perro llamado datos.