Prólogo
Cuando empezamos a escribir Entrega Continua en Java en 2017, tanto Abraham Marín-Pérez como yo sabíamos que DevOps sería una parte importante de nuestro libro. Desde entonces, la importancia de que los desarrolladores Java conozcan y comprendan los conceptos operativos no ha hecho más que aumentar. Con el auge de tecnologías como la nube y los contenedores, y los conceptos de apoyo de la observabilidad y la ingeniería de fiabilidad del sitio (SRE), la gran mayoría de nosotros ya no somos "sólo" desarrolladores; ahora somos a menudo responsables de la codificación, el envío y la ejecución de nuestras aplicaciones. Por lo tanto, tiene sentido que los desarrolladores adopten las operaciones y viceversa.
El término DevOps no es nuevo; se utiliza desde hace unos 15 años. El concepto se basó originalmente en la infraestructura ágil, que surgió de la Conferencia Ágil de 2008 en Toronto, donde Patrick Debois, Andrew Clay Shafer y muchos otros se reunieron para debatir los retos de los enfoques tradicionales de administración de sistemas. El deseo de "programar" la infraestructura significaba que siempre ha existido la influencia de la ingeniería de software en este espacio. En la conferencia O'Reilly Velocity de 2009, John Allspaw y Paul Hammond presentaron su ya famosa charla titulada "10 Implementaciones al Día: Dev and Ops Cooperation at Flickr" (10 despliegues al día: cooperación entre desarrollo y operaciones en Flickr), que cimentó la importancia de la colaboración entre desarrollo y operaciones.
En mi trabajo diario en Ambassador Labs, veo que cada vez más organizaciones construyen plataformas para permitir a los desarrolladores poner rápidamente sus ideas y su código en producción y delante de los clientes. Los dos objetivos más importantes son obtener un feedback rápido y hacerlo de forma segura, sin fallos ni incidentes de seguridad. En mi opinión, estas plataformas son los productos resultantes de la colaboración eficaz entre desarrollo y operaciones.
Sabemos por la investigación de la Dra. Nicole Forsgren, Jez Humble y Gene Kim, que se plasmó en el libro de lectura obligada, Accelerate (IT Revolution Press, 2018), que las organizaciones de alto rendimiento tienen una mayor frecuencia de implementación, un menor tiempo de espera para los cambios, una menor tasa de fallos en los cambios y un menor tiempo medio para restaurar los problemas de producción. En todos estos factores influyen tu plataforma, tus procesos y tus personas. Los desarrolladores tienen que pensar como operadores, y los operadores tienen que adoptar los principios del desarrollo. Todo es cuestión de propiedad compartida, y esto empieza con una comprensión compartida. Este libro te ayudará a desarrollar este entendimiento compartido.
Como desarrollador, sin duda has estado utilizando el control de versiones para almacenar y gestionar el código de tu aplicación durante la última década. Las prácticas DevOps modernas, como GitOps, llevan esto un paso más allá y almacenan el código y la configuración de la aplicación y la infraestructura en el control de versiones. Por tanto, es vital que aprendas las habilidades de los sistemas de control de versiones que se presentan en los primeros capítulos.
El auge de los microservicios ha presentado muchas oportunidades para los desarrolladores, y también muchos retos. Algunos de estos retos pueden mitigarse utilizando la tecnología adecuada. Los contenedores y los marcos de programación relacionados, como Kubernetes, ayudan a empaquetar y ejecutar microservicios de forma estandarizada y automatizada.
Por supuesto, también tendrás que comprender el impacto de estas tecnologías "nativas de la nube" en las prácticas de integración continua y entrega continua. Los autores de este libro han hecho un excelente trabajo al guiarte por todos los pasos relacionados, desde la gestión de paquetes hasta la seguridad de los artefactos y la implementación.
He tenido la suerte de aprender de primera mano de todos los autores. He perdido la cuenta del número de veces que he asistido a una conferencia sobre DevOps con multitud de gente deambulando sólo para ver el característico sombrero de copa de Baruch moviéndose lentamente entre la multitud, o chocar con un motorista con chaqueta de cuero, sólo para darme cuenta de que es Stephen. A partir de este momento, sé que pronto me veré envuelto en interesantes conversaciones sobre la entrega continua y el ecosistema Java.
También he seguido con interés las enseñanzas de Melissa sobre construcción y seguridad de contenedores como parte de su trabajo en JFrog. Y verla recibir su reconocimiento de Campeona Java en directo (¡e inesperadamente!) en Jfokus 2021 fue un gran momento. Ixchel ha sido durante mucho tiempo una influencia orientadora en los espacios Java y JVM. Desde que asistí por primera vez a JavaOne, allá por 2013 -donde la vi copresentar con Andrés Almiray el futuro de la JVM políglota-, he aprendido muchas cosas de ella que me han hecho mejor desarrollador.
También he tenido el privilegio de participar en varios paneles junto a Ana-Maria Mihalceanu (autora del Capítulo 8) a lo largo de los años, y recientemente he tratado temas como los contenedores, Kubernetes y Quarkus. Siempre disfruto escuchando su opinión sobre el impacto operativo de las nuevas tecnologías en la plataforma Java, y normalmente salgo de nuestra conversación con un montón de nuevas herramientas que investigar.
Tanto si eres un programador Java experimentado que se inicia en el espacio DevOps, como si eres un programador novato deseoso de ampliar tus conocimientos sobre contenedores y la nube, sé que aprenderás muchas cosas de este libro. ¿A qué esperas? Siéntate, coge tu infusión favorita (¿quizá una taza de Java?), y prepárate para subir de nivel en todo lo relacionado con las herramientas DevOps para desarrolladores Java.
Get Herramientas DevOps para desarrolladores 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.