Amazon Kinesis es un conjunto de servicios de AWS diseñados para la ingesta, procesamiento y análisis de datos en tiempo real. Permite capturar datos de diversas fuentes como aplicaciones, dispositivos IoT, logs, y más, para luego procesarlos y analizarlos casi instantáneamente.

Visión General

Beneficios

Procesamiento en tiempo real: Permite procesar y analizar datos a medida que se generan, proporcionando insights instantáneos.

Escalabilidad automática: Se adapta automáticamente a la cantidad de datos que necesita procesar, sin intervención manual.

Integración con otros servicios de AWS: Fácilmente integrable con servicios como S3, Redshift, Lambda y más, facilitando un flujo de datos continuo y automatizado.

Características

Amazon Kinesis Data Streams: Permite capturar, procesar y almacenar flujos de datos de forma continua.

Amazon Kinesis Data Firehose: Facilita la carga de datos en tiempo real en destinos como S3, Redshift, y Elasticsearch.

Amazon Kinesis Data Analytics: Proporciona herramientas para analizar datos de streaming utilizando SQL, sin necesidad de configurar infraestructura adicional.

Amazon Kinesis Video Streams: Permite la ingesta, almacenamiento y procesamiento de secuencias de video en tiempo real.

Casos de Uso

Monitoreo en tiempo real: Empresas pueden monitorear sus sistemas y aplicaciones en tiempo real para detectar anomalías y actuar inmediatamente.

Análisis de logs y eventos: Se utiliza para analizar logs de aplicaciones, eventos de clics en sitios web y datos de sensores IoT.

Análisis de redes sociales: Procesa grandes volúmenes de datos de redes sociales para obtener insights en tiempo real.

Recomendaciones personalizadas: Se utiliza para analizar el comportamiento del usuario y ofrecer recomendaciones instantáneas, como en e-commerce o contenido multimedia.

Kinesis Video Streams

Facilita la transmisión segura de video desde dispositivos conectados a AWS para análisis, aprendizaje automático (ML) y otros procesos. Almacena, cifra e indexa los flujos de video de manera duradera, permitiendo el acceso a los datos a través de APIs fáciles de usar. Los datos se almacenan por 24 horas de manera predeterminada, con opciones de hasta 7 días. Admite múltiples fragmentos en un flujo y soporta cifrado en reposo con KMS. Es importante notar que Kinesis Video Streams no se aborda frecuentemente en los exámenes de AWS.

Amazon Kinesis Data Streams

Un servicio que permite crear aplicaciones personalizadas para procesar y analizar datos en tiempo real. Este servicio es útil para mover rápidamente grandes volúmenes de datos desde productores a consumidores, almacenando los datos para su posterior procesamiento. Se utiliza comúnmente para la ingesta acelerada de logs, análisis en tiempo real, y procesamiento complejo de flujos de datos. Los flujos de datos se componen de fragmentos (shards), que pueden ajustarse dinámicamente según el volumen de datos. La seguridad se garantiza mediante el uso de claves maestras KMS para cifrado.

Los productores envían datos continuamente a Kinesis, que los almacena temporalmente para que los consumidores los procesen. Cada flujo de datos se puede ajustar mediante operaciones como la división o fusión de fragmentos, optimizando el rendimiento y el costo según sea necesario. Además, los registros son las unidades de datos almacenadas y se pueden leer y escribir de manera segura utilizando claves de cifrado.

Este servicio es altamente escalable, permitiendo manejar grandes volúmenes de datos, y se integra fácilmente con otros servicios de AWS como DynamoDB, Redshift, S3 y herramientas de análisis para obtener información valiosa en tiempo real.

Amazon Kinesis Data Firehose

Es la forma más sencilla de cargar datos en streaming en almacenes de datos y herramientas de análisis. Captura, transforma y carga los datos casi en tiempo real, permitiendo análisis instantáneos con herramientas de inteligencia empresarial. Se puede configurar para transformar datos antes de entregarlos, y puede comprimir y cifrar datos en tránsito. Firehose replica datos sincrónicamente en tres zonas de disponibilidad (AZ) mientras los transporta a destinos como Amazon S3, Redshift, Elasticsearch, y Splunk. Además, no requiere gestión manual de shards, lo que simplifica su uso.

Firehose puede integrarse con funciones de AWS Lambda para transformar datos entrantes antes de entregarlos. También es capaz de cifrar los datos con claves de KMS y, en el caso de destinos en S3, permite opcionalmente respaldar los datos en un segundo bucket de S3 si la transformación de datos está habilitada.

Este servicio es totalmente automatizado, permitiendo a los productores de datos enviar streams sin necesidad de manejar infraestructura compleja.

Amazon Kinesis Data Analytics

Es la forma más sencilla de procesar y analizar datos en tiempo real mediante consultas SQL estándar. Permite crear aplicaciones que procesan flujos de datos y generan análisis en tiempo real, como dashboards o alertas. Se integra con Kinesis Streams y Firehose, y puede enviar resultados a S3, Redshift y Elasticsearch. La aplicación se compone de tres elementos: la fuente de datos en streaming, el código SQL para procesar los datos, y la salida para los resultados intermedios. Además, admite fuentes de datos en streaming y fuentes de datos de referencia estáticas para enriquecer el análisis. Con IAM, se puede controlar el acceso para lectura y escritura en los recursos.

Este servicio es ideal para crear aplicaciones que requieren procesamiento continuo de datos en tiempo real, proporcionando un análisis inmediato sin necesidad de gestionar la infraestructura subyacente.

Kinesis Client Library (KCL)

La Biblioteca de Cliente Kinesis (KCL) es una biblioteca en Java que ayuda a leer registros de un Kinesis Stream con aplicaciones distribuidas que comparten la carga de lectura.

La KCL es diferente de la API de Kinesis Data Streams disponible en los SDK de AWS.

  • La API de Kinesis Data Streams te ayuda a gestionar muchos aspectos de los streams de datos (creación de streams, resharding, inserción y obtención de registros).
  • La KCL proporciona una capa de abstracción específica para procesar datos en un rol de consumidor.

La KCL actúa como un intermediario entre tu lógica de procesamiento de registros y Kinesis Data Streams.

Cuando inicias una aplicación KCL, llama a la KCL para instanciar un trabajador. La KCL realiza las siguientes tareas:

  • Se conecta al stream.
  • Enumera los shards.
  • Coordina las asociaciones de shards con otros trabajadores (si los hay).
  • Instancia un procesador de registros para cada shard que administra.
  • Extrae registros de datos del stream.
  • Empuja los registros al procesador de registros correspondiente.
  • Realiza checkpoints de los registros procesados.
  • Equilibra las asociaciones shard-trabajador cuando la cantidad de instancias cambia.
  • Equilibra las asociaciones shard-trabajador cuando los shards se dividen o fusionan.

La KCL asegura que cada shard tenga un procesador de registros.

La KCL gestiona la cantidad de procesadores de registros en función del número de shards y consumidores. Si tienes un solo consumidor, la KCL asignará todos los procesadores de registros a esa única instancia. Cada shard es procesado por un trabajador KCL con un procesador de registros correspondiente, evitando la necesidad de múltiples instancias para un solo shard. Sin embargo, un trabajador KCL puede procesar varios shards, lo que permite manejar más shards que instancias disponibles sin problemas de procesamiento.

Si tienes dos consumidores, equilibrará la carga y creará la mitad de los procesadores en una instancia y la otra mitad en otra.

Escalando consumidores:

  • Con KCL, generalmente debes asegurarte de que el número de instancias no exceda el número de shards (excepto para propósitos de falla o standby).
  • Cada shard solo puede ser leído por una instancia KCL.
  • Nunca necesitarás múltiples instancias para manejar el procesamiento de un shard.

Sin embargo, un trabajador puede procesar múltiples shards.

Ejemplo:

  • 4 shards = máximo 4 instancias KCL.
  • 6 shards = máximo 6 instancias KCL.

El progreso se registra en DynamoDB (se requiere acceso IAM).

KCL puede ejecutarse en EC2, Elastic Beanstalk y servidores locales.

Los registros se leen en orden a nivel de shard.

Seguridad

  • Control de acceso/autorización mediante políticas de IAM.
  • Cifrado en tránsito utilizando puntos finales HTTPS.
  • Cifrado en reposo utilizando KMS.
  • Posible cifrado/descifrado de datos en el lado del cliente.
  • Puntos finales VPC disponibles para que Kinesis acceda dentro de una VPC.

SQS vs SNS vs Kinesis

SQS:

  • Los consumidores extraen datos.
  • Los datos se eliminan después de ser consumidos.
  • Puede tener tantos trabajadores (consumidores) como necesites.
  • No necesita aprovisionar rendimiento.
  • No hay garantía de orden (excepto en colas FIFO).
  • Retraso individual de mensajes.

SNS:

  • Empuja datos a muchos suscriptores.
  • Hasta 10,000,000 de suscriptores.
  • Los datos no se persisten (se pierden si no se eliminan).
  • Pub/sub.
  • Hasta 10,000,000 de temas.
  • No necesita aprovisionar rendimiento.
  • Se integra con SQS para patrones de arquitectura fan-out.

Kinesis:

  • Los consumidores extraen datos.
  • Tantos consumidores como necesites.
  • Posible reproducción de datos.
  • Diseñado para big data en tiempo real, análisis y ETL.
  • Ordenación a nivel de shard.
  • Los datos expiran después de X días.
  • Debe aprovisionar el rendimiento.

Empresas que lo utilizan

Utiliza Kinesis para monitorear sus sistemas globales en tiempo real, asegurando un servicio continuo y de alta calidad para millones de usuarios.

Analiza eventos de sus usuarios en tiempo real para mejorar la experiencia y optimizar sus sistemas de recomendaciones y precios.

Procesa y analiza datos de uso y navegación de sus usuarios para ofrecer sugerencias y mejoras en tiempo real.

Caso de Éxito

Netflix utiliza Amazon Kinesis para procesar y analizar en tiempo real cientos de miles de eventos por segundo provenientes de sus sistemas globales. Esto incluye datos como logs de aplicaciones, métricas del sistema, y datos de comportamiento de los usuarios. Al usar Kinesis, Netflix puede detectar problemas operativos o anomalías en tiempo real y responder de manera proactiva antes de que afecten la experiencia del usuario. Este enfoque ha sido fundamental para mantener la alta disponibilidad y calidad de su servicio, especialmente durante picos de tráfico, como nuevos lanzamientos de series y películas.

Recursos importantes

Documentación y Guías:

Videos y Webinars:

  • Tutoriales en Video: Proporcionan instrucciones visuales para configurar y utilizar Amazon Kinesis.
  • Webinars: Sesiones en vivo y grabadas que profundizan en temas específicos relacionados con Kinesis.

Blogs y Artículos:

Ejemplos de Código y Repositorios:

Estos recursos están diseñados para ayudarte a sacar el máximo provecho de Amazon Kinesis, independientemente de tu nivel de experiencia. Para explorar todos los recursos, visita la página oficial de Amazon Kinesis Getting Started.

Preguntas frecuentes sobre Amazon Kinesis

¿Qué es Amazon Kinesis?

Amazon Kinesis es un servicio de AWS que permite la ingesta, procesamiento y análisis de grandes volúmenes de datos en tiempo real desde diversas fuentes como logs, dispositivos IoT y aplicaciones.

¿Cuáles son los componentes principales de Amazon Kinesis?

Kinesis incluye cuatro servicios principales: Kinesis Data Streams, Kinesis Data Firehose, Kinesis Data Analytics, y Kinesis Video Streams, cada uno diseñado para diferentes necesidades de procesamiento y análisis de datos.

¿Qué es Kinesis Data Streams?

Kinesis Data Streams permite capturar y procesar flujos de datos en tiempo real. Es ideal para aplicaciones que requieren procesamiento continuo y análisis de datos a medida que se generan.

¿Cómo se factura Amazon Kinesis?

La facturación de Amazon Kinesis se basa en el volumen de datos procesados, la cantidad de shards utilizados (en Data Streams), y la transferencia de datos entre regiones, entre otros factores.

¿Qué es Kinesis Data Firehose?

Kinesis Data Firehose facilita la carga de datos en tiempo real en destinos como Amazon S3, Redshift, Elasticsearch, y Splunk, con capacidades de transformación y compresión de datos integradas.

¿Cómo se integra Kinesis con otros servicios de AWS?

Kinesis se integra fácilmente con servicios como AWS Lambda, S3, DynamoDB, Redshift, y otros, permitiendo crear flujos de datos complejos y automatizados en toda la infraestructura de AWS.

¿Qué es Kinesis Data Analytics?

Kinesis Data Analytics permite analizar y procesar flujos de datos en tiempo real utilizando consultas SQL estándar, lo que facilita la creación de dashboards, alertas y otros análisis en tiempo real.

¿Cuáles son los casos de uso comunes para Amazon Kinesis?

Los casos de uso incluyen monitoreo de aplicaciones en tiempo real, análisis de logs, procesamiento de datos de IoT, análisis de redes sociales, y generación de recomendaciones personalizadas basadas en el comportamiento del usuario.

¿Cómo se asegura la seguridad de los datos en Kinesis?

Amazon Kinesis proporciona cifrado en tránsito utilizando HTTPS, cifrado en reposo mediante KMS, y controles de acceso detallados a través de políticas de IAM, garantizando la seguridad de los datos en todo el proceso.

¿Qué es Kinesis Video Streams?

Kinesis Video Streams permite capturar, almacenar y procesar flujos de video en tiempo real para aplicaciones de análisis, aprendizaje automático, y más, con capacidades de almacenamiento duradero y acceso seguro a través de APIs.

Tags:

Descubre más desde BlockStellart

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo