Prólogo
"¡Hasta la producción y más allá!"
Buzz Lightyear (parafraseando)
Sé que Buzz dijo "hasta el infinito y más allá", pero esa idea nunca me gustó cuando era niña. ¿Cómo se podía ir más allá del infinito? Sólo más tarde, cuando me convertí en ingeniero de software, me di cuenta de que el software nunca está completo. Nunca está acabado. Es... infinito. ¡Buzz perdió su vocación en el software!
El software no tiene fin. El software es como los océanos, las estrellas y los errores de tu código: ¡no tiene fin! Esperemos que esto no sea controvertido. En las últimas décadas, todos los que trabajamos en el campo del software hemos girado en torno a esta idea: la interminable cola del mantenimiento del software es la parte más cara de lo que hacemos. Buena parte de los movimientos significativos en el software giran en torno a eso. Pruebas e integración continua. Entrega continua. Computación en nube. Microservicios. No es difícil llegar a producción la primera vez, pero estas prácticas optimizan para los muchos viajes posteriores a producción. Optimizan para el segundo día. Optimizan para el tiempo de ciclo: ¿con qué rapidez puedes tomar una idea y verla entregada en producción, desde el concepto hasta el cliente? Optimizan para "y más allá".
Esta idea -que el software no tiene fin- introduce un montón de prácticas nuevas y pone en entredicho otras tantas prácticas existentes. Cambia el enfoque del desarrollo inicial y el MVP al mantenimiento y la gestión de ese software. La atención se centra en la producción.
Me encanta la producción. Deberías amar la producción. Deberías ir a producción, tan pronto y tan a menudo como sea posible. Trae a los niños. Trae a la familia. El tiempo es increíble.
Los grandes ingenieros de software construyen para la producción y para el viaje de vuelta. Construyen para el viaje sin fin. Ya no es aceptable retorcernos las manos colectivamente y tirar nuestro código por la borda: "¡Bueno, funciona en mi máquina! Ahora despliégalo tú ". Hay toda una nueva frontera ahí fuera -la producción- que exige un conjunto diferente de habilidades. La ingeniería de fiabilidad de sitios (SRE) es, según Ben Treynor, fundador del equipo de fiabilidad de sitios de Google, "lo que ocurre cuando a un ingeniero de software se le encarga lo que antes se llamaba operaciones". Los SRE comparten muchas habilidades con los ingenieros de software tradicionales, pero las enfocan de forma diferente, con la vista puesta en la producción.
Los desarrolladores de Spring Boot pueden y deben desarrollar habilidades de SRE, y pocos conocen las cuerdas mejor que el autor de este libro, Jonathan Schneider. Spring Boot tiene éxito porque se centra en la producción. Es extraordinario porque, junto con frameworks como Dropwizard, está construido de pies a cabeza para la producción. Admite la fácil agregación de métricas con Micrometer, las llamadas implementaciones fat .jar, los puntos finales de gestión Actuator, los eventos del ciclo de vida de la aplicación, la configuración al estilo 12 Factor, y mucho más. Spring Cloud es un conjunto de extensiones de Spring Boot diseñadas para soportar la arquitectura de microservicios. Y todo eso por no hablar del rico soporte de plataforma. Spring Boot es nativo de contenedores. Y plataformas como Cloud Foundry o Kubernetes son dos caras de la misma moneda. Spring Boot admite el apagado graceful, los grupos de salud, las sondas de liveness y readiness, la generación de imágenes Docker (aprovechando los buildpacks CNCF), y mucho más.
Y apuesto a que no conocías la mayoría de esas funciones. Pero Jonathan lo sabe. Jonathan vive y respira estas cosas. Creó el proyecto Micrometer, un marco de métricas dimensionales compatible con docenas de plataformas de métricas y monitoreo diferentes, y luego ayudó a integrarlo en el módulo Actuator de Spring Boot, y en innumerables proyectos de código abierto de terceros. Le he visto trabajar en métricas, herramientas de entrega continua como Spinnaker, y herramientas de observabilidad como Micrometer, y en general allanar el camino a la producción para otros. Tiene años de experiencia en el aprovechamiento de Spring y Spring Boot a escala mundial, y aunque puede lanzar repositorios de Spring Data y crear API HTTP con los mejores, su genio está en la forma en que construye para ese viaje sin fin.
Y ahora podemos aprender de él en este libro.
El capítulo 1 es una especie de manifiesto: léelo para ponerte en el estado de ánimo adecuado para el libro. ¡Debería haber leído este capítulo primero!
Debería haberlo hecho, pero no lo hice. Me salté el Capítulo 2, que presenta la instrumentación y las métricas. Aunque estaba ansioso por leer el libro de principio a fin, este capítulo me entusiasmó. No es de extrañar que el creador de Micrómetro pudiera articular tan bien los conceptos de este capítulo. Los capítulos 2 a 4 son unas horas muy bien invertidas. Son brillantes. 5/5: lo volvería a leer (y lo hice).
El capítulo 5 presenta las nubes, los conceptos básicos, los tipos de plataformas y los patrones exclusivos de estas plataformas. Este capítulo fue para mí uno de los más perspicaces. Empieza despacio, y lo siguiente que sabes es que estás hasta arriba de scripts de implementación en un debate que cambia las reglas del juego sobre la entrega continua, el análisis canario y mucho más. Lee este capítulo dos veces.
El Capítulo 6 te ofrece un marco y soluciones específicas para comprender tu base de código y sus dependencias. Nunca había visto todas estas preocupaciones presentadas en un marco tan completo como éste.
El capítulo 7 es un capítulo de cierre apropiado para un libro asombroso, ya que examina las interacciones de los servicios desplegados en producción. A estas alturas ya habrás aprendido a llevar el software a producción y a observar los servicios y su código fuente. Este capítulo trata sobre las interacciones de los servicios y la dinámica de la carga en una arquitectura.
Aprendí algo nuevo en cada capítulo. El libro está lleno de la sabiduría de un verdadero nativo de la nube, y creo que la comunidad lo necesita. Jonathan es un guía fantástico en el interminable viaje hacia la producción... y más allá.
Get SRE con Microservicios Java 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.