Este documento presenta una introducción a Docker y contenedores en AWS. Explica los beneficios de usar contenedores para implementar microservicios y describe los componentes clave de Amazon ECS, como la administración de clústeres, la programación de tareas de contenedor y la facilidad para ejecutar y actualizar servicios de forma escalable.
4. ¿Qué son los Contenedores?
Virtualización de SO
Aislamiento de procesos
Imágenes
AutomatizaciónServidor
SO Guest
Bins/Libs Bins/Libs
App2App1
5. Ventajas de los contenedores
Portátil
Flexible
Rápido
EficienteServidor
SO Guest
Bins/Libs Bins/Libs
App2App1
6. Los Servicios evolucionaron a Microservicios
Aplicación monolítica
Órdenes Interfaz de
usuario
Envíos
Servicio de
órdenes
Servicio de
usuario
Servicio de
envíos
Acceso
a datos
Host 1
Servicio A
Servicio B
Host 2
Servicio B
Servicio D
Host 3
Servicio A
Servicio C
Host 4
Servicio B
Servicio C
7. Los Contenedores son naturales para Microservicios
Simples de modelar
Cualquier aplicación, cualquier lenguaje
La imagen es la versión
Pruebe y despliegue el mismo artefacto (inmutabilidad)
Servidores sin estado = menor riesgo por cambios
10. “Scheduling” de un clúster es difícil
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
11. ¿Qué es Amazon ECS?
Amazon EC2 Container Service (ECS) es un servicio de
administración de contenedores altamente escalable y con
alto rendimiento. Usted puede usar Amazon ECS para
calendarizar la ubicación de contenedores dentro de su
clúster. También puede integrar su propio “Scheduler” o
herramienta de terceros para cumplir sus requerimientos
específicos de su aplicación o negocio.
15. Administración de recursos
Docker
Tarea
Instancia de Contenedor
Contenedor
Tarea
Conteneçdor
Docker
Tarea
Instancia de Contenedor
Contenedor
Tarea
Contenedor
Docker
Tarea
Instancia de Contenedor
Contenedor
Tarea
Contenedor
AZ 1 AZ 2
Servicio de Administración de Clúster
16. Comunicación con el agente
Docker
Tarea
Instancia de Contenedor
Contenedor
Agente ECS
Tarea
Contenedor
Docker
Tarea
Instancia de Contenedor
Contenedor
Agente ECS
Tarea
Contenedor
Docker
Tarea
Instancia de Contenedor
Contenedor
Agente ECS
Tarea
Contenedor
AZ 1 AZ 2
Servicio de Administración de Clúster
Servicio de Comunicación con el Agente
17. Almacén Llave/Valor
Docker
Tarea
Instancia de Contenedor
Contenedor
Agente ECS
ELB
Internet
ELB
Tarea
Contenedor
Docker
Tarea
Instancia de Contenedor
Contenedor
Agente ECS
Tarea
Contenedor
Docker
Tarea
Instancia de Contenedor
Contenedor
Agente ECS
Tarea
Contenedor
AZ 1 AZ 2
Almacenamiento Llave/Valor
Servicio de Administración de Clúster
Servicio de Comunicación con el Agente
18. APIs
Docker
Tarea
Instancia de Contenedor
Contenedor
Agente ECS
ELB
Internet
ELB
Usuario /
Scheduler
API
Servicio de Administración de Clúster
Tarea
Contenedor
Docker
Tarea
Instancia de Contenedor
Contenedor
Agente ECS
Tarea
Contenedor
Docker
Tarea
Instancia de Contenedor
Contenedor
Agente ECS
Tarea
Contenedor
AZ 1 AZ 2
Almacenamiento Llave/Valor
Servicio de Comunicación con el Agente
19. Amazon ECS: “Scheduling”
Docker
Tarea
Instancia de Contenedor
Contenedor
Agente ECS
ELB
Internet
ELB
Usuario /
Scheduler
API
Servicio de Administración de Clúster
Tarea
Contenedor
Docker
Tarea
Instancia de Contenedor
Contenedor
Agente ECS
Tarea
Contenedor
Docker
Tarea
Instancia de Contenedor
Contenedor
Agente ECS
Tarea
Contenedor
AZ 1 AZ 2
Almacenamiento Llave/Valor
Servicio de Comunicación con el Agente
24. Diseñado para usarse con otros servicios de AWS
Elastic Load Balancing
Amazon Elastic Block Store
Amazon Virtual Private Cloud
Amazon CloudWatch
AWS Identity and Access Management
AWS CloudTrail
34. Crear un servicio
Balancea tráfico a través de contenedores
Recupera contenedores de manera automática
Descubre servicios
Elastic Load Balancing
Shared Data Volume
Containers
Shared Data Volume
Containers
Shared Data Volume
Containers
35. Escalar un servicio
Escalamiento hacia arriba
Escalamiento hacia abajo
Elastic Load Balancing
Shared Data Volume
Containers
Shared Data Volume
Containers
Shared Data Volume
Containers
Shared Data Volume
Containers
37. Actualizar un servicio
Desplegar nueva versión
Drenar conexiones
new new new
Elastic Load Balancing
Shared Data
Volume
Containers
old old old
Shared Data
Volume
Containers
Shared Data
Volume
Containers
Shared Data
Volume
Containers
Shared Data
Volume
Containers
Shared Data
Volume
Containers
38. Actualizar un servicio (cont.)
Desplegar nueva versión
Drenar conexiones
new new new
Elastic Load Balancing
Shared Data
Volume
Containers
old old old
Shared Data
Volume
Containers
Shared Data
Volume
Containers
Shared Data
Volume
Containers
Shared Data
Volume
Containers
Shared Data
Volume
Containers
39. Actualizar un servicio (cont.)
Desplegar nueva versión
Drenar conexiones
Elastic Load Balancing
Shared Data Volume
Containers
Shared Data Volume
Containers
Shared Data Volume
Containers
new new new
40. Actualizar un servicio (cont.)
Especifique una configuración de despliegue para su
servicio:
• minimumHealthyPercent: límite inferior (porcentaje
del desiredCount) del número de tareas que deben
permanecer ejecutándose en un servicio durante el
despliegue.
• maximumPercent: límite superior (porcentaje del
desiredCount) del número de tareas ejecutándose en
un servicio durante el despliegue.
41. Actualizar un servicio (cont.)
Despliega usando el menor espacio:
minimumHealthyPercent = 50%, maximumPercent = 100%
42. Actualizar un servicio (cont.)
Despliega rápido sin reducir la capacidad del servicio:
minimumHealthyPercent = 100%, maximumPercent = 200%