2. Patrones avanzados de implementación de
microservicios con contenedores en AWS
Bruno Laurenti
Arquitecto de Soluciones
3.
4. ¿Que Significa Microservicios?
Es un estilo de arquitectura de software en la cual
aplicaciones complejas se componen de pequeños servicios
independientes que se comunican utilizando APIs
agnósticas del lenguaje.
Estos servicios se encuentran desacoplados y se enfocan en
realizar pequeñas tareas, facilitando una construcción
modular de los sistemas - Wikipedia
8. Amazon logra velocidad y agilidad con Two-Pizza Teams
Lo construyes,
lo operas
Fomenta Ownership & Autonomia
Los equipos pequeños
y descentralizados
son ágiles
10. ¿Cómo escalamos nuestros servicios
sin morir en el intento?
http://www.androidguys.com/featured/wallpapers/7
5-hd-wallpapers-from-your-favorite-video-games/
12. Escalar muchos servicios… es Complicado!
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
Availability Zone #1 Availability Zone #2 Availability Zone #3 Availability Zone #4
14. Arquitectura de un Container
• Abstraccion y control de recursos de computo como
memoria, cpu y redes mediante componentes
incluidos en el kernel.
• De una imagen base, se pueden ir agregando mediante
capas, informacion y dependencias.
• Un filesystem unifica todas las imagenes en una unica
imagen.
• Intsrucciones de ejecucion y configuracion se
encuentran en un dockerfile.
bootfs
kernel
Base Image
Image
Image
Container
References
parent
image
16. Amazon ECS
• Servicio elástico totalmente administrador. El servicio escala
conforme tu arquitectura de micro servicios lo requiera.
• Integrado con los servicios de AWS Code* para integración y
entrega continua (CI/CD) de Software.
• Monitoreo y Logs integrado con CloudWatch
18. Componentes de Amazon ECS
Definicion de los contenedores.
• Imagen,
• CPU & Memoria, etc
Registrar una
Task Definition
Crear un
Cluster
Ejecutar una
Task
Instancia de una
definicion de tarea
Crear
Service
• Mantiene un numero deseado de tareas corriendo
• Se integrar con un ELB
• Tareas inconsistentes se reemplazan automaticamente
Elastic Load
Balancing
• Infraestructura de Computo.
• Permisos IAM
21. Publish metrics
Auto Scaling ECS service
Availability
Zone A
Availability
Zone B
TASK A
Add/Remove ECS
tasks
TASK C
TASK BScaling Policies
Amazon
CloudWatch
Amazon ECS
Application
Load Balancer
Escalado de Servicio Automatico
22. ECS Cluster
EC2 Instance EC2 Instance
TASK A
TASK B
TASK B
Amazon
DynamoDB
Amazon
S3
Roles de IAM para las Tareas
25. Namespace: myapp.local
Service: web.myapp.local
10.0.4.5:8080, 10.0.3.6:8080
Service: app.myapp.local
10.0.6.5:8080,. 10.0.8.6:8080
AZ 1 AZ 2
app web app web
cluster: myapp
10.0.6.5:8080 10.0.8.6:8080 10.0.
3.6:8
080
10.0.
4.5:8
080
• Descubrimiento del servicio del lado del cliente
• Registro de servicio = Servidor DNS Route53
• Actualización del registro realizada por el
scheduler de ECS
• Administrado, alta disponibilidad, alta escala,
extensible
Service Discovery con Route53
27. g2.2xlarge t2.small t2.micro t2.medium
t2.medium t2.small g2.2xlarge
t2.small
t2.small t2.medium
us-east-1aus-east-1d
Ubicacion: Tipo de Instancia y Zona
28. g2.2xlarge t2.small t2.micro t2.medium
t2.medium t2.small g2.2xlarge t2.small
us-east-1aus-east-1d
g2.2xlarge t2.medium
t2.micro t2.small
us-east-1c
Ubicacion: Distribuida y por Binpack
34. Registry
AWS
Cluster
ECS
Almacenamos las imágenes Docker ya
construidas con todo lo que necesitan
nuestros microservicios para operar. En
caso de algún inconveniente podemos
hacer uso del histórico para devolvernos a
una imagen Docker estable.
Uso Buenas practicas
• Hacer uso de Tags
• Definir el máximo histórico requerido
• Utilizar políticas de ciclos de vida para
limpieza de históricos
• Conocer los hard y soft limits
Orquestamos a través de Task definitions y
servicios la cantidad de veces que un
microservicio debe estar disponible. Así
mismo monitoreamos su comportamiento y
tomamos decisiones de Scale-out/Scale in
para soportar la demanda o la ociosidad de
nuestros servicios
• Conocer tu microservicio, capacidades
mínimas, máximas. Se logra a través de
experimentación y observación.
• Siempre recuerda actualizar tu agente
de Docker.
• Utiliza puertos aleatorios en tus
microservicios para garantizar que en
una misma instancia EC2 puedas
desplegar ese servicio varias veces.
36. Compliance
ü Apalancarnos del compliance de nube
ü Cumplir con regulaciones
Costos
ü Spot instances, contratos de servicio
ü Hasta un 75% de ahorro
Velocidad y Agilidad
ü Nuevos canales aliados 3 meses a 1 mes
ü Despliegue de nuevos servicios 1 semana
Overbuilding
ü Sobre dimensionar servicios
ü Limites de escalamiento
Personas y procesos
ü Cultura
ü Barreras psicológicas
On-Premises
ü Dependencias servicios Legados
ü Resolución de dominios de nube
ü No dependencia fechas criticas (CD/CI)
Nuevas Tecnologías
ü Pruebas de concepto
ü Conocimiento de las herramienta
ü Marketplace
Gestión del cambio
ü Administración compartida
ü Prender un servicio, probarlo y
apagarlo
ü Probar y Fallar