Prefacio
Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com
Éste es un libro sobre la implementación continua: la práctica de estructurar tu canal de software de modo que esté completamente libre de intervención manual. Con esta metodología, cada confirmación de código que supera las puertas de calidad se implementa automáticamente en producción.
Este tema saca a la superficie una tensión a menudo debatida en la ingeniería de software: llegar a la producción rápidamente frente a llegar a la producción de forma segura. A primera vista, la implementación continua puede parecer lo primero, pero si se examina más de cerca, en realidad se ajusta a lo segundo. Mirándolo aún más de cerca, yo diría que no tenemos que elegir.
En las dos últimas décadas, hemos visto una serie de prácticas que demuestran cómo la velocidad y la fiabilidad van realmente de la mano cuando se trata de entregar software. DevOps, Programación eXtrema (XP), integración continua (IC) y entrega continua (CD): estas prácticas han demostrado una y otra vez cómo las iteraciones más cortas mejoran la estabilidad de los sistemas de producción, en lugar de obstaculizarla. Esto se debe a que las iteraciones más cortas reducen el tamaño de los cambios en cada versión, fomentan la comunicación entre roles, estimulan una cultura de automatización y permiten una retroalimentación temprana y continua. En general, las iteraciones más cortas y las implementaciones frecuentes mejoran la estabilidad y la calidad del software.
Considero que la implementación continua es el siguiente paso natural en esta línea de pensamiento.
Durante mi carrera como consultor de software, tuve la suerte de trabajar con varias empresas que ya practicaban la implementación continua o que la adoptaron poco después de que yo me uniera a su equipo. Me encantó su sencillez y rapidez, y a día de hoy creo sinceramente que fue la forma más eficaz de desarrollar software con la que me topé. Sin embargo, también me di cuenta de que no todo el mundo se sentía cómodo con ella al principio. Esto era especialmente cierto en el caso de los compañeros más jóvenes, o de los recién incorporados que nunca habían trabajado con esta práctica. Es comprensible que un código que pasa a producción en cuestión de minutos pueda suponer un choque cultural si estás acostumbrado a largas fases de pruebas manuales, largas ramas de características y aprobaciones manuales. Me encontré con que quería ayudar compartiendo recursos sobre cómo enfocarlo, pero encontré un vacío de literatura en torno a la práctica. Por lo tanto, lo único que pude compartir fue cómo ajusté mi propio flujo de trabajo y cómo empecé a escribir código de forma diferente una vez que supe que la implementación en producción sería casi inmediata.
Me di cuenta de que me repetía lo bastante a menudo, en un equipo tras otro, como para pensar que quizá era una idea que merecía la pena compartir con un público más amplio. Entonces no lo sabía, pero en mi cabeza ya había empezado a escribir el contenido de este libro.
He descubierto que la implementación continua es un incremento de la entrega continua lo suficientemente importante como para justificar su propio debate. Es importante porque aporta ventajas adicionales, tiene desventajas adicionales y requiere algunas consideraciones adicionales para funcionar bien dentro de un equipo. Todos esos "extras" son los que trataremos en este libro, partiendo de la base de la entrega continua para explorar la implementación continua totalmente automatizada en producción.
A quién va dirigido este libro
Escribí este libro para los compañeros profesionales de la industria del software, y especialmente para los ingenieros de software que ven el valor de mejorar el camino de su código hacia la producción.
En concreto, este libro es para ti si
Ya estás familiarizado con la entrega continua, pero no con la implementación continua, y tienes curiosidad por saber más al respecto.
Conoces la implementación continua y te preguntas si es un paso viable para tu equipo.
Ya has tomado la decisión de pasar a la implementación continua, pero quieres saber qué esperar una vez que elimines la puerta manual a la producción.
Estás poniendo en marcha un producto nuevo y quieres aprovechar la oportunidad para probar la implementación continua, pero te preguntas cómo configurarlo desde cero.
Estás en proceso de unirte a un equipo que ya adopta la implementación continua, y quieres entender por qué y cómo lo hacen.
Aunque el público principal de este libro son las personas que escriben código a diario, el libro también puede ser valioso para personas que desempeñan otras funciones, como ingenieros de control de calidad, propietarios de productos, gestores de productos, Scrum Masters, directores de ingeniería y personas que ocupan diversos puestos de liderazgo técnico. Si tu puesto de trabajo está en esta lista, puede que te interese especialmente la Parte I, "Implementación continua", que ofrece una visión más holística de la práctica. Además, los capítulos de la Parte II, "Antes del desarrollo", y de la Parte IV, "Después del desarrollo", explican cómo integrar otras funciones del equipo en un flujo de trabajo de implementaciones automatizadas a producción, lo cual es fundamental para aprovechar todo su potencial.
Si eres desarrollador, quizá quieras centrarte especialmente en la Parte III, "Durante el desarrollo", que explica con gran detalle cómo dividir el proceso de desarrollo en pequeñas Implementaciones de producción autónomas. También deberías echar un vistazo a la Parte V, "Casos prácticos", donde encontrarás ejemplos reales de empresas que practican la implementación continua y verás cómo estructuran sus canalizaciones y herramientas.
Qué necesitas para leer este libro
Dado que la implementación continua se basa en muchos otros conceptos que tienen su origen en el movimiento ágil, como DevOps, CI y CD, al menos deberías estar familiarizado superficialmente con ellos si quieres sacar el máximo partido a este libro.
Afortunadamente, la mayoría de las empresas actuales tienen al menos algún conocimiento de esas prácticas, y ya las aplican en cierta medida. En el Capítulo 1 haré una recapitulación exhaustiva de XP, DevOps, CI y CD para que puedas volver al "por qué" y refrescar la memoria.
Sin embargo, si tú y/o tu equipo no habéis oído hablar nunca de estas prácticas, quizá queráis investigarlas antes de plantearos adoptar la implementación continua, y dejar este libro para más adelante.
De qué tratará este libro
El libro consta de cinco partes, organizadas del siguiente modo:
- Parte I, "Implementación continua".
Esta parte del libro contiene toda la teoría y explica todo lo que necesitas saber sobre la implementación continua como práctica. El Capítulo 1 ofrece una introducción y un contexto histórico de la misma, el Capítulo 2 explica sus ventajas, el Capítulo 3 se centra en sus consecuencias y principales "gotchas", el Capítulo 4 explica los requisitos previos necesarios para adoptarla y el Capítulo 5 se centra en sus retos.
- Parte II, "Antes del desarrollo"
Aquí es donde las cosas empiezan a ser más prácticas. Esta parte del libro se centra en todas las actividades que apoyan la implementación continua antes de que el equipo empiece a escribir código, y es donde presento el ejemplo que se utilizará en el resto del libro. En concreto, el Capítulo 6 explica cómo dividir mejor tu backlog de producto para aprovechar las implementaciones frecuentes, mientras que el Capítulo 7 se centra en cómo agrupar los requisitos interfuncionales para que cada incremento esté listo para la producción.
- Parte III, "Durante el desarrollo"
En esta parte del libro, entramos en los detalles que pueden hacer o deshacer la implementación continua: cómo realizar el desarrollo diario como una secuencia de incrementos de producción pequeños y seguros. Siguiendo el ejemplo introducido en la Parte II, esta parte también presenta muestras de código exhaustivas. Las muestras están escritas en tres tecnologías que he elegido por su popularidad en el sector: JavaScript con React.js, Java con SpringBoot y SQL. Aunque no las hayas utilizado nunca, son tan populares que probablemente las conozcas lo suficientemente bien como para poder leer el código aunque trabajes en pilas diferentes. El Capítulo 8 muestra la adición de una nueva función implementación por implementación, y el Capítulo 9 se centra en cómo refactorizar incrementalmente una funcionalidad compleja que ya está activa. Por último, el Capítulo 10 se centra en los entresijos de la refactorización de almacenes de datos con implementaciones automatizadas.
- Parte IV, "Después del desarrollo"
La Parte IV es donde aprenderás todas las actividades que tienen lugar después del desarrollo, donde la implementación continua realmente da sus frutos. El Capítulo 11 trata de cómo realizar con seguridad pruebas exploratorias en producción, y el Capítulo 12 trata de todos los tipos de lanzamientos y pruebas A/B.
- Parte V, "Casos prácticos"
Por último, la Parte V consiste en una serie de casos prácticos escritos por compañeros profesionales del sector. Contiene las experiencias de primera mano de empresas que utilizan la implementación continua "in the wild", incluida la historia de cómo llegaron hasta allí, a qué retos se enfrentaron y cómo estructuran el camino de sus productos hasta la producción.
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.
Nota
Este elemento significa una nota general.
Advertencia
Este elemento indica una advertencia o precaución.
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 https://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-889-8969 (en Estados Unidos o Canadá)
- 707-827-7019 (internacional o local)
- 707-829-0104 (fax)
- support@oreilly.com
- https://www.oreilly.com/about/contact.html
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/continuous-deployment.
Para obtener noticias e información sobre nuestros libros y cursos, visita https://oreilly.com.
Encuéntranos en LinkedIn: https://linkedin.com/company/oreilly-media
Míranos en YouTube: https://youtube.com/oreillymedia
Agradecimientos
Cuando la gente dice "este libro no habría sido posible sin...", me parece que suele ser una exageración. En mi caso, sin embargo, es realmente cierto. Este libro definitivamente no existiría si no hubiera recibido el apoyo que recibí de dos colegas de Thoughtworks: Chris Ford y Andrew-Harmel Law, que me animaron a lo largo de todo el proceso y me ofrecieron revisiones técnicas y aportaciones muy meditadas (algunas de las cuales se convirtieron en parte esencial de este libro). Lo mismo puede decirse de varias personas de mi vida personal, pero sobre todo de Fergus Orbach, que me proporcionó todo tipo de información técnica y alimentó mi pasión por este tema; y de Daniel Forsberg, que ofreció su experiencia para ayudarme a terminar los últimos capítulos. Gracias a ambos por apoyarme durante todo el año que estuve escribiendo este libro. Por la misma razón, quiero dar las gracias a mis buenos amigos Rares Musina, Emma Baddeley, Anthony Scatchell, Giulia Mercurio, Glenn Wolfschoon, Nicolò Gardoni, Francesco Guatieri y Davide Orsucci.
También quiero expresar mi gratitud a las personas de O'Reilly que han hecho realidad este proyecto, especialmente a mis editoras, Shira Evans y Louise Corrigan. Ha sido un placer trabajar con vosotras. Añadiría a esta lista a todos mis colegas de Thoughtworks que me ayudaron a encontrar tiempo para dedicar a este libro, reunir los casos prácticos y promocionarlo, pero sois demasiados para mencionaros. En su lugar, expresaré mi agradecimiento a Thoughtworks en su conjunto por hacer que esto sea posible: Recibí un apoyo increíble para este proyecto, lo que demuestra que Thoughtworks sigue siendo un lugar fantástico para el crecimiento del liderazgo de pensamiento y los aspirantes a escritores.
Hablando de estudios de casos, quiero dar las gracias sinceramente a todas las empresas y personas que han contribuido a este libro con sus experiencias de primera mano: Maarten Ackermans, Julian Austin, Ilias Bartolini, Alberto Ramírez Fernández, Atte Huhtakangas, Lloyd Jones, Simon Mittermüller, Roberto Mosca, Alison Rosewarne, Javier Tejero, Thiago Vacare y Tom Vollerthun.
Get Despliegue continuo 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.