
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.
Must Read
¿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.