Organización de ETLs en spin
Como se dijo en la arquitectura general de Spin, se tiene una infraestructura 100% cloud con AWS como nube principal. La arquitectura de datos esta gira en torno a AWS igualmente y los servicios implementados dependen directamente de los eventos generados por los microservicios desplegados en spring boot.
Los eventos generados a través de Kinesis (ver KINESIS) son depositados en s3. El datalake nace de todos los streams recibidos de los microservicios. Existen 4 actualmente: Enrollment, instrument-management, payment y profile management.
AWS Glue es la herramienta principal para hacer procesos de ETL dentro de spin. AWS Glue tiene conexiones con el datalake (S3) y a veces es administrado desde nuestro orquestador Airflow (MWAA). Los eventos contenidos en los streams son colocados en el datalake con ayuda de una lambda desarrollada por BE, y son escaneados con crawlers creados en AWS Glue para crear tablas que pueden ser consultadas con Athena. Esta es la herramienta principal para hacer queries directas sobre el datalake montado en s3.
Adicional a los eventos depositados en los datalakes se cuentan con archivos Batch recibidos por vendors. Los procesos batch igualmente son administrados por AWS Glue en forma de ETL. A veces son simples transformaciones, algunas otras se realizan ingestas batch en RDS. Cuando la operación o el ETL es complejo se opta por usar un sistema robusto que permita conectar distintos jobs de AWS Glue a través de Airflow.
Algunos procesos de ETL necesitan información de la base de datos principal, mongoDB. Esta información también es extraída por medio de AWS Glue usando el drive oficial de Spark para mongo: MongoSpark