paint-brush
Cómo dominar el análisis en tiempo real con AWS: Timestream y más allápor@ravilaudya
515 lecturas
515 lecturas

Cómo dominar el análisis en tiempo real con AWS: Timestream y más allá

por Ravi Laudya6m2024/12/04
Read on Terminal Reader

Demasiado Largo; Para Leer

En este artículo se analiza cómo crear una plataforma de análisis escalable y confiable en tiempo real. Se abordan la ingesta, el procesamiento, la visualización y la consulta de datos para transformar los datos de eventos en información procesable mediante los componentes de la plataforma AWS SQS, Lambda y Timestream.
featured image - Cómo dominar el análisis en tiempo real con AWS: Timestream y más allá
Ravi Laudya HackerNoon profile picture

En mi último artículo , analizamos el crecimiento exponencial de los eventos en el mundo actual impulsado por los datos. Con tantas aplicaciones, dispositivos inteligentes y máquinas a nuestro alrededor, la cantidad de datos que se crea es enorme. También exploramos cómo una plataforma de orquestación puede ayudar a entregar estos eventos a las aplicaciones adecuadas. Sin embargo, la entrega de eventos puede no ser suficiente para que las empresas tengan un impacto.


Al analizar estos eventos para comprender el comportamiento de los usuarios, las empresas pueden brindar un mejor servicio a sus clientes al tomar decisiones más inteligentes. Una plataforma de análisis en tiempo real puede ayudar a convertir los datos de los eventos en información significativa.


En este artículo, se analiza cómo crear una plataforma de análisis en tiempo real con AWS, se evalúan posibles soluciones y se proporciona una guía paso a paso para implementar una plataforma escalable y confiable. La creación de esta plataforma implica tres pasos: ingesta de datos, procesamiento y consulta. El análisis en tiempo real suele centrarse en las tendencias y los patrones a lo largo del tiempo, ya sea el comportamiento del usuario o el rendimiento del sistema.


Los datos de series temporales organizan naturalmente los eventos en secuencia, lo que facilita el análisis de los datos momento a momento. El almacenamiento de series temporales se alinea perfectamente con esta necesidad, lo que permite que las aplicaciones calculen las métricas. AWS ofrece herramientas como SQS, Lambda, Timestream y Quicksight que funcionan a la perfección en conjunto para crear esta plataforma.


Hay tres partes principales involucradas en la construcción de una plataforma de análisis en tiempo real

  • Ingestión de datos : los eventos publicados desde las aplicaciones pueden fluir a AWS a través de Amazon Kinesis o directamente a SQS.


  • Procesamiento de datos : AWS Lambda puede procesar los datos y escribirlos en Timesream.


  • Visualización y consultas : los paneles personalizados o Quicksight se pueden integrar con Timestream para visualización y conocimientos.


    El siguiente diagrama muestra la arquitectura de la plataforma de análisis.


Análisis con AWS Timestream


Flujo de tiempo

Amazon Timestream , la base de datos de series temporales de AWS, está diseñada para afrontar los desafíos de procesar y analizar grandes cantidades de datos de manera eficiente. Timestream no requiere servidor, es escalable e ideal para aplicaciones que requieren análisis de datos en tiempo real. Sus características principales incluyen:


  • Escalamiento automático : puede procesar billones de eventos por día y escalar automáticamente para satisfacer la demanda.
  • Rendimiento : ofrece un rendimiento de consultas hasta 1000 veces más rápido en comparación con las bases de datos relacionales.
  • Sin servidor : está completamente administrado por AWS, lo que reduce la sobrecarga.
  • Niveles de almacenamiento inteligentes : niveles de almacenamiento optimizados para datos recientes (en memoria) e históricos (almacenamiento magnético).
  • Compatibilidad con consultas SQL : admite consultas SQS para realizar consultas complejas, agregaciones y análisis de series de tiempo.
  • Integraciones : admite una integración perfecta con otros servicios de AWS.

Implementación

