Prefacio

Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com

Para los ingenieros y científicos de datos, nunca faltan tecnologías que compiten por nuestra atención. Tanto si estamos hojeando nuestros subreddits favoritos, escaneando Hacker News, leyendo blogs de tecnología o hilvanando cientos de mesasen una conferencia detecnología, hay tantas cosas que mirar que puede empezar a resultarabrumador.

Pero si podemos encontrar un rincón tranquilo para pensar durante un minuto, y dejar que todo el bullicio se desvanezca en el fondo, podemos empezar a distinguir patrones del ruido. Verás, vivimos en la era del crecimiento explosivo de los datos, y muchas de estas tecnologías se crearon para ayudarnos a almacenar y procesar datos a escala. Se nos dice que son soluciones modernas para problemas modernos, y nos sentamos a hablar de "big data" como si la idea fuera vanguardista, cuando en realidad centrarse en el volumen de datos es sólo la mitad de la historia.

Las tecnologías que sólo resuelven el problema del volumen de datos suelen tener técnicas de procesamiento de datos por lotes. Esto implica ejecutar un trabajo sobre un montón de datos que se han acumulado durante un periodo de tiempo. En cierto modo, esto es como intentar beberse el océano de una vez. Con la potencia y los paradigmas informáticos modernos, algunas tecnologías lo consiguen, aunque normalmente a costa de una alta latencia.

En cambio, hay otra propiedad de los datos modernos en la que nos centramos en este libro: los datos se mueven por las redes en flujos constantes e interminables. Las tecnologías que cubrimos en este libro, Kafka Streams y ksqlDB, están diseñadas específicamente para procesar estos flujos de datos continuos en tiempo real, y proporcionan enormes ventajas competitivas sobre la variedad que bebe del océano. Al fin y al cabo, muchos problemas empresariales son sensibles al tiempo, y si necesitas enriquecer, transformar o reaccionar a los datos en cuanto llegan, entonces Kafka Streams y ksqlDB te ayudarán a conseguirlo con facilidad y eficacia.

Aprender Kafka Streams y ksqlDB también es una forma estupenda de familiarizarte con los conceptos más amplios implicados en el procesamiento de flujos. Esto incluye modelar los datos de diferentes maneras (flujos y tablas), aplicar transformaciones sin estado de los datos, utilizar el estado local para operaciones más avanzadas (uniones, agregaciones), comprender las diferentes semánticas temporales y métodos para agrupar datos en cubos/ventanas temporales, y mucho más. En otras palabras, tu conocimiento de Kafka Streams y ksqlDB te ayudará a distinguir y evaluar las distintas soluciones de procesamiento de flujos que existen actualmente y que puedan llegar a existir en el futuro.

Me entusiasma compartir estas tecnologías contigo porque han tenido un impacto en mi propia carrera y me han ayudado a lograr hazañas tecnológicas que creía que estaban más allá de mis propias capacidades. De hecho, cuando termines de leer esta frase, una de mis aplicaciones Kafka Streams habrá procesado nueve millones de eventos. La sensación que obtendrás al proporcionar un valor empresarial real sin tener que invertir cantidades desorbitadas de tiempo en la solución hará que sigas trabajando con estas tecnologías durante años, y las sucintas y expresivas construcciones del lenguaje hacen que el proceso parezca más una forma de arte que una labor. Y al igual que cualquier otra forma de arte, ya sea una canción que te cambia la vida o un hermoso cuadro, es propio de la naturaleza humana querer compartirlo. Así que considera este libro como una mixtape de mí para ti, con mis recopilaciones favoritas del espacio de procesamiento de flujos disponibles para tu disfrute: Kafka Streams y ksqlDB, Volumen 1.

Quién debería leer este libro

