Site Info Site Info

Why Is It Important To Decouple Deployment From Release

Why Is It Important To Decouple Deployment From Release

Desacoplar la implementación del lanzamiento significa separar el acto de poner el nuevo código en producción de la activación real de esas nuevas características para los usuarios.

El primer paso es la implementación. Imagina que estás construyendo una casa. La implementación es como terminar de construir una habitación. La habitación (el código) está lista y funcional en la casa (el entorno de producción), pero no está necesariamente amueblada o accesible para los invitados (usuarios). Por ejemplo, el código nuevo podría estar detrás de una puerta (feature flag) que impide que nadie lo use.

El segundo paso es el lanzamiento. Esto es cuando decides "abrir la puerta" y dejar que la gente entre a la nueva habitación. Volviendo al ejemplo, podrías amueblar la habitación (configurar las características) e invitar a los invitados (activar la funcionalidad para los usuarios). Se puede hacer gradualmente: "Solo vamos a dejar entrar a un pequeño grupo de invitados para ver cómo funciona". Esto se conoce como lanzamiento gradual o canary release.

¿Por qué es importante separar estas dos etapas? Imagina que encuentras un problema con la nueva habitación después de que todos han entrado. Si implementaste y lanzaste al mismo tiempo, la única opción es cerrar toda la casa (rollback completo). Con el desacoplamiento, simplemente cierras la puerta de la nueva habitación (desactivas la feature flag). El resto de la casa (la aplicación) sigue funcionando sin interrupciones.

Un uso práctico es la capacidad de probar nuevas características en producción con un grupo limitado de usuarios (beta testing) antes de liberarlas a todo el público. Si algo sale mal, solo afecta a un pequeño porcentaje de usuarios, y puedes desactivar la característica rápidamente. Otro uso importante es la posibilidad de realizar implementaciones continuas, sabiendo que puedes activar o desactivar funcionalidades según sea necesario, reduciendo el riesgo asociado a las grandes actualizaciones.

Gallery

How to use feature flags for mobile app releases | VWO
Decoupling deployment from release | Technology Radar | Thoughtworks
Trunk-Based Development and Toggling
Why you should decouple deployment from release (and how) - PostHog
How to measure Lead Time based on your Continuous Integration Strategy
Why Decouple Deployments From Releases? | LaunchDarkly
DevOps: Why Is It Important to Decouple Deployment From Release? | by
Why ITIL 4 Separates Release Management from Deployment Management
Scalable DevOps and Continuous Delivery with SAFe — Engineering
What is deployment management and how can you implement it?