La plantilla de formación de nubes (CFN) para todos los recursos necesarios se puede encontrar en el repositorio de Github .


  • Ingestión de datos

    Los servicios pueden publicar eventos relevantes en la cola SQS, que funciona como cola de mensajes para el sistema. Para mejorar la confiabilidad, se configura una cola de mensajes no entregados (DLQ) junto con la cola SQS principal. Los eventos que no se pueden procesar van a la DLQ después del umbral de reintentos. Estos eventos también se pueden usar para depuración, manejo de fallas e investigaciones.


    A continuación se muestra un fragmento de la plantilla CFN para crear la cola SQS y su DLQ asociado:


     EventQueueDLQ: Description: 'An DLQ queue that receives failed events' Type: AWS::SQS::Queue Properties: FifoQueue: true ContentBasedDeduplication: true QueueName: !Ref DLQQueueName SqsManagedSseEnabled: true VisibilityTimeout: 240 EventQueue: Description: 'An SQS queue that receives events' Type: 'AWS::SQS::Queue' Properties: QueueName: !Ref SQSQueueName FifoQueue: true ContentBasedDeduplication: true KmsMasterKeyId: alias/aws/sqs VisibilityTimeout: 240 RedrivePolicy: deadLetterTargetArn: !Sub ${EventQueueDLQ.Arn} maxReceiveCount: 5


  • Proceso de datos

    La función AWS Lambda está configurada como procesador de datos, responsable de gestionar y procesar los eventos publicados en la cola de SQS. Envía los eventos como métricas a la base de datos de Timestream después del procesamiento.


    A continuación se muestra un fragmento de la plantilla CFN para Lambda y su asignación a SQS:


     EventProcessorLambda: Type: 'AWS::Lambda::Function' Description: 'Lambda function that processes events from the SQS queue and writes to Timestream.' Properties: FunctionName: !Ref LambdaFunctionName Handler: 'index.lambda_handler' Role: !GetAtt LambdaExecutionRole.Arn Runtime: 'python3.12' MemorySize: 1024 Timeout: 120 Environment: Variables: TIMESTREAM_DATABASE_NAME: !Ref EventsDatabaseName TIMESTREAM_TABLE_NAME: !Ref EventsTableName Code: ZipFile: | # Lambda function code goes here SQSToLambdaEventSourceMapping: Type: 'AWS::Lambda::EventSourceMapping' Description: 'Maps the SQS queue as the event source for the Lambda function.' Properties: BatchSize: 10 EventSourceArn: !GetAtt EventQueue.Arn FunctionName: !GetAtt EventProcessorLambda.Arn Enabled: 'True'


  • Almacén de datos

    Amazon Timestream funciona como almacén de datos principal para todos los eventos generados en varios servicios. La configuración incluye lo siguiente:

    • Base de datos : actúa como un contenedor lógico para una o más tablas
    • Tabla : Dentro de la base de datos, las tablas almacenan los datos de métricas reales.


A continuación se muestra el fragmento de la plantilla CFN para crear la base de datos Timestream y la tabla:

 EventsDatabase: Description: 'Timestream database to store event data' Type: 'AWS::Timestream::Database' Properties: DatabaseName: !Ref EventsDatabaseName KmsKeyId: alias/aws/timestream EventsTable: Description: 'Timestream table that stores event metrics' Type: 'AWS::Timestream::Table' DependsOn: EventsDatabase Properties: DatabaseName: !Ref EventsDatabase TableName: !Ref EventsTableName RetentionProperties: MemoryStoreRetentionPeriodInHours: 72 MagneticStoreRetentionPeriodInDays: 365


  • Visualización y consulta

    • Consulta

      Timestream ofrece una consola de consulta que permite a los usuarios ejecutar consultas en la tabla, por ejemplo:

       -- Get the 10 most recent metrics in the past 15 minutes. SELECT * FROM "events-db"."events-metrics" WHERE time between ago(15m) and now() ORDER BY time DESC LIMIT 10


    • Visualización

      AWS proporciona muchas integraciones listas para usar (por ejemplo, QuickSight , Grafana ) con Timestream, lo que facilita el análisis, la visualización y la obtención de información.

Pruebas

Los servicios pueden publicar el evento en el siguiente formato en SQS que activa todo el flujo de procesamiento:

 { "order_id": "test-order-1", "customer_id": "test-customer-1", "event_type": "order_success", "metric_value": 1 }


Conclusión

Esta arquitectura ofrece una forma sencilla y eficiente de crear una plataforma de análisis escalable y confiable. Existen otras alternativas según las necesidades específicas, como AWS Kinesis Streams para el procesamiento de eventos, Prometheus para un almacén de datos y S3+Athena para el procesamiento y análisis por lotes.