Introducción al Despliegue de Aplicaciones Web
En el ciclo de vida del desarrollo de software moderno, la fase de despliegue (Deployment) constituye el puente crítico entre la ingeniería de software y la puesta en valor operativo del producto.
Un despliegue web abarca el conjunto de procesos, configuraciones, infraestructuras y mecanismos de automatización necesarios para transferir aplicaciones, artefactos compilados, recursos estáticos y bases de datos desde un entorno de desarrollo controlado hasta servidores accesibles por los usuarios finales a través de Internet.
1.1 El Ciclo de Vida del Software y la Transición Dev → Ops
Tradicionalmente, los equipos de desarrollo (Dev) y los equipos de operaciones (Ops) trabajaban de forma separada. Los desarrolladores entregaban aplicaciones compiladas y posteriormente los administradores de sistemas asumían la responsabilidad de instalar y mantener esos sistemas en los servidores.
Este modelo generaba frecuentes problemas relacionados con diferencias entre entornos, dependencias incompatibles, configuraciones inconsistentes y errores que solo aparecían cuando la aplicación llegaba a producción.
Como respuesta a estas limitaciones surgió la cultura DevOps, cuyo objetivo es integrar desarrollo y operaciones mediante la automatización, la colaboración continua y la entrega frecuente de software de calidad.
1.2 Tipología de Entornos de Software
- Entorno de Desarrollo (Development): utilizado por los programadores para implementar funcionalidades, depurar errores y realizar pruebas unitarias.
- Entorno de Pruebas o Staging: réplica controlada de producción donde se ejecutan pruebas de integración, validaciones funcionales, rendimiento y seguridad.
- Entorno de Producción (Production): sistema real utilizado por los usuarios finales, priorizando la disponibilidad, seguridad, escalabilidad y monitorización continua.
1.3 Principios Fundamentales de DevOps
- Integración Continua (CI): compilación y validación automática del software ante cada cambio.
- Despliegue Continuo (CD): automatización completa de la liberación de versiones.
- Infraestructura como Código (IaC): gestión declarativa de infraestructura mediante herramientas como Terraform.
- Observabilidad y Monitorización: recopilación de métricas, trazas y registros para analizar el estado del sistema en tiempo real.
Tecnologías que se Trabajarán en el Curso
- Git y GitHub
- Apache Maven
- Docker y Docker Compose
- Terraform
- AWS EC2
- Hetzner Cloud
- Nginx
- HTTPS y Certificados SSL/TLS
- Let's Encrypt
- GoAccess
- Fail2Ban
- Monitorización y análisis de logs