Despliegue y Automatización de Aplicaciones: Docker, DevOps y AWS
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 7,16 KB
Archivos YAML
Los archivos YAML son archivos de configuración basados en texto, con una sintaxis de indentación que organiza la información en pares clave-valor.
Se utilizan para definir configuraciones en herramientas de orquestación como Docker Compose, Kubernetes y otros sistemas de automatización.
La legibilidad y estructura jerárquica hacen que sean ideales para describir la infraestructura y dependencias de una aplicación.
Docker Compose: Gestión de Servicios
Iniciar servicios: docker-compose up -d
Detener servicios: docker-compose stop
/ docker-compose down
(detiene y elimina los contenedores)
Borrar servicios: Eliminar contenedores individualmente con docker rm
Dockerfile: Creación de Imágenes Personalizadas
Un Dockerfile
es un archivo de instrucciones para construir una imagen Docker personalizada.
Instrucciones comunes:
FROM
: Define la imagen base.RUN
: Ejecuta comandos durante la construcción de la imagen.COPY
oADD
: Copia archivos o directorios al contenedor.EXPOSE
: Expone un puerto.CMD
oENTRYPOINT
: Define el comando a ejecutar al iniciar el contenedor.
Se construye la imagen con: docker build -t mi_imagen .
Se ejecuta y prueba con: docker run -d -p <puerto_host>:<puerto_contenedor> mi_imagen
Despliegue de Aplicación con Nginx y MySQL usando Docker Compose
Se define un archivo docker-compose.yml
que incluye al menos dos servicios:
- Nginx: Actúa como servidor web y/o proxy inverso.
- MySQL: Proporciona el motor de base de datos.
Pasos:
- Crear cada contenedor.
- Añadirlo a
docker-compose.yml
. - Crear y añadir al
Dockerfile
. - Recrear y lanzar todos los contenedores:
docker-compose up -d
- Verificar:
docker ps -a
LDAP (Lightweight Directory Access Protocol)
LDAP es un protocolo estándar para acceder y administrar servicios de directorio. Se utiliza comúnmente para almacenar información de usuarios, grupos y otros recursos, facilitando la autenticación y autorización.
- La información se organiza en una estructura jerárquica (similar a un árbol).
- Cada entrada tiene un Distinguished Name (DN) único.
- Se utiliza un cliente LDAP que se conecta al servidor mediante el protocolo, generalmente a través del puerto 389 (o 636 para conexiones seguras con LDAPS).
- Los clientes realizan consultas (búsquedas) y operaciones de modificación sobre la estructura del directorio.
Flujo de Autenticación LDAP en Nginx
Un diagrama conceptual del flujo de autenticación LDAP en Nginx incluiría los siguientes pasos:
- Solicitud del Cliente
- Interceptación en Nginx
- Consulta LDAP
- Validación LDAP
- Respuesta Nginx
- Acceso permitido o denegado
Despliegue en Render
Build: docker build -t nombre_imagen .
Run: docker run
Push: docker push nombre_imagen
Continuous Delivery
Es la práctica de mantener el software en un estado en el que siempre pueda ser desplegado a producción de forma segura y automatizada.
Implica la automatización de pruebas, builds y despliegues, permitiendo lanzamientos frecuentes y fiables.
Última Milla
Se refiere al tramo final del proceso de despliegue, en el que el software es entregado al entorno de producción y, por ende, a los usuarios finales.
Es crucial para garantizar que la versión final funcione correctamente en el ambiente real.
Pipeline
Pasos: Commit y Push / Build / Test / Deploy
Trunk Based Development vs Feature Branches
Trunk Based Development: Se trabaja directamente en la rama principal (trunk) con integraciones frecuentes, lo que minimiza divergencias y conflictos.
Feature Branches: Se crean ramas específicas para cada funcionalidad. Una vez completadas y probadas, se integran (merge) al trunk principal.
Herramientas de Integración Continua
Ejemplos: Jenkins, GitHub Actions. Estas herramientas automatizan la ejecución de pipelines, integrando, testeando y desplegando el código.
Principios y Prácticas de Integración Continua
- Automatización
- Integración frecuente
- Feedback rápido
Entornos de Despliegue
Desarrollo / Staging / Producción
Canary Release
Es una estrategia de despliegue en la que una nueva versión de la aplicación se lanza inicialmente a un pequeño porcentaje de usuarios. Esto permite validar el comportamiento y detectar posibles problemas antes de un despliegue completo.
DevOps
Es una cultura y conjunto de prácticas que integran el desarrollo (Dev) y las operaciones (Ops) de TI. Busca mejorar la colaboración, acelerar el ciclo de desarrollo y garantizar la calidad y continuidad en el despliegue del software.
Principios y Buenas Prácticas de DevOps
- Colaboración y Comunicación
- Automatización
- Monitoreo y Feedback
- Mejora continua
GitHub Actions
Es la herramienta integrada en GitHub para automatizar workflows de desarrollo.
Permite definir pipelines en archivos YAML que se activan en respuesta a eventos (commits, pull requests, etc.), ejecutando tareas como tests, builds y despliegues.
Primer Workflow en GitHub Actions
- Crear
.github/workflows
- Añadir un archivo YAML
- Hacer commit y push del archivo al repositorio.
- Revisar la ejecución del workflow en la pestaña “Actions” de GitHub
Servicios de Cómputo en AWS
Amazon EC2 (Elastic Compute Cloud)
Servicio de infraestructura como servicio (IaaS) que permite crear y gestionar instancias virtuales (máquinas virtuales). Brinda control total sobre el sistema operativo y la configuración del servidor.
AWS Lambda
Servicio de computación serverless que ejecuta funciones de código en respuesta a eventos, sin necesidad de aprovisionar ni gestionar servidores. Se paga por el tiempo de ejecución y es ideal para tareas de corta duración y escalables.
AWS Elastic Beanstalk
Plataforma como servicio (PaaS) que facilita el despliegue y gestión de aplicaciones web. Automatiza la configuración de la infraestructura (EC2, balanceo de carga, escalado) y permite centrarse en el desarrollo de la aplicación.
Categorización de Servicios de Cómputo en AWS
- IaaS: Ej. EC2
- PaaS: Ej. Elastic Beanstalk
- Serverless: Ej. Lambda
Conclusiones Importantes
- Flexibilidad y Escalabilidad
- Elección según necesidades
- Automatización y Gestión Simplificada