Prefacio O: ¿En qué te estás metiendo?

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

Hola lector aventurero, ¡bienvenido a nuestro libro! Llegados a este punto, supongo que o bien estás interesado en saber más sobre las maravillas de la elaboración de arroyos, o bien esperas pasar unas horas leyendo sobre la gloria de la majestuosa trucha marrón. En cualquier caso, ¡te saludo! Dicho esto, los que estéis en este último caso y no tengáis conocimientos avanzados de informática, deberíais considerar hasta qué punto estáis preparados para enfrentaros a la decepción antes de seguir adelante; caveat piscator, y todo eso.

Para establecer el tono de este libro desde el principio, quería avisarte de un par de cosas. En primer lugar, este libro es un poco extraño porque tiene varios autores, pero no pretendemos que todos hablemos y escribamos con la misma voz, como si fuéramos trillizos idénticos que han nacido de padres diferentes. Porque, por muy interesante que parezca, el resultado final sería menos agradable de leer. En lugar de eso, hemos optado por escribir cada uno con nuestra propia voz, y hemos concedido al libro la suficiente conciencia de sí mismo como para poder hacer referencia a cada uno de nosotros cuando proceda, pero no tanta conciencia de sí mismo como para que se resienta de nosotros por haberlo convertido sólo en un libro y no en algo más genial, como un dinosaurio robot con acento escocés.1

En cuanto a las voces, hay tres con las que te encontrarás:

Tyler

Ese sería yo. Si no se te ha dicho explícitamente que va a hablar otra persona, puedes suponer que soy yo, porque añadimos a los demás autores algo tarde, y básicamente me dije "diablos, no" cuando pensé en volver atrás y actualizar todo lo que ya había escrito. Soy el director técnico del grupo de Lenguajes y Sistemas de Procesamiento de Datos2 de Google, responsable de Google Cloud Dataflow, los esfuerzos de Apache Beam de Google y los sistemas de procesamiento de datos internos de Google, como Flume, MillWheel y MapReduce. También soy miembro fundador del Apache Beam PMC.

Figura P-1. La cubierta que podría haber sido...
Slava

Slava fue miembro durante mucho tiempo del equipo MillWheel de Google, y más tarde miembro original del equipo Windmill que construyó el sucesor de MillWheel, el sistema hasta ahora sin nombre que impulsa el Motor de Flujo en Google Cloud Dataflow. Slava es el mayor experto en marcas de agua y semántica temporal en sistemas de procesamiento de flujos de todo el mundo, y punto. Por tanto, no te sorprenderá que sea el autor del Capítulo 3, Marcas de agua.

Reuven

Reuven está al final de esta lista porque tiene más experiencia en el procesamiento de flujos que Slava y yo juntos y, por tanto, nos aplastaría si se le colocara más arriba. Reuven ha creado o dirigido la creación de casi toda la magia interesante a nivel de sistemas en los motores de procesamiento de flujos de propósito general de Google, incluyendo la aplicación de una cantidad incalculable de atención al detalle para proporcionar un alto rendimiento, baja latencia, semántica exactamente una vez en un sistema que, sin embargo, utiliza puntos de control de grano fino. Puede que no te sorprenda que sea el autor del Capítulo 5, Exactamente una vez y efectos secundarios. También es miembro del PMC de Apache Beam.

Navegar por este libro

Ahora que sabes de quién vas a oír hablar, el siguiente paso lógico sería averiguar de qué vas a oír hablar, lo que nos lleva a la segunda cosa que quería mencionar. Conceptualmente, este libro consta de dos partes principales, cada una de ellas con cuatro capítulos, y cada una seguida de un capítulo que se sostiene por sí solo de forma relativamente independiente.