Este libro está dirigido a ingenieros de datos que quieran aprender a crear aplicaciones de procesamiento de flujos altamente escalables para mover, enriquecer y transformar grandes cantidades de datos en tiempo real. Estas habilidades suelen ser necesarias para apoyar iniciativas de inteligencia empresarial, canalizaciones analíticas, detección de amenazas, procesamiento de eventos, etc. Los científicos de datos y los analistas que deseen mejorar sus habilidades analizando flujos de datos en tiempo real también encontrarán valor en este libro, que supone un emocionante alejamiento del espacio de procesamiento por lotes que ha dominado normalmente estos campos. No se requiere experiencia previa con Apache Kafka, aunque cierta familiaridad con el lenguaje de programación Java facilitará el seguimiento de los tutoriales de Kafka Streams.

Navegar por este libro

Este libro está organizado aproximadamente como sigue:

  • El Capítulo 1 proporciona una introducción a Kafka y un tutorial para ejecutar un clúster Kafka de un solo nodo.

  • El Capítulo 2 proporciona una introducción a Kafka Streams, comenzando con una revisión de los antecedentes y la arquitectura, y terminando con un tutorial para ejecutar una aplicación sencilla de Kafka Streams.

  • Los capítulos 3 y 4 tratan de los operadores sin estado y con estado del DSL (lenguaje específico del dominio) de alto nivel de Kafka Streams. Cada capítulo incluye un tutorial que demostrará cómo utilizar estos operadores para resolver un problema empresarial interesante.

  • En el Capítulo 5 se analiza el papel que desempeña el tiempo en nuestras aplicaciones de procesamiento de flujos, y se demuestra cómo utilizar ventanas para realizar operaciones con estado más avanzadas, incluidas las uniones y agregaciones con ventanas. Un tutorial inspirado en la asistencia sanitaria predictiva demostrará los conceptos clave.

  • El Capítulo 6 describe cómo funciona el procesamiento con estado bajo el capó, y proporciona algunos consejos operativos para las aplicaciones Kafka Streams con estado.

  • El Capítulo 7 se sumerge en la API de Procesador de nivel inferior de Kafka Streams, que puede utilizarse para programar funciones periódicas, y proporciona un acceso más granular al estado de la aplicación y a los metadatos del registro. El tutorial de este capítulo se inspira en casos de uso de IoT (Internet de las Cosas).

  • El Capítulo 8 ofrece una introducción a ksqlDB, y analiza la historia y la arquitectura de esta tecnología. El tutorial de este capítulo te mostrará cómo instalar y ejecutar una instancia del servidor ksqlDB, y cómo trabajar con la CLI de ksqlDB.

  • El Capítulo 9 trata de las funciones de integración de datos de ksqlDB, que funcionan con Kafka Connect.

  • Los capítulos 10 y 11 tratan en detalle el dialecto SQL ksqlDB, demostrando cómo trabajar con distintos tipos de colecciones, realizar consultas push y consultas pull, y mucho más. Los conceptos se introducirán mediante un tutorial basado en un caso de uso de Netflix: hacer un seguimiento de los cambios en varios programas/películas, y poner estos cambios a disposición de otras aplicaciones.

  • El Capítulo 12 proporciona la información que necesitas para implementar tus aplicaciones Kafka Streams y ksqlDB en producción. Esto incluye información sobre el monitoreo, las pruebas y la contenedorización de tus aplicaciones.

Código fuente

El código fuente de este libro puede encontrarse en GitHub enhttps://github.com/mitch-seymour/mastering-kafka-streams-and-ksqldb.

Las instrucciones para construir y ejecutar cada tutorial se incluirán en el repositorio.

Versión de Kafka Streams

En el momento de escribir este libro, la última versión de Kafka Streams era la 2.7.0. Esta es la versión que utilizamos en este libro, aunque en muchos casos, el código también funcionará con versiones anteriores o más recientes de la biblioteca Kafka Streams. Nos esforzaremos por actualizar el código fuente cuando las nuevas versiones introduzcan cambios de última hora, y organizaremos estas actualizaciones en una rama específica (por ejemplo, kafka-streams-2.8).

Versión de ksqlDB

