Construir una funcionalidad no es suficiente. Para que el software aporte valor, los cambios deben integrarse con el resto del sistema, verificarse, desplegarse en un ambiente adecuado y entregarse a usuarios o clientes de manera controlada.
La integración, el despliegue y la entrega conectan el trabajo de desarrollo con el uso real del producto. Si estas actividades se realizan de forma desordenada, pueden aparecer errores de configuración, versiones incorrectas, interrupciones del servicio y defectos que no se detectaron a tiempo.
En este tema veremos los conceptos principales y las buenas prácticas iniciales para pasar del código construido a una versión utilizable.
Integrar significa combinar cambios realizados por distintas personas o partes del sistema para verificar que funcionen juntos. Una funcionalidad puede funcionar de manera aislada y fallar al conectarse con otros módulos, datos o servicios.
La integración permite detectar problemas como:
La integración continua es una práctica en la que los cambios se integran con frecuencia y se verifican automáticamente. Normalmente incluye compilación, análisis, pruebas y otras validaciones cada vez que se incorporan cambios al repositorio.
Una integración continua puede ejecutar:
El objetivo es obtener retroalimentación rápida sobre la calidad de los cambios.
Un artefacto es un resultado generado durante el proceso de construcción o entrega. Puede ser un archivo ejecutable, paquete, imagen, biblioteca, archivo comprimido, migración, documentación o configuración necesaria para desplegar.
Ejemplos:
Los artefactos deben poder relacionarse con una versión del código para saber exactamente qué se está desplegando.
Un ambiente es un entorno donde el software se ejecuta. Los proyectos suelen usar varios ambientes para separar desarrollo, pruebas, validación y uso real.
| Ambiente | Propósito | Características |
|---|---|---|
| Desarrollo | Construir y probar cambios localmente. | Puede tener datos simulados y configuración flexible. |
| Pruebas | Validar funcionalidades antes de liberar. | Debe parecerse lo suficiente al ambiente real. |
| Preproducción | Ensayar despliegues y validaciones finales. | Se acerca mucho a producción. |
| Producción | Uso real por usuarios o clientes. | Requiere estabilidad, seguridad, respaldo y monitoreo. |
El mismo software puede necesitar configuraciones distintas según el ambiente: base de datos, credenciales, direcciones de servicios, modo de registro, claves, límites o integraciones externas.
Buenas prácticas:
Muchos errores de despliegue no están en el código, sino en configuración incorrecta.
Desplegar significa instalar, publicar o actualizar una versión del software en un ambiente. Puede ser un proceso manual, semiautomático o completamente automatizado.
Un despliegue puede incluir:
El despliegue debe ser repetible. Si cada despliegue depende de pasos manuales improvisados, aumenta el riesgo de error.
La entrega es el acto de poner una versión del software a disposición de usuarios, clientes, testers o un área de negocio. Puede incluir despliegue técnico, comunicación, capacitación, notas de versión y soporte inicial.
Una entrega puede ser:
Entregar software no es solo copiar archivos. Es hacer que una versión pueda usarse de forma controlada y entendida.
| Concepto | Pregunta principal | Ejemplo |
|---|---|---|
| Integración | ¿Los cambios funcionan con el resto del sistema? | Combinar una rama y ejecutar pruebas automáticas. |
| Despliegue | ¿La versión está instalada en un ambiente? | Publicar la API en preproducción. |
| Entrega | ¿La versión está disponible para ser usada o validada? | Habilitar una nueva funcionalidad a usuarios finales. |
La entrega continua y el despliegue continuo son prácticas relacionadas con la automatización del camino desde el código hasta ambientes de uso.
| Práctica | Significado |
|---|---|
| Entrega continua | El software se mantiene en estado listo para desplegar, pero la publicación puede requerir una aprobación manual. |
| Despliegue continuo | Cada cambio que pasa las validaciones se despliega automáticamente a producción. |
No todos los proyectos necesitan despliegue continuo. Sistemas críticos o regulados pueden requerir aprobaciones, ventanas de despliegue o validaciones adicionales.
Un pipeline es una secuencia automatizada de pasos para construir, verificar, empaquetar y desplegar software. Ayuda a que el proceso sea repetible y visible.
Un pipeline simple podría incluir:
Muchas entregas requieren modificar la estructura o contenido de la base de datos. Esto debe gestionarse cuidadosamente porque los datos suelen ser uno de los activos más importantes del sistema.
Buenas prácticas:
Un despliegue puede fallar aunque el código sea correcto si la migración de datos no fue planificada.
Un plan de reversión define qué hacer si un despliegue falla. No todos los problemas pueden resolverse simplemente volviendo a la versión anterior, especialmente si hubo cambios en datos o integraciones.
Un plan puede incluir:
Planificar la reversión antes del despliegue reduce improvisación durante incidentes.
Después de desplegar, conviene verificar que la versión funciona correctamente en el ambiente destino. Esto se conoce como validación posterior al despliegue o smoke test.
Puede incluir:
Esta verificación debe ser rápida, enfocada y repetible.
Las notas de versión comunican qué cambia en una entrega. Pueden estar dirigidas a usuarios, soporte, equipo técnico o responsables del negocio.
Pueden incluir:
Una buena comunicación evita sorpresas y ayuda a soporte a responder consultas.
Supongamos que se entrega la cancelación de reservas en un sistema de turnos.
Este flujo muestra que una entrega controlada combina técnica, validación y comunicación.
En integración, despliegue y entrega suelen aparecer errores como:
Algunas buenas prácticas son:
Integración, despliegue y entrega son actividades esenciales para convertir código construido en software utilizable. Permiten pasar de cambios individuales a versiones verificadas, instaladas y disponibles para usuarios o clientes.
Para quien comienza, la idea principal es esta: entregar software profesionalmente no es solo publicar archivos, sino integrar, verificar, desplegar, comunicar y monitorear una versión de manera controlada.
En el próximo tema veremos una introducción a las pruebas de software, una práctica fundamental para obtener evidencia sobre el comportamiento y la calidad del sistema.