AWS Kinesis es un conjunto de de soluciones para administrar flujos ilimitados de datos en tiempo real. ¿Tiene sentido esta explicación? ¿Todavía no? Vale, Sigamos…
Kinesis entra como alternativa en el ecosistema de Big Data para aprovechar toda la información que por su volumen, no tiene sentido almacenarla en una base de datos. Esto puede ser por motivos de costo, para evitar la complejidad, o que la naturaleza los datos sólo son relevantes por un breve lapso de tiempo.
Podemos pensar en AWS Kinesis como una memoria de corto plazo. Creo que resulta una locura, o demasiado artificial al menos, saber que recordamos cada detalle de nuestro pasado con la misma nitidez como si lo hubiésemos hecho hace apenas unas horas. Y sin embargo, muchas veces producimos sistemas con esas características. Lo peor es que por no guardar todo el estado de nuestro sistema a cada momento, descartamos valiosa información.
Es por eso que incorporando Amazon Kinesis a nuestro sistema, podremos usar toda la valiosa información que se genera en tiempo real, como videos, audios, registros de aplicaciones, secuencias de clics de sitios web y datos de telemetría de IoT para aprendizaje automático, análisis y otras aplicaciones. La operación de AWS Kinesis comprende al menos 3 productos diferentes: Streams, Firehose y Analytics.
Para entender cómo funciona cada uno de estos productos estos productos en un escenario práctico, imaginemos que desarrollamos un periódico digital, y actualmente el tiempo promedio de visita de un usuario es 5 minutos y 1 artículo leído por completo. Nosotros, ambiciosos que somos y desconsiderados del tiempo de los demás queremos elevar el tiempo de cada sesión a 10 minutos y que cada usuario lea al menos dos artículos completos.
[Pausa] Si estás pensando en un recommendation engine vas en la dirección correcta.
Definamos las características básicas de nuestro sistema:
- Contamos con un sistema de autenticación, el cual está vinculado a modelos de AI que nos permite describir en unos pocos atributos a cada usuario o persona del periódico.
- Nuestro contenido es altamente dinámico, un artículo de hace dos días es prácticamente irrelevante el día de hoy.
- Nuestros lectores utilizan una interfaz de voz para acceder al periódico y sólo podremos presentar un máximo de tres sugerencias.
AWS Kinesis Data Stream
En este sencillo ejemplo del periódico digital, Kinesis Stream estaría produciendo información para cada usuario en línea. Ejemplo de ello sería; las noticias visitadas por el usuario, el tiempo promedio en cada una de ellas, las pausas durante la lectura, la oración en la que se detuvo, y posiblemente la ubicación geográfica, la hora del día o si estaba en movimiento (transmutando).
La ventaja de los Streams es que no sólo producen datos sino también los consumen, adjunto a cada record encontraremos el perfil del usuario que contendrá elementos como: la categoría de artículos que busca, los tags a los que está suscrito (subcategorías), los autores que más disfruta y la ubicación de noticias que le interesan Cómo está información es filtrada por un algoritmo de A.I. recibimos exclusivamente un conjunto de clusters a los que la persona pertenece en forma de números enteros para nuestra propia conveniencia. ¿Vamos bien? ¿No te he perdido? Sigamos…
AWS Kinesis Data Analytics
Nuestras recomendaciones requieren ser generadas en tiempo real y como vimos son altamente dinámicas. Para ello, buscaremos en cuál de los los streams más recientes hay otros usuarios con la mismas características de nuestro usuario actual, al cual por los clusters a los que pertenece denominaremos Delta-Gamma-Pi.
A través de SQL evaluaremos el engagement de otros usuarios similares en sus respectivos otros artículos y agrupamos la información en un arreglo (array) de “engagement”. Este arreglo será devuelto al stream original de Delta-Gamma-Pi y tras un breve cómputo en la nube determinaremos cuál de los artículos recomendaremos, o quizá incluso nos arriesgamos con uno nuevo.
Seguro estarás cantando victoria en este momento, pero el trabajo aún no termina. Nuestro usuario está feliz, nuestros advertisers también, y los inversionistas brincan de júbilo. Pero hay alguien que aún está esperando algo de nosotros: el Data Scientist. Con mirada fúrica nos expresa su descontento y pregunta ¿cómo esperamos que nuestras predicciones de A.I. sigan vigentes si no tienen nueva información? …y aquí es donde entra Firehose.
AWS Kinesis Data Firehose
AWS Kinesis Firehose agrupará el cúmulo de información producida por cada uno de los streams y los enviará a nuestros hambrientos modelos de aprendizaje artificial para su reentrenamiento, ellos a su vez actualizarán las preferencias de los usuarios, mientras un segundo flujo de datos se dirige a ser archivado a nuestro sistema de almacenamiento de bajo costo, mientras el tercero y último de los flujos de datos agrupa las métricas de engagement para cada artículo y escribe directamente a la base de datos.
Ahora sí, todos contentos, y si tu fueras alguien ordinario seguramente también lo estarías. Satisfecho cerrarías tu computadora, te levantarías de la silla, estrecharías tu cuerpo y saldrías a tomar una relajante caminata.
Pero a quien engañas, no eres alguien ordinario… pensativo miras al techo y te quedas ponderando sobre lo que hiciste y todo lo que podrás seguir haciendo. A tu mente vienen ideas de aplicar el mismo modelo dentro del e-commerce, sólo que en está ocasión no sería engagement lo que buscarías aumentar (te ríes internamente), o que pasaría si lo utilizarás como medio de comunicación entre tus microservicios, posiblemente resolverías parte del caos en el que se encuentran. Quien sabe, quizás hasta podrías graficar algunas de las tendencias y entender lo que está pasando ahí.
Sin embargo, una idea más oscura llega a tu mente. Miras por la ventana de la oficina, y observas con detenimiento los cimientos del nuevo rascacielos que está siendo construido a un lado. ¿Qué pasaría si colocarás un Fitband a cada obrero? ¿Qué pasaría si en tiempo real midieras su esfuerzo y ubicación dentro de la obra? Seguramente podrías aumentar la productividad recompensando a los obreros más; esto sin duda haría que el edificio se terminaría en menor tiempo… pero ¿es eso lo que realmente quieres? ¿serías capaz de vivir habiendo creado algo tan orwelliano? te estremeces sólo de pensarlo y reconsideras que la caminata no sería una mala idea después de todo. Jajajajaja….