En el momento de escribir esto, la última versión de ksqlDB era la 0.14.0. La compatibilidad con versiones anteriores y posteriores de ksqlDB está menos garantizada debido al continuo y rápido desarrollo de esta tecnología, y a la falta de una versión mayor (por ejemplo, 1.0) en el momento de la publicación de este libro. Nos esforzaremos por actualizar el código fuente cuando las nuevas versiones introduzcan cambios de última hora, y organizaremos estas actualizaciones en una rama específica (por ejemplo, ksqldb-0.15). Sin embargo, se recomienda evitar las versiones anteriores a la 0.14.0 al ejecutar los ejemplos de este libro.

Convenciones utilizadas en este libro

En este libro se utilizan las siguientes convenciones tipográficas:

Cursiva

Indica nuevos términos, URL, direcciones de correo electrónico, nombres de archivo y extensiones de archivo.

Constant width

Se utiliza en los listados de programas, así como dentro de los párrafos para referirse a elementos del programa como nombres de variables o funciones, bases de datos, tipos de datos, variables de entorno, sentencias y palabras clave.

Constant width bold

Muestra comandos u otros textos que deben ser tecleados literalmente por el usuario.

Constant width italic

Muestra el texto que debe sustituirse por valores proporcionados por el usuario o por valores determinados por el contexto.

Consejo

Este elemento significa un consejo o sugerencia.

Nota

Este elemento significa una nota general.

Advertencia

Este elemento indica una advertencia o precaución.

Utilizar ejemplos de código

Puedes encontrar material complementario (ejemplos de código, ejercicios, etc.) en la página GitHub del libro, https://github.com/mitch-seymour/mastering-kafka-streams-and-ksqldb.

Si tienes una pregunta técnica o un problema al utilizar los ejemplos de código, envía un correo electrónico

Este libro está aquí para ayudarte a hacer tu trabajo. En general, si se ofrece código de ejemplo con este libro, puedes utilizarlo en tus programas y documentación. No es necesario que te pongas en contacto con nosotros para pedirnos permiso, a menos que estés reproduciendo una parte importante del código. Por ejemplo, escribir un programa que utilice varios trozos de código de este libro no requiere permiso. Vender o distribuir ejemplos de los libros de O'Reilly sí requiere permiso. Responder a una pregunta citando este libro y el código de ejemplo no requiere permiso. Incorporar una cantidad significativade códigode ejemplo de este libro en la documentación de tu producto sí requierepermiso.

Agradecemos, pero generalmente no exigimos, la atribución. Una atribución suele incluir el título, el autor, la editorial y el ISBN. Por ejemplo "Mastering Kafka Streams and ksqlDB por Mitch Seymour (O'Reilly). Copyright 2021 Mitch Seymour, 978-1-492-06249-3".

Si crees que el uso que haces de los ejemplos de código no se ajusta al uso legítimo o al permiso concedido anteriormente, no dudes en ponerte en contacto con nosotros en

Aprendizaje en línea O'Reilly

Nota

Durante más de 40 años, O'Reilly Media ha proporcionado formación tecnológica y empresarial, conocimientos y perspectivas para ayudar a las empresas a alcanzar el éxito.

Nuestra red única de expertos e innovadores comparten sus conocimientos y experiencia a través de libros, artículos y nuestra plataforma de aprendizaje online. La plataforma de aprendizaje en línea de O'Reilly te ofrece acceso bajo demanda a cursos de formación en directo, rutas de aprendizaje en profundidad, entornos de codificación interactivos y una amplia colección de textos y vídeos de O'Reilly y de más de 200 editoriales. Para más información, visita http://oreilly.com.

Cómo contactar con nosotros

Dirige tus comentarios y preguntas sobre este libro a la editorial:

  • O'Reilly Media, Inc.
  • 1005 Gravenstein Highway Norte
  • Sebastopol, CA 95472
  • 800-998-9938 (en Estados Unidos o Canadá)
  • 707-829-0515 (internacional o local)
  • 707-829-0104 (fax)

Tenemos una página web para este libro, donde se enumeran erratas, ejemplos y cualquier información adicional. Puedes acceder a esta página en https://oreil.ly/mastering-kafka-streams.

Envía un correo electrónico para comentar o hacer preguntas técnicas sobre este libro.

Para obtener noticias e información sobre nuestros libros y cursos, visita http://oreilly.com.

Encuéntranos en Facebook: http://facebook.com/oreilly.

Síguenos en Twitter: http://twitter.com/oreillymedia.

Míranos en YouTube: http://www.youtube.com/oreillymedia.

Agradecimientos

Ante todo, quiero dar las gracias a mi mujer, Elyse, y a mi hija, Isabelle. Escribir un libro supone una gran inversión de tiempo, y vuestra paciencia y apoyo durante todo el proceso me ayudaron enormemente. A pesar de lo mucho que he disfrutado escribiendo este libro, os he echado mucho de menos a las dos, y estoy deseando volver a tener más noches de cita y más tiempo de papá e hija.

También quiero dar las gracias a mis padres, Angie y Guy, por enseñarme el valor del trabajo duro y por ser una fuente inagotable de ánimos. Su apoyo me ha ayudado a superar muchos retos a lo largo de los años, y les estoy eternamente agradecido a ambos.

Este libro no sería posible sin las siguientes personas, que dedicaron gran parte de su tiempo a revisar su contenido y a proporcionar grandes comentarios y consejos a lo largo del camino: Matthias J. Sax, Robert Yokota, Nitin Sharma, Rohan Desai, Jeff Bleiel y Danny Elfanbaum. Gracias a todos por ayudarme a crear este libro, es tan vuestro como mío.

Muchos de los tutoriales se basaron en casos reales de uso empresarial, y tengo una deuda de gratitud con todos los miembros de la comunidad que compartieron abiertamente sus experiencias con Kafka Streams y ksqlDB, ya fuera a través de conferencias, podcasts, blogs o incluso entrevistas en persona. Vuestras experiencias ayudaron a dar forma a este libro, que haceespecial hincapié en aplicaciones prácticas de procesamiento de flujos. Nitin Sharma tambiénaportó ideas para los tutoriales de ksqlDB inspirados en Netflix, y Ramesh Sringeri compartió sus experiencias de procesamiento de flujos en Children's Healthcare of Atlanta, que inspiraron el tutorial de asistencia sanitaria predictiva. Gracias a ambos.

Un agradecimiento especial a Michael Drogalis por ser un gran defensor de este libro, incluso cuando sólo era un esbozo de ideas. También, gracias por ponerme en contacto con muchos de los revisores de este libro, y también a Jay Kreps, que amablemente escribió el prólogo. Los escritos técnicos de Yeva Byzek y Bill Bejeck también han puesto el listón muy alto para lo que debe ser este libro. Gracias a ambos por vuestras contribuciones en este espacio.

Ha habido muchas personas en mi carrera que me han ayudado a llegar a este punto. Mark Conde y Tom Stanley, gracias por abrirme las puertas de mi carrera como ingeniero de software. Barry Bowden, por ayudarme a ser mejor ingeniero y por ser un gran mentor. Erin Fusaro, por saber exactamente qué decir cada vez que me sentía abrumada, y por ser una roca en general. Justin Isasi, por tus continuos ánimos y por asegurarte de que mis esfuerzos no pasen desapercibidos. Sean Sawyer, por una sugerencia que me hiciste hace varios años, de que probara una cosa nueva llamada "Kafka Streams", que claramente se ha descontrolado. Thomas Holmes y Matt Farmer, por compartir vuestros conocimientos técnicos conmigo en muchas ocasiones, y ayudarme a ser mejor ingeniero. Y al equipo de Servicios de Datos de Mailchimp, gracias por ayudarme a resolver algunos problemas realmente interesantes, y por inspirarme con vuestro propio trabajo.

Por último, a mis amigos y familiares, que siguen a mi lado incluso cuando desaparezco durante meses para trabajar en un nuevo proyecto. Gracias por quedarte, esto ha sido largo.

Get Dominar Kafka Streams y ksqlDB now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.