La diversión comienza con la Parte I, El Modelo Beam (Capítulos 1-4), que se centra en el modelo de procesamiento de datos de alto nivel por lotes más streaming, desarrollado originalmente para Google Cloud Dataflow, donado más tarde a la Apache Software Foundation como Apache Beam, y también visto ahora en su totalidad o en parte en la mayoría de los demás sistemas de la industria. Se compone de cuatro capítulos:

  • Capítulo 1, Streaming 101, que cubre los fundamentos del procesamiento de flujos, estableciendo alguna terminología, discutiendo las capacidades de los sistemas de streaming, distinguiendo entre dos importantes dominios de tiempo (tiempo de procesamiento y tiempo de evento), y finalmente examinando algunos patrones comunes de procesamiento de datos.

  • Capítulo 2, El qué, dónde, cuándo y cómo del procesamiento de datos, que cubre en detalle los conceptos básicos del procesamiento robusto de flujos sobre datos fuera de orden, cada uno analizado en el contexto de un ejemplo concreto en ejecución y con diagramas animados para resaltar la dimensión del tiempo.

  • Capítulo 3, Marcas de agua (escrito por Slava), que ofrece un profundo estudio de las métricas de progreso temporal, cómo se crean y cómo se propagan por las canalizaciones. Termina examinando los detalles de dos implementaciones de marcas de agua del mundo real.

  • Capítulo 4, Ventanas avanzadas, que retoma el tema donde lo dejó el Capítulo 2, profundizando en algunos conceptos avanzados de ventanas y desencadenantes, como las ventanas de tiempo de procesamiento, las sesiones y los desencadenantes de continuación.

Entre las Partes I y II, proporcionando un interludio tan oportuno como importantes son los detalles que contiene, se encuentra el Capítulo 5, Exactamente una vez y efectos secundarios (escrito por Reuven). En él, enumera los retos de proporcionar una semántica de procesamiento exactamente una vez (o efectivamente una vez) de extremo a extremo y recorre los detalles de implementación de tres enfoques diferentes del procesamiento exactamente una vez: Apache Flink, Apache Spark y Google Cloud Dataflow.

A continuación comienza la Parte II, Flujos y tablas (Capítulos 6-9), que profundiza en lo conceptual e investiga la forma de pensar de nivel inferior "flujos y tablas" sobre el procesamiento de flujos, popularizada recientemente por algunos ciudadanos honrados de la comunidad Apache Kafka pero, por supuesto, inventada hace décadas por gente de la comunidad de bases de datos, porque ¿no lo era todo? También se compone de cuatro capítulos:

  • Capítulo 6, Corrientes y Tablas, que introduce la idea básica de corrientes y tablas, analiza el enfoque clásico de MapReduce a través de una lente de corrientes y tablas, y luego construye una teoría de corrientes y tablas lo suficientemente general como para abarcar toda la amplitud del Modelo Beam (y más allá).

  • El Capítulo 7, Los aspectos prácticos del estado persistente, que considera las motivaciones para el estado persistente en los conductos de flujo, examina dos tipos comunes de estado implícito y, a continuación, analiza un caso de uso práctico (atribución de publicidad) para informar de las características necesarias de un mecanismo general de gestión del estado.

  • Capítulo 8, SQL de flujo, que investiga el significado del flujo en el contexto del álgebra relacional y SQL, contrasta los sesgos inherentes al flujo y a las tablas en el Modelo Beam y en el SQL clásico tal y como existen en la actualidad, y propone un conjunto de posibles caminos hacia la incorporación de una semántica de flujo robusta en SQL.

  • El Capítulo 9, Uniones en flujo, que estudia diversos tipos de uniones, analiza su comportamiento en el contexto del flujo y, por último, examina en detalle un caso de uso de uniones en flujo útil pero mal soportado: las ventanas de validez temporal.

Por último, cierra el libro el Capítulo 10, La evolución del procesamiento de datos a gran escala, que recorre una historia centrada en el linaje MapReduce de los sistemas de procesamiento de datos, examinando algunas de las importantes contribuciones que han hecho evolucionar los sistemas de streaming hasta lo que son hoy.

Para llevar

Como orientación final, si me pidieras que describiera las cosas que más deseo que los lectores se lleven de este libro, diría lo siguiente:

  • Lo más importante que puedes aprender de este libro es la teoría de los flujos y las tablas y cómo se relacionan entre sí. Todo lo demás se basa en eso. No, no llegaremos a este tema hasta el Capítulo 6. No pasa nada; la espera merece la pena, y para entonces estarás mejor preparado para apreciar sus maravillas.

  • Las relaciones variables en el tiempo son una revelación. Son la encarnación del procesamiento de flujos: una encarnación de todo aquello para lo que se han construido los sistemas de flujo y una poderosa conexión con las herramientas familiares que todos conocemos y amamos del mundo de los lotes. No aprenderemos sobre ellas hasta el Capítulo 8, pero de nuevo, el viaje hasta allí te ayudará a apreciarlas aún más.

  • Un motor de streaming distribuido bien escrito es algo mágico. Podría decirse que esto es válido para los sistemas distribuidos en general, pero a medida que aprendes más sobre cómo se construyen estos sistemas para proporcionar la semántica que proporcionan (en particular, los casos prácticos de los Capítulos 3 y 5), se hace más evidente cuánto trabajo pesado hacen por ti.

  • LaTeX/Tikz es una herramienta increíble para hacer diagramas, animados o no. Una herramienta horrible y crujiente, con perímetros afilados y tétanos, pero una herramienta increíble al fin y al cabo. Espero que la claridad que los diagramas animados de este libro aportan a los complejos temas que tratamos inspire a más gente a probar LaTeX/Tikz (en "Figuras", proporcionamos un enlace a la fuente completa de las animaciones 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.

Recursos en línea

Hay un puñado de recursos asociados en Internet que te ayudarán a disfrutar de este libro.

Cifras

Todas las figuras de este libro están disponibles en formato digital en el sitio web del libro. Esto es especialmente útil para las figuras animadas, de las que sólo aparecen unos pocos fotogramas (estilo cómic) en los formatos no Safari del libro:

Las propias figuras animadas son dibujos LaTeX/Tikz, renderizados primero en PDF y luego convertidos en GIF animados mediante ImageMagick. Para los más intrépidos, el código fuente completo y las instrucciones para renderizar las animaciones (de este libro, las entradas de blog "Streaming 101" y "Streaming 102", y el documento original del Modelo de Flujo de Datos) están disponibles en GitHub en http://github.com/takidau/animations. Ten en cuenta que se trata de unas 14.000 líneas de código LaTeX/Tikz que creció de forma muy orgánica, sin intención de que otros lo leyeran y utilizaran. En otras palabras, es un entramado desordenado y entrelazado de conjuros arcaicos; daos la vuelta ahora o abandonad toda esperanza los que entréis aquí, porque hay dragones.

Fragmentos de código

Aunque este libro es en gran medida conceptual, se utilizan varios fragmentos de código y de pseudocódigo para ilustrar algunos puntos. El código de los conceptos más funcionales del Modelo Beam de los Capítulos 2 y 4, así como los conceptos más imperativos de estado y temporizadores del Capítulo 7, están disponibles en línea en http://github.com/takidau/streamingbook. Dado que el objetivo principal es comprender la semántica, el código se proporciona principalmente como implementaciones de Beam PTransform/DoFn y las pruebas unitarias correspondientes. También hay una implementación de una tubería independiente para ilustrar la diferencia entre una prueba unitaria y una tubería real. La disposición del código es la siguiente:

src/main/java/net/streamingbook/BeamModel.java

Haz PTransform implementaciones de los Ejemplos 2-1 a 2-9 y del Ejemplo 4-3, cada una con un método adicional que devuelve el resultado esperado cuando se ejecuta sobre los conjuntos de datos de ejemplo de esos capítulos.

src/test/java/net/streamingbook/BeamModelTest.java

Pruebas unitarias que verifican el ejemplo PTransforms en BeamModel.java mediante conjuntos de datos generados que coinciden con los del libro.

src/main/java/net/streamingbook/Ejemplo2_1.java

Versión independiente de la canalización del Ejemplo 2-1 que puede ejecutarse localmente o mediante un Beam runner distribuido.

src/main/java/net/streamingbook/entradas.csv

Archivo de entrada de ejemplo para Ejemplo2_1.java que contiene el conjunto de datos del libro.

src/main/java/net/streamingbook/StateAndTimers.java

Código Beam que implementa el ejemplo de atribución de conversiones del Capítulo 7 utilizando las primitivas de estado y temporizadores de Beam.

src/test/java/net/streamingbook/StateAndTimersTest.java

Prueba unitaria que verifica la atribución de conversión DoFns de StateAndTimers.java.

src/main/java/net/streamingbook/ValidityWindows.java

Aplicación de ventanas de validez temporal.

src/main/java/net/streamingbook/Utils.java

Métodos de utilidad compartida.

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 un CD-ROM de 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 significativa de código de ejemplo de este libro en la documentación de tu producto sí requiere permiso.

Agradecemos, pero no exigimos, la atribución. Una atribución suele incluir el título, el autor, la editorial y el ISBN. Por ejemplo "Streaming Systems por Tyler Akidau, Slava Chernyak y Reuven Lax (O'Reilly). Copyright 2018 O'Reilly Media, Inc., 978-1-491-98387-4".

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

Safari O'Reilly

Nota

Safari (antes Safari Books Online) es una plataforma de formación y referencia basada en membresías para empresas, administraciones públicas, educadores y particulares.

Los miembros tienen acceso a miles de libros, vídeos de formación, rutas de aprendizaje, tutoriales interactivos y listas de reproducción de más de 250 editoriales, como O'Reilly Media, Harvard Business Review, Prentice Hall Professional, Addison-Wesley Professional, Microsoft Press, Sams, Que, Peachpit Press, Adobe, Focal Press, Cisco Press, John Wiley & Sons, Syngress, Morgan Kaufmann, IBM Redbooks, Packt, Adobe Press, FT Press, Apress, Manning, New Riders, Jones & Bartlett y Course Technology, entre otras. Sons, Syngress, Morgan Kaufmann, IBM Redbooks, Packt, Adobe Press, FT Press, Apress, Manning, New Riders, McGraw-Hill, Jones & Bartlett y Course Technology, entre otras.

Para más información, visita http://www.oreilly.com/safari.

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 http://bit.ly/streaming-systems.

Para hacer comentarios o preguntas técnicas sobre este libro, envía un correo electrónico a

Para más información sobre nuestros libros, cursos, conferencias y noticias, consulta nuestro sitio web en http://www.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

Por último, pero no por ello menos importante: muchas personas son increíbles, y nos gustaría agradecer aquí a un subconjunto específico de ellas su ayuda en la creación de este tomo.

El contenido de este libro destila el trabajo de un número incalculable de personas extremadamente inteligentes de Google, de la industria y del mundo académico en general. A todos ellos les debemos una sincera expresión de gratitud y lamentamos no poder enumerarlos a todos aquí, aunque lo intentáramos, que no lo haremos.

Entre nuestros colegas de Google, hay que dar las gracias a todos los miembros del equipo DataPLS (y a sus diversos equipos antecesores: Flume, MillWheel, MapReduce, etc.), que han ayudado a hacer realidad muchas de estas ideas a lo largo de los años. En particular, nos gustaría dar las gracias a:

  • Paul Nordstrom y el resto del equipo MillWheel de la Edad de Oro de MillWheel: Alex Amato, Alex Balikov, Kaya Bekiroğlu, Josh Haberman, Tim Hollingsworth, Ilya Maykov, Sam McVeety, Daniel Mills y Sam Whittle por imaginar y construir un conjunto de primitivas de bajo nivel tan completo, robusto y escalable, sobre el que más tarde pudimos construir los modelos de alto nivel que se tratan en este libro. Sin su visión y habilidad, el mundo del procesamiento de flujos a gran escala sería muy diferente.

  • Craig Chambers, Frances Perry, Robert Bradshaw, Ashish Raniwala y el resto del equipo de Flume de antaño por imaginar y crear la expresiva y potente base de procesamiento de datos que más tarde pudimos unificar con el mundo del streaming.

  • Sam McVeety por ser el autor principal del documento MillWheel original, que puso nuestro pequeño y asombroso proyecto en el mapa por primera vez.

  • Grzegorz Czajkowski por apoyar repetidamente nuestros esfuerzos de evangelización, incluso cuando se avecinaban plazos y prioridades que competían entre sí.

En términos más generales, el mérito es de todos los miembros de las comunidades Apache Beam, Calcite, Kafka, Flink, Spark y Storm. Todos y cada uno de estos proyectos han contribuido materialmente al avance del estado del arte en el procesamiento de flujos para el mundo en general durante la última década. Gracias a todos.

Para dar las gracias de forma un poco más específica, también nos gustaría dar las gracias a:

  • Martin Kleppmann, por liderar la defensa de la forma de pensar de los flujos y las tablas, y también por invertir una enorme cantidad de tiempo aportando montones de perspicaces contribuciones técnicas y editoriales a los borradores de cada capítulo de este libro. Todo esto, además de ser una inspiración y un gran tipo en general.

  • Julian Hyde, por su perspicaz visión y contagiosa pasión por el streaming SQL.

  • Jay Kreps, por luchar contra la tiranía de la Arquitectura Lambda; fue tu entrada original "Cuestionando la Arquitectura Lambda" la que animó a Tyler lo suficiente como para salir y unirse también a la refriega.

  • Stephan Ewen, Kostas Tzoumas, Fabian Hueske, Aljoscha Krettek, Robert Metzger, Kostas Kloudas, Jamie Grier, Max Michels, y el resto de la extensa familia de Artesanos de los datos, pasada y presente, por ir siempre más allá de lo que es posible en el procesamiento de flujos, y hacerlo de forma siempre abierta y colaborativa. El mundo del streaming es un lugar mucho mejor gracias a todos vosotros.

  • Jesse Anderson, por sus diligentes revisiones y por todos los abrazos. Si ves a Jesse, dale un fuerte abrazo de mi parte.

  • Danny Yuan, Sid Anand, Wes Reisz, y la increíble conferencia de desarrolladores QCon, por darnos nuestra primera oportunidad de hablar públicamente dentro de la industria sobre nuestro trabajo, en la QCon San Francisco 2014.

  • Ben Lorica de O'Reilly y la emblemática Conferencia Strata Data, por apoyar repetidamente nuestros esfuerzos por evangelizar el procesamiento de flujos, ya sea en línea, en papel o en persona.

  • A toda la comunidad de Apache Beam, y en particular a nuestros compañeros de commit, por ayudarnos a impulsar la visión de Beam: Ahmet Altay, Amit Sela, Aviem Zur, Ben Chambers, Griselda Cuevas, Chamikara Jayalath, Davor Bonaci, Dan Halperin, Etienne Chauchot, Frances Perry, Ismaël Mejía, Jason Kuster, Jean-Baptiste Onofré, Jesse Anderson, Eugene Kirpichov, Josh Wills, Kenneth Knowles, Luke Cwik, Jingsong Lee, Manu Zhang, Melissa Pashniak, Mingmin Xu, Max Michels, Pablo Estrada, Pei He, Robert Bradshaw, Stephan Ewen, Stas Levin, Thomas Groh, Thomas Weise y James Xu.

Ninguna sección de agradecimientos estaría completa sin un guiño a la cohorte, por lo demás sin rostro, de incansables revisores cuyos perspicaces comentarios ayudaron a convertir la basura en genialidad: Jesse Anderson, Cosmin Arad, Grzegorz Czajkowski, Marián Dvorský, Stephan Ewen, Rafael J. Fernández-Moctezuma, Martin Kleppmann, Kenneth Knowles, Sam McVeety, Mosha Pasumansky, Frances Perry, Jelena Pjesivac-Grbovic, Jeff Shute y William Vambenepe. Sois el Sr. Fusión de nuestra Máquina del Tiempo DeLorean. Eso sonaba mejor en mi cabeza: mira, de esto es de lo que estoy hablando.

Y, por supuesto, un gran agradecimiento a nuestro equipo de autoría y apoyo a la producción:

  • Marie Beaugureau, nuestra editora original, por toda su ayuda y apoyo para poner en marcha este proyecto y su eterna paciencia con mi persistente deseo de subvertir las normas editoriales. ¡Te echamos de menos!

  • Jeff Bleiel, nuestro editor 2.0, por tomar las riendas y ayudarnos a conseguir este monstruoso proyecto y por su paciencia eterna con nuestra incapacidad para cumplir hasta el más modesto de los plazos. ¡Lo hemos conseguido!

  • Bob Russell, nuestro corrector, por leer nuestro libro más detenidamente de lo que nadie debería tener que hacerlo nunca. Me quito el sombrero ante su magistral dominio de la gramática, la puntuación, el vocabulario y las anotaciones de Adobe Acrobat.

  • Nick Adams, nuestro intrépido editor de producción, por ayudarnos a convertir un lío de código HTMLBook totalmente incompleto en una belleza digna de imprimirse y por no enfadarse conmigo cuando le pedí que ignorara manualmente las muchas, muchas sugerencias individuales de Bob para cambiar nuestro uso del término "datos" del plural al singular. Has conseguido que este libro sea incluso mejor de lo que yo esperaba, gracias.

  • Ellen Troutman-Zaig, nuestra indizadora, por tejer de algún modo una enmarañada red de referencias improvisadas en un índice útil y exhaustivo. Me asombra tu atención al detalle.

  • Rebecca Panzer, nuestra ilustradora, por embellecer nuestros diagramas estáticos y por asegurarle a Nick que no necesitaba pasar más fines de semana averiguando cómo refactorizar mis diagramas LaTeX animados para que tuvieran fuentes más grandes. ¡Uf x2!

  • Kim Cofer, nuestra correctora, por señalar lo descuidados e incoherentes que éramos para que otros no tuvieran que hacerlo.

Tyler quiere dar las gracias a

  • Mis coautores, Reuven Lax y Slava Chernyak, por dar vida a sus ideas y capítulos de un modo que yo nunca hubiera podido.

  • George Bradford Emerson II, por la inspiración en Sean Connery. Es mi chiste favorito del libro y ni siquiera hemos llegado al primer capítulo. A partir de aquí todo va cuesta abajo, amigos.

  • Rob Schlender, por la increíble botella de whisky que me va a comprar poco antes de que los robots se apoderen del mundo. ¡Brindo por caer con estilo!

  • Mi tío, Randy Bowen, por hacer que descubriera lo mucho que me gustan los ordenadores y, en particular, ese disquete casero POV-Ray 2.x que me abrió todo un mundo nuevo.

  • Mis padres, David y Marty Dauwalder, sin cuya dedicación e increíble perseverancia nada de esto habría sido posible. Sois los mejores padres del mundo, ¡de verdad!

  • Dr. David L. Vlasuk, sin el cual sencillamente no estaría hoy aquí. Gracias por todo, Dr. V.

  • Mi maravillosa familia, Shaina, Romi e Ione Akidau, por su apoyo inquebrantable para completar este esfuerzo levianthantino, a pesar de las muchas noches y fines de semana que pasamos separados por ello. Os quiero siempre.

  • Mi fiel compañero de escritura, Kiyoshi: aunque sólo dormiste y ladraste a los carteros durante todo el tiempo que trabajamos juntos en el libro, lo hiciste de forma impecable y aparentemente sin esfuerzo. Eres un orgullo para tu especie.

Slava quiere dar las gracias a

  • Josh Haberman, Sam Whittle y Daniel Mills por ser los codiseñadores y cocreadores de las marcas de agua en MillWheel y, posteriormente, en Streaming Dataflow, así como de muchas otras partes de estos sistemas. Sistemas tan complejos como éstos nunca se diseñan en el vacío, y sin todas las reflexiones y el duro trabajo que cada uno de vosotros habéis realizado, no estaríamos hoy aquí.

  • Stephan Ewen, de Data Artisans, por ayudarme a dar forma a mis pensamientos y comprensión de la implementación de la marca de agua en Apache Flink.

Reuven quiere dar las gracias

  • Paul Nordstrom por su visión, Sam Whittle, Sam McVeety, Slava Chernyak, Josh Haberman, Daniel Mills, Kaya Bekiroğlu, Alex Balikov, Tim Hollingsworth, Alex Amato e Ilya Maykov por todos sus esfuerzos en la construcción del sistema MillWheel original y la redacción del artículo posterior.

  • Stephan Ewen, de Data Artisans, por su ayuda en la revisión del capítulo sobre semántica exactamente una vez, y sus valiosos comentarios sobre el funcionamiento interno de Apache Flink.

Por último, nos gustaría darte las gracias a ti, glorioso lector , por estar dispuesto a gastarte dinero de verdad en este libro para oírnos parlotear sobre las cosas tan chulas que construimos y con las que jugamos. Ha sido un placer escribirlo todo, y hemos hecho todo lo posible para asegurarnos de que tu dinero valga la pena. Si por alguna razón no te gusta... esperemos que hayas comprado la edición impresa para que al menos puedas tirarla por la habitación con asco antes de venderla en una librería de segunda mano. Cuidado con el gato.3

1 Que por cierto es lo que pedimos que fuera la portada de nuestro libro de animales, pero O'Reilly consideró que no se traduciría bien en arte lineal. Discrepo respetuosamente, pero una trucha marrón es un compromiso justo.

2 O DataPLS, pronunciado Datapals, ¿lo entiendes?

3 O no. En realidad no me gustan los gatos.

Get Sistemas de streaming 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.