¿Qué es AWS Kinesis? Patrón de diseño, casos de uso y comparación

Publicado: 2022-07-01

Vivimos en la era de las integraciones entre aplicaciones, las notificaciones instantáneas y las actualizaciones de datos instantáneas. En tal escenario, se vuelve más importante crear, mantener y modificar sistemas en tiempo real.

A lo largo de los años, se han desarrollado varias herramientas útiles para ayudar a construir y mantener dichos sistemas multiplataforma. RabbitMQ, Kafka y AWS Kinesis son tres de esas herramientas que han ayudado a los desarrolladores e ingenieros a trabajar sin problemas con datos en tiempo real. Todos estos sistemas fueron creados y mantenidos, teniendo en cuenta diferentes objetivos. Por lo tanto, vienen con sus distintos beneficios y limitaciones según el trabajo en cuestión.

Este artículo hablará en detalle sobre AWS Kinesis y cómo funciona.

Kinesis es un servicio de transmisión construido sobre AWS. Se puede usar para procesar todo tipo de datos, desde registros, datos de IoT, datos de video, básicamente cualquier formato de datos. Esto le permite ejecutar diferentes modelos y procesos de aprendizaje automático en los datos en tiempo real a medida que fluyen a través de su sistema. Por lo tanto, reduce la molestia de pasar por las bases de datos tradicionales al tiempo que aumenta la eficiencia general.

Tabla de contenido

Explore nuestros cursos populares de MBA

Maestría en Administración de Empresas de la Universidad Golden Gate Maestría en Administración de Empresas (MBA) Escuela de Negocios de Liverpool MBA de la Escuela de Negocios Deakin
MBA en Marketing Digital de la Universidad de Dekin MBA ejecutivo de SSBM Ver todos los cursos de MBA

El patrón de diseño Pub/Sub

Antes de profundizar en cómo se puede usar Kinesis exactamente, es esencial saber un poco más sobre el modelo de diseño que usa. En este caso, estamos hablando del diseño de editor y suscriptor, que a menudo se denomina patrón de diseño pub/sub. Este patrón de diseño se desarrolló para que el publicador, el remitente del mensaje, inserte eventos en Kinesis, un bus de eventos. Luego, este bus de eventos distribuye con éxito los datos de entrada a todos los suscriptores.

Un elemento clave a tener en cuenta aquí es que los editores esencialmente no tienen idea de que existen suscriptores. Todos los mensajes y el transporte de mensajes son administrados en su totalidad por AWS Kinesis.

Dicho de otra manera, el patrón de diseño pub/sub se utiliza para la comunicación eficiente de mensajes sin crear un diseño muy acoplado. En cambio, Kinesis se enfoca en utilizar componentes independientes y crear un flujo de trabajo distribuido general a partir de eso.

En esencia, AWS Kinesis es una poderosa herramienta de transmisión que ofrece claras ventajas, especialmente en comparación con otras herramientas de transmisión en tiempo real. Uno de esos beneficios es que es un servicio administrado, por lo que los desarrolladores no tienen que manejar la administración del sistema. Esto permite a los desarrolladores concentrarse más en su código y sistemas y menos en tareas administrativas.

Ahora, veamos algunos casos de uso de Kinesis.

Caso de uso de AWS Kinesis: transmisión de datos

AWS Kinesis es útil para empresas grandes y pequeñas que buscan administrar e integrar sus datos en diferentes plataformas. Kinesis es beneficioso en escenarios pequeños y a gran escala para organizaciones que buscan administrar e integrar sus datos en todas las plataformas.

Veamos dos grandes casos de uso en los que las empresas utilizaron AWS Kinesis para administrar sin problemas grandes cantidades de datos en tiempo real.

netflix

Netflix usa AWS Kinesis para procesar varios TB de datos de registro todos los días. Netflix necesita una aplicación centralizada que registre todos los datos en tiempo real. Mediante el uso de Kinesis, Netflix desarrolló Dredge, que enriquece el contenido con metadatos en tiempo real. De esa forma, los datos se procesan instantáneamente cuando pasan por Kinesis. Esto elimina un paso tedioso de cargar datos en una base de datos para su procesamiento futuro.

Verítono

Veriton proporciona servicios de inteligencia artificial y aprendizaje automático. Utiliza transmisiones de video de AWS Kinesis para procesar datos de clientes. Veriton también aplica modelos ML e IA al contenido en tiempo real para mejorarlo con métricas y metadatos. Con esta información adicional, Veritone facilita la búsqueda de secuencias de video de Kinesis al observar audio, reconocimiento facial, datos etiquetados, etc.

Estos son solo dos de los numerosos ejemplos de cómo las empresas hoy en día aprovechan AWS Kinesis para trabajar con transmisión de datos en tiempo real de manera más eficiente.

Pasemos a los aspectos técnicos y los componentes esenciales del flujo de AWS Kinesis.

Aprenda cursos de IA y ML de las mejores universidades del mundo. Obtenga programas de maestría, PGP ejecutivo o certificado avanzado para acelerar su carrera.

Corrientes vs Firehose

AWS Kinesis ofrece a los desarrolladores dos productos principales: Kinetic Streams y Kinesis Firehose.

Para trabajar con Kinesis Stream, deberá utilizar Kinesis Producer Library. Le permitirá poner todos los datos en tiempo real en su transmisión. Además, puede conectar esta biblioteca a casi cualquier aplicación o proceso. Sin embargo, Kinesis Streams no es un servicio 100% administrado. Por lo tanto, el equipo de desarrolladores deberá escalarlo manualmente cuando sea necesario. Además, los datos introducidos en la transmisión permanecerán allí durante siete días.

Kinesis Firehose es un poco más simple de implementar. Los datos alimentados a Kinesis Firehose se envían a Amazon Redshift, Amazon S3 e incluso a Elasticsearch, todos utilizando el motor de AWS Kinesis. Después de esto, puede procesarlo según sus requisitos. Si los datos están almacenados en Amazon S3 o en cualquier otro sistema de almacenamiento de AWS, puede dejarlos allí todo el tiempo que desee.

Configuración de una transmisión en Kinesis

Antes de comenzar a acceder a Kinesis, debe configurar una transmisión accediendo a la CLI de AWS. En el shell de comandos, ingrese el siguiente comando para crear un flujo llamado DataProcessingStream

–stream-name DataProcessingStream \

–recuento de fragmentos 1 \

–región eu-oeste-1

Creación de una canalización de transmisión con Python

Una vez que haya configurado una transmisión en Kinesis, debe comenzar a crear el productor y el consumidor. Los componentes principales de Kinesis lo ayudan a crear una capa de acceso para integrar otros sistemas, software y aplicaciones.

En este tutorial, trabajaremos con la biblioteca Python boto3 para conectarnos a Kinesis.

Creando el Productor

Use el código mencionado a continuación para crear el productor usando el lenguaje de programación Python:

importar boto3

importar json

registro de importación

registro.basicConfig(nivel = registro.INFO)

sesión = boto3.Session(nombre_región='eu-west-1′)

cliente = sesión.cliente('kinesis')

test_data = {'data_tag': 'DataOne', 'score': '10', 'char': 'Database Warrior'}

respuesta = cliente.put_record(

StreamName='Flujo de procesamiento de datos',

Datos = json. volcados ({

“etiqueta_datos”: datos_prueba['etiqueta_datos'],

“puntuación”: test_data['puntuación'],

“char”: test_data['char']

}),

PartitionKey='a01′

)

logging.info(“Ingresar puntaje de datos nuevos: %s”, test_data)

Para extraer los datos, necesita otra secuencia de comandos para escuchar los datos que se envían a los productores. Para eso, puede usar ShardIterator para obtener acceso a todos los datos que se ingresan en Kinesis. De esta manera, puede acceder a los registros en tiempo real y futuros en Kinesis.

Creando el Consumidor

Use el código mencionado a continuación para crear un consumidor de Python:

importar boto3

importar json

sistema de importación

registro de importación

registro.basicConfig(nivel = registro.INFO)

sesión = boto3.Session(nombre_región='eu-west-1′)

cliente = sesión.cliente('kinesis')

aws_kinesis_stream = client.describe_stream(StreamName='DataProcessingStream)

shard_id = aws_kinesis_stream['StreamDescription']['Shards'][0]['ShardId']

stream_response = cliente.get_shard_iterator(

StreamName='Flujo de procesamiento de datos',

FragmentoId=fragmento_id,

ShardIteratorType='TRIM_HORIZON'

)

iterador = stream_response['FragmentoIterador']

mientras que es cierto:

probar:

aws_kinesis_response = cliente.get_records(ShardIterator=iterador, Límite=5)

iterador = aws_kinesis_response['NextShardIterator']

para registro en aws_kinesis_response['Registros']:

si 'Datos' en registro y len(registro['Datos']) > 0:

logging.info(“Recibí nueva puntuación de datos: %s”, json.loads(record['Data']))

excepto KeyboardInterrupt:

sys.exit()

En el ejemplo anterior, solo estamos imprimiendo los datos.

Problemas con canalizaciones de Kinesis

Kinesis es genuinamente beneficiosa, pero no está exenta de desafíos y deficiencias. Uno de los desafíos importantes que enfrentará al trabajar con Kinesis puede llamarse "observabilidad".

A medida que trabaje con varios componentes de AWS, el sistema que cree se volverá cada vez más complejo. Por ejemplo, si usa las funciones de Lambda como productor y consumidor y las conecta a diferentes sistemas de almacenamiento de AWS, será muy difícil administrar y rastrear dependencias y errores.

Lea nuestros artículos populares relacionados con MBA

Salario del analista financiero: novatos y experimentados Principales preguntas y respuestas de la entrevista para recursos humanos Opciones de carrera de MBA Marketing en EE. UU.
Las mejores opciones de carrera en EE. UU. después de un MBA en recursos humanos Las 7 mejores opciones de carrera en ventas Trabajos financieros mejor pagados en los EE. UU.: Promedio a más alto
Las 7 mejores opciones de carrera en finanzas en los EE. UU.: debe leer Las 5 principales tendencias de marketing en 2022 MBA Salario en EE. UU. en 2022 [Todas las especializaciones]

En conclusión

No hay duda de que la transmisión de datos y el trabajo con datos en tiempo real es la necesidad del momento, y solo aumentará a medida que nuestro mundo produzca más y más datos. Entonces, si estás interesado en dominar los trucos de Kinesis, un curso profesional podría ayudarte.

La Maestría en Ciencias en Aprendizaje Automático e IA de upGrad , que se ofrece con la colaboración de IIIT-B y LJMU, es un curso integral de 18 meses diseñado para ayudarlo a comenzar con los conceptos básicos de la exploración de datos y alcanzar todos los conceptos críticos de NLP, Deep Aprendizaje, aprendizaje por refuerzo y más. Además, puede trabajar en proyectos de la industria, apoyo profesional de 360 ​​grados, tutoría personalizada, oportunidades de redes entre pares y mucho más para ayudarlo a dominar el aprendizaje automático y la IA.

1. ¿Puede AWS Kinesis extraer datos?

Amazon Kinesis es una solución de transmisión de datos en tiempo real escalable y duradera que funciona mediante la captura continua de GB de datos en tiempo real de miles de fuentes.

2. ¿Puede un flujo de Kinesis tener múltiples consumidores?

Sí, al usar iteradores de fragmentos, puede proporcionar múltiples consumidores en una transmisión de Kinesis.

3. ¿Con qué tipo de cola funciona AWS Kinesis?

AWS Kinesis es FIFO - First In First Out - en sus operaciones y procesos de datos.