Pierde el miedo a desplegar a producción en viernes - Miguel Ángel Durán
Clase 8 de 42 • Platzi CONF 2022
Resumen
¿Qué significa desplegar en viernes?
Enfrentar el temor a desplegar nuevas funcionalidades en producción un viernes es todo un reto para los equipos de tecnología. Este miedo proviene del riesgo de que algo salga mal y cause trabajosas correcciones durante el fin de semana. Sin embargo, hay empresas y desarrolladores que desafían esta regla no escrita con éxito.
¿Por qué evitamos los despliegues en viernes?
El temor a los despliegues en viernes surge del deseo de evitar problemas que requieran trabajo extra durante el fin de semana. Las razones son múltiples:
- Errores de producto: Tememos cometer un error que colapse la producción.
- Material humano: Queremos evitar que el equipo trabaje tiempo extra no planificado.
El miedo se alía con el odio hacia los problemas no resueltos y lleva a una resistencia al cambio. Pero, ¿es posible enfrentar este temor y planificar de manera que los despliegues en viernes sean tan seguros como cualquier otro día?
¿Cómo podemos minimizar riesgos con testing?
El testing se presenta como la salvación ante los fuegos de producción. Diseñar y ejecutar pruebas automáticas contribuye a reducir errores y asegura la estabilidad del sistema ante nuevas implementaciones.
¿Cómo establecemos una estrategia efectiva de testing?
- Tests End to End (E2E): Prioriza pruebas generales que simulen la experiencia del usuario, como agregar productos a un carrito y finalizar compras.
- Pruebas unitarias e integración: Estas pueden ser desarrolladas utilizando herramientas como Jest y React Testing Library.
- Linting y análisis estático: Utiliza linters o TypeScript para identificar problemas menores.
Al consolidar una rutina de testing robusta, el temor a desplegar en días específicos disminuye gracias a los mecanismos de control y calidad.
¿Cómo mejorar la experiencia de desarrollo?
La eficiencia en el despliegue y el uso del tiempo son factores críticos. Un proceso largo es desmoralizante y contraproducente:
¿Cómo optimizar los tiempos de despliegue?
- Automatización: Reemplaza pruebas manuales por scripts automatizados.
- Despliegue continuo: Actualiza tu infraestructura de CI/CD (Continuous Integration/Continuous Deployment) para que cada cambio en el código pueda ser desplegado automáticamente y de manera segura.
Reducir los tiempos de despliegue implica un cambio cultural y de estructura que suele necesitar una planificación cuidadosa y ajustes progresivos.
¿Con qué estrategia de control de versiones lidiar?
Elegir la estrategia correcta de control de versiones es crucial para una gestión eficiente del código.
¿Es Git Flow la estrategia adecuada?
Git Flow no es siempre la mejor opción, especialmente para aplicaciones web que no manejan versiones fijas. Considera alternativas más modernas y adaptables:
- GitHub Flow: Permite trabajar sobre la rama principal y realizar pequeños ajustes constantemente.
- Ship Show Ask: Una metodología que promueve la responsabilidad individual del código, eliminando el uso indiscriminado de revisiones y demoras innecesarias.
Implementar un método adecuado de control de versiones refuerza la confianza y agilidad del equipo.
¿Qué otros métodos pueden asegurar un despliegue sin miedo?
¿Cómo podemos usar el rollback y despliegues progresivos?
- Rollback automatizado: Como un CTRL+Z para corregir errores automáticamente cuando se detectan anomalías.
- Despliegues progresivos: Permiten la implementación gradual de cambios, mitigando impactos negativos al controlar activaciones a través de Feature Toggles.
Estas técnicas promueven una cultura de aprendizaje y adaptación, reduciendo la fricción de implementar cambios en producción.
¿Qué papel juegan las organizaciones en este proceso?
Es vital que las organizaciones promuevan una cultura que no penalice el error, sino que fomente el aprendizaje a través de él. El temor a los despliegues y los errores se mitiga al permitir pruebas, mejorar procesos continuos y fomentar un entorno de constante mejora. Deja de ver los fracasos como pérdidas y empieza a capitalizarlos como oportunidades de aprendizaje y crecimiento continuo para todos los involucrados.