Llevar una funcionalidad terminada hasta el cien por ciento de los usuarios no se resuelve con un solo paso. Comprender cómo se diseña un plan de integración continua —y especialmente cómo se estructura el rollout por regiones— es lo que separa un despliegue seguro de una posible catástrofe. A continuación se explica cada etapa del pipeline, desde el repositorio hasta la distribución gradual en producción.
¿Qué es el rollout y por qué necesitas un pipeline bien definido?
El rollout es el proceso mediante el cual una funcionalidad ya desarrollada recorre una serie de etapas hasta llegar al usuario final en todas las geografías donde opera el sistema [1:00]. Un pipeline es esa secuencia ordenada de pasos que el código debe superar antes de considerarse desplegado al cien por ciento.
Cuando los sistemas crecen y escalan, cada paso del pipeline necesita mayor detalle. Si el sistema opera en Europa, Asia y América del Sur, la implementación debe alcanzar todas esas regiones sin excepciones [1:30]. Documentar este flujo dentro del documento de diseño —sobre todo en los documentos de bajo nivel— permite que el equipo tenga una referencia clara y prevenga problemas.
¿Cómo se conecta Git con la etapa de desarrollo?
El punto de partida es el repositorio en Git. Dentro de él se utilizan branches (ramas) para organizar el historial del software [3:00].
- La rama master almacena las versiones más recientes del código integrado.
- Cada funcionalidad se desarrolla en su propia rama y, al completarse, se fusiona con master mediante un mecanismo como el pull request en plataformas como GitHub o GitLab [4:10].
- El concepto de head indica el punto más reciente en master, que se mapea a la etapa de desarrollo (dev) [4:40].
Es importante destacar: lo que está en master no es necesariamente lo que ve el usuario final. Esa distinción es clave para entender el resto del pipeline [4:20].
¿Qué ocurre en la etapa de testing?
Una vez que la funcionalidad se integra en master, se selecciona un punto específico —mediante un tag o un nuevo branch— para iniciar las pruebas [5:50]. Utilizar un tag (por ejemplo, versión uno) permite recordar exactamente qué versión se está probando, mientras el desarrollo continúa en paralelo con nuevas funcionalidades [6:20].
- Se ejecuta la suite de pruebas definida previamente, invocando funciones de código y verificando resultados.
- Si todas las pruebas pasan, ese mismo tag avanza hacia producción [7:10].
- Si algo falla, se corrige antes de continuar.
¿Cómo se distribuye una funcionalidad en producción de forma segura?
Producción no significa que el cien por ciento de los usuarios reciba la funcionalidad de inmediato [7:40]. En su lugar, se subdivide en etapas basadas en regiones, porcentajes de usuarios u otros criterios como zonas de disponibilidad, ciudades o incluso feature flags [8:50].
Un ejemplo concreto de distribución gradual:
- Día uno: despliegue al cincuenta por ciento de usuarios en América del Sur [8:20].
- Día dos: si no hay incidentes, se sube al cien por ciento en América del Sur.
- Día tres: se avanza a Europa, también en dos fases.
- Pausa de fin de semana: no se realizan cambios; el lunes se continúa con Asia [9:40].
Esta granularidad permite detener el rollout si aparece un bug que no se detectó en la fase de pruebas, evitando que el problema se propague a todas las regiones [9:10].
¿Por qué planificar las reglas de avance del rollout?
Documentar reglas como "no avanzar durante fines de semana" o "cubrir solo cierto porcentaje de usuarios por día" convierte el despliegue en un proceso predecible y controlable [10:00]. Sin estas reglas:
- Un error podría impactar a todos los usuarios simultáneamente.
- No habría tiempo para detectar y corregir fallos antes de escalar.
- La presión sobre el equipo sería mucho mayor ante una incidencia global.
Para pasar estos planes en limpio existe una herramienta llamada Sequence Diagram (diagrama de secuencia), que representa visualmente cómo se transita de una etapa a la siguiente [11:10]. El resultado se puede copiar directamente al documento de diseño.
Si has implementado estrategias de rollout gradual en tus proyectos o tienes dudas sobre cómo adaptar este pipeline a tu contexto, comparte tu experiencia en los comentarios.