2 0 1 9
Desplegando y Desarrollando
Aplicaciones Modernas en la
Nube
Javier Cristancho
Solutions Architect
Amazon Web Services
Damian Schenkelman
Director of Engineering
Auth0
¿Qué veremos en esta sesión?
• Características de una aplicación moderna
• Desarrollando y desplegando aplicaciones
modernas
• ¿Cómo escala ?
https://www.pexels.com/photo/macbook-pro-908284/
¿Qué es una aplicación
moderna?
• Facil gestión entre ambientes
• Reducir el impacto en cambios de código
• Automatizar las actividades operativas
• Acelerar la entrega de nuevos servicios
• Obtener información de los recursos
• Proteger a sus cliente y al negocio
Características de las aplicaciones modernas
• Facil gestión entre ambientes con tecnologías serverless
• Reducir el impacto en cambios de código con arquitectura de microservicios
• Automatizar las actividades operativas con infraestructura como código
• Acelerar la entrega de nuevos servicios con CI/CD
• Obtener información de los recursos con monitoreo y auditoría
• Proteger a sus cliente y al negocio con seguridad end-to-end
Características de las aplicaciones modernas
• Facil gestión entre ambientes con tecnologías serverless
• Reducir el impacto en cambios de código con arquitectura de microservicios
• Automatizar las actividades operativas con infraestructura como código
• Acelerar la entrega de nuevos servicios con CI/CD
• Obtener información de los recursos con monitoreo y auditoría
• Proteger a sus cliente y al negocio con seguridad end-to-end
Características de las aplicaciones modernas
Cambios pequeños, mayor agilidad
Monolito
Que hace de todo
Microservicios
Que hacen una cosa
MICROSERVICIO
API
API
MICROSERVICIO
MICROSERVICIO
EVENTO
API
MICROSERVICIO
EVENTO
API
MICROSERVICIO
APLICACIÓN
Cliente Movil
Cliente Web
IoT
PERSISTENCIA PERSISTENCIA
Arquitectura de microservicios
¿Qué es serverless?
Escala automáticamente
Paga por lo que usa Seguro y altamente disponible
No se aprovisiona o gestiona
infraestructura
Capa de Computo
AWS
Fargate
AWS
Lambda
Fuente de almacenamiento
Amazon
S3
Amazon Aurora
Serverless
Amazon
DynamoDB
Capa de Integración
Amazon
API Gateway
Amazon
SQS
Amazon
SNS
AWS
Step Functions
AWS
AppSync
SiNo NoNo
Si Requiere 3GB
o menos de
memoria
Si
Comunicación
entre
contenedores o
almacenamiento
intensivo?
¿Requiere
portabilidad o eres
seguidor del open
source?
¿Estás cómodo
manejando tu
propia
infraestructura?
No
Tamaño de
paquete de
despliegue
<= 50MB
Si Su servicio
corre por <=
15 minutos?
Árbol de decisión
No
AWS Lambda
Amazon EKS
Si
Amazon ECSAWS Fargate
SiNo
Cliente de AWS pioneros en app modernas
Escaló a miles de millones de logins / months
Plataforma de domicilios en 4 meses, escalando a
20,000 ordenes por segundo
En un mes pasaron de tener 2 MM a 25 MM de
usuarios
https://www.pexels.com/photo/blur-close-up-code-computer-546819/
Desarrollando y desplegando
aplicaciones modernas
• Facil gestión entre ambientes con tecnologías serverless
• Reducir el impacto en cambios de código con arquitectura de microservicios
• Automatizar las actividades operativas con infraestructura como código
• Acelerar la entrega de nuevos servicios con CI/CD
• Obtener información de los recursos con monitoreo y auditoría
• Proteger a sus cliente y al negocio con seguridad end-to-end
Características de las aplicaciones modernas
Utilice un framework para automatizar
AWS
CloudFormation
AWS
Amplify
AWS
SAM
Soluciones de Terceros
Utilice su IDE favorito con AWS
AWS Toolkit
LÓGICA DE
NEGOCIO
LIB A
FUNCIÓN 1
LÓGICA DE
NEGOCIO
LIB A LIB B
LÓGICA DE
NEGOCIO
LIB A LIB B
LÓGICA DE
NEGOCIO
LIB B
Optimice sus desarrollos en Lambda
FUNCIÓN 2 FUNCIÓN 3 FUNCIÓN 4
Extienda el entorno de ejecución Lambda con cualquier binario,
dependencia.
Lambda Layers
LÓGICA DE
NEGOCIO
LIB A
FUNCIÓN 1
LÓGICA DE
NEGOCIO
LÓGICA DE
NEGOCIO
LÓGICA DE
NEGOCIO
LIB B
Optimice sus desarrollos en Lambda
Extienda el entorno de ejecución Lambda con cualquier binario,
dependencia.
FUNCIÓN 2 FUNCIÓN 3 FUNCIÓN 4
Lambda Layers
AWS CodePipeline: Fuentes soportadas
Repositorio Git Objeto o carpeta Docker Image
Amazon ECRAmazon S3
AWS CodeCommit
Herramientas para Pruebas (Serverless)
Code inspection/
test coverage:
Mocking/
stubbing tools:
Interfaz API /
pruebas de UI :
API Monitoring/Testing
Web interface testing
Amazon API Gateway
Amazon Kinesis
Amazon DynamoDB Amazon S3
AWS Lambda
Amazon SNS
Amazon Route 53
AWS CloudFormation
…
API
Gateway
Lambda
Alias Traffic
Shifting
v1
Función
de
Código
Lambda
100%
AWS CodeDeploy+Lambda canary deployment
API
Gateway
Lambda Alias
Traffic
Shifting
v1 code100%
v2 code0%
Ejecuta la configuración entre las dos versiones antes de recibir tráfico
AWS CodeDeploy+Lambda canary deployment
API
Gateway
v1 code90%
Espera por 10 minutos, se hace roll-back en caso de falla
v2 code10%
Lambda Alias
Traffic
Shifting
AWS CodeDeploy+Lambda canary deployment
API
Gateway
v1 code0%
v2 code100%
Luego de cambios graduales de tráfico se completa el despliegue
Lambda Alias
Traffic
Shifting
AWS CodeDeploy+Lambda canary deployment
CodeDeploy-ECS blue-green deployment
Application
Load
Balancer
Production
traffic
listener
(port 80)
Target
group 1
Blue tasks:
v1 code
100%
Prod
traffic
AWS
Fargate
Amazon
ECS
CodeDeploy-ECS blue-green deployment
Application
Load
Balancer
Test
traffic
listener
(port 9000)
Production
traffic
listener
(port 80)
Target
group 2
Target
group 1
Blue tasks:
v1 code
100%
Prod
traffic
AWS
Fargate
Amazon
ECS
CodeDeploy-ECS blue-green deployment
Application
Load
Balancer
Test
traffic
listener
(port 9000)
Production
traffic
listener
(port 80)
Target
group 2
Target
group 1
Blue tasks:
v1 code
Green tasks:
v2 code
100%
Prod
traffic
Aprovisiona la nueva versión de tareas (Green tasks)
AWS
Fargate
Amazon
ECS
CodeDeploy-ECS blue-green deployment
Application
Load
Balancer
Test
traffic
listener
(port 9000)
Production
traffic
listener
(port 80)
Target
group 2
Target
group 1
Blue tasks:
v1 code
Green tasks:
v2 code
100%
Test
traffic
100%
Prod
traffic
Se corre tráfico de pruebas antes de hacer el cambio
AWS
Fargate
Amazon
ECS
CodeDeploy-ECS blue-green deployment
Application
Load
Balancer
Test
traffic
listener
(port 9000)
Production
traffic
listener
(port 80)
Target
group 2
Target
group 1
Blue tasks:
v1 code
Green tasks:
v2 code
100%
Test
traffic
0%
Prod
traffic
Se hace cambio de tráfico, rollback en caso de fallas
AWS
Fargate
Amazon
ECS
CodeDeploy-ECS blue-green deployment
Application
Load
Balancer
Test
traffic
listener
(port 9000)
Production
traffic
listener
(port 80)
Target
group 2
Target
group 1
Green tasks:
v2 code
100%
Prod
traffic
Se espera a ejecución de las sesiones activas en V1
AWS
Fargate
Amazon
ECS
Monitoreo de microservicios
Amazon CloudWatch
Monitoreo de microservicios
AWS X-Ray
¡GRACIAS!

Transformation Track AWS Cloud Experience Argentina - Despegando y Desarrollando Apps en la Nube