SlideShare una empresa de Scribd logo
1 de 40
Descargar para leer sin conexión
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Boris Cortes
Solutions Architect | Amazon Web Services
Mejores Prácticas y las
Difíciles Lecciones
Aprendidas con las
Aplicaciones Serverless
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
https://secure.flickr.com/photos/mgifford/4525333972
¿Por qué
estamos aquí
hoy?
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Ningún servidor para
aprovisionar o administrar
Escala con el uso
No pagas por tiempo ocioso Disponibilidad y tolerancia
a fallos por defecto
Serverless significa…
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
SERVICIOS (CUALQUIERA)
Cambios en
el estado del
dato
Peticiones a
los endpoints
Cambios en el
estado del
recurso
FUENTE DEL
EVENTO
FUNCIÓN
Node.js
Python
Java
C#
C# / Powershell
Go
Aplicaciones Serverless
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Anatomía de una función Lambda
Tu Función
Runtime del
lenguaje
Entorno de
ejecución
Poder de
cómputo
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Anatomía de una función Lambda
Tu Función
Runtime del
lenguaje
Entorno de
ejecución
Poder de
cómputo
Donde puedes
impactar el
desempeño
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Anatomía de una función Lambda
Tu Función
Runtime del
lenguaje
Entorno de
ejecución
Poder de
cómputo
Donde puedes
impactar el
desempeño
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
El ciclo de vida de una función
Inicia
el runtime
Inicia tu
código
Inicio en frío completo
(full cold start)
Inicio en frío
parcial
Inicio en caliente
(warm start)
Descarga
tu código
Lanza un nuevo
contenedor
Optimizado por AWS Optimizado por ti
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Integración de AWS X-Ray con Serverless
• Lambda instrumentaliza todos las
peticiones en todos los lenguajes
soportados
• Lambda ejecuta un daemon de X-
Ray en todos los lenguajes que
poseen un SDK
var AWSXRay = require(‘aws-xray-sdk-core‘);
AWSXRay.middleware.setSamplingRules(‘sampling-rules.json’);
var AWS = AWSXRay.captureAWS(require(‘aws-sdk’));
S3Client = AWS.S3();
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Visualizando un inicio en frío en X-Ray
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Optimizando el poder de cómputo de una función
Lambda solamente expone un control de memoria, con el %
de un núcleo de CPU y red alocados proporcionalmente
Tu código es restringido por CPU, red o memoria? Puedes ser más barato
elegir más memoria.
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Asignación inteligente de recursos
Calza la asignación de recursos (hasta 3 GB!) con la lógica de la función
Estadísticas de una función Lambda que calculas 1.000 veces todos los
números primos menores o iguales a 1.000.000
128 MB 11,722965s $0,024628
256 MB 6,678945s $0,028035
512 MB 3,194954s $0,026830
1024 MB 1,465984s $0,024638
Green = Mejor Red = Peor
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Asignación inteligente de recursos
Paree la asignación (hasta 3 GB!) con la lógica de la función
Estadísticas de una función Lambda que calculas 1.000 veces todos los
números primos menores o iguales a 1.000.000
128 MB 11,722965s $0,024628
256 MB 6,678945s $0,028035
512 MB 3,194954s $0,026830
1024 MB 1,465984s $0,024638
Green = Mejor Red = Peor
+$0,00001-10,256981s
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Impacto de los cambios en memoria
50% de
aumento de
memoria
Percentil 95º
cambias de 3s
para 2.1s
https://blog.newrelic.com/2017/06/20/lambda-functions-xray-traces-custom-serverless-metrics/
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Multithreading? Quizás!
• <1.8GB sigue siendo con solo uno core
• Cargas de trabajo restringidas por CPU no perciben ninguna mejora
– procesos comparten los mismos recursos
• >1.8GB es multi core
• Cargas de trabajo restringidas por CPU tendrán mejoras pero
necesitan estar diseñadas para multithreading
• Cargas de trabajo restringidas por E/S podrán obtener
mejoras
• e.j. cálculos en paralelo para retornar
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
El ciclo de vida de una función dentro de una VPC
Descarga
tu código
Lanza un nuevo
contenedor
Inicia tu
código
Crea una
VPC ENI
Adjunta una
VPC ENI
Inicio en frío completo Inicio en
caliente
Inicia el
runtime
Inicio en
frío parcial
Optimizado por AWS Optimizado por ti
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Necesito una VPC?
Mi función
Lambda
debería estar
en una
VPC?
Mi función
accede a algún
otro recurso
dentro de una
VPC?
Mi función también
necesita acceder a
recursos a través
de internet pública?
No pongas la
función en una
VPC
Pon tu función
en una subnet
privada
Pon tu función
en una subnet
en que el tráfico
hacia internet
salga por un
NAT
Si Si
No No
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
VPC vs. Resiliencia
• Siempre configure al menos 2 Zonas de
Disponibilidad
• Entregue a sus funciones Lambda sus propias
subnets
• Entregue a las subnets de sus Lambdas un
rango de direcciones IP amplio para soportar la
carga potencial
• Si tu función necesitas comunicarse con algún
recurso por internet necesitarás un NAT
ENIs no son fáciles, lo sabemos. Estamos trabajando en eso 🤓
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
El hack del “ping” a través de CloudWatch Events
Comúnmente innecesario pero si los inicios fríos
tienen un impacto visible en el desempeño
general:
• Utilice un evento programado desde CloudWatch
Events para disparar un “ping” hacia una función
Lambda a través de una llamada a la API de Lambda
• No agregue un API Gateway
innecesariamente, por ejemplo
• Utilices un payload que logres probar, no un payload
real
• Tenga una función en tu código que maneja y
contesta apropiadamente
Función
Lambda
evento
(programado)
Amazon API
Gateway
Amazon
Kinesis
Lógica
normal de la
aplicación
Lógica del
“ping”
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Anatomía de una función Lambda
Tu Función
Runtime del
lenguaje
Entorno de
ejecución
Poder de
cómputo
Donde puedes
impactar el
desempeño
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Anatomía de una función Lambda
Función handler()
Función que es
ejecutada cuando la
función es llamada
Objeto del Evento
Datos enviados durante
la llamada de la función
Lambda
Objeto de Contexto
Métodos disponibles
para interacturar con la
información del runtime
(request ID, log group, etc.)
public String handleRequest(Book book, Context context) {
saveBook(book);
return book.getName() + " saved!";
}
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Entorno efímero de la función
• Lambda procesa un único evento por
contenedor
• No es necesario una ejecución no
bloqueante en el frontend
• Recuérdate – contenedores son
reutilizados
• Definición tardía de variables en el
scope global
• No definas variables que no necesites
– los inicios en frío son afectados
import boto3
client = None
def my_handler(event, context):
global client
if not client:
client = boto3.client("s3")
# process
const aws = require('aws-sdk');
const gm = require('gm').subClass({imageMagick: true});
const path = require('path');
const s3 = new aws.S3();
const destBucket = process.env.DEST_BUCKET;
exports.handler = function main(event, context) {
...
for (let i = 0; i < event.Records.length; i++) {
tasks.push(conversionPromise(event.Records[i], destBucket));
}
Promise.all(tasks)
.then(() => { context.succeed(); })
.catch((err) => { context.fail(err); });
};
function conversionPromise(record, destBucket) {
...
}
function get(srcBucket, srcKey) {
...
}
function put(destBucket, destKey, data) {
...
Fuente: Sepai App in AWS Serverless Application Repository
https://serverlessrepo.aws.amazon.com/applications/arn:aws:serverlessrepo:us-
east-1:233054207705:applications~sepia
const aws = require('aws-sdk');
const gm = require('gm').subClass({imageMagick: true});
const path = require('path');
const s3 = new aws.S3();
const destBucket = process.env.DEST_BUCKET;
exports.handler = function main(event, context) {
...
for (let i = 0; i < event.Records.length; i++) {
tasks.push(conversionPromise(event.Records[i], destBucket));
}
Promise.all(tasks)
.then(() => { context.succeed(); })
.catch((err) => { context.fail(err); });
};
function conversionPromise(record, destBucket) {
...
}
function get(srcBucket, srcKey) {
...
}
function put(destBucket, destKey, data) {
...
Fuente: Sepai App in AWS Serverless Application Repository
https://serverlessrepo.aws.amazon.com/applications/arn:aws:serverlessrepo:us-
east-1:233054207705:applications~sepia
Carga de dependencias y creación de conecciones hacia bases de
datos/otros servicios previos al Handler()
Función Handler() contiene lógica mínima
Lógica de negócio en sus propias funciones
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Función con lógica concisa
• Separe el Handler() (punto de entrada) de la lógica principal
• Lógica dinámica a través de configuración
• Por función – Variables de Entorno
• Múltiples funciones – Amazon Parameter Store/Secrets Manager
• Lea solamente lo que necesites. Por ejemplo:
• Bases de Datos indexadas apropiadamente
• Query filters en Aurora
• Utilice S3 Select
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Sin orquestación en el códigoInicio
Job#Xiniciado
HTTPPOST
HTTPPOST
Yaestamoslistos?
No!
Estamoslistos!
o
time.sleep(10)
💤😴
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Sin orquestación en el código
Utilice AWS Step Functions!
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Código de función eficiente
• Evite “funciones-monolito”
• Controle las dependencias en el paquete
de despliegue de tu función
• Optimice para tu lenguaje
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Modelos de ejecución en Lambda
Asíncrono (evento)
Amazon
SNS
Función en
AWS Lambda
Amazon
S3
reqs
Polling
Amazon
DynamoDB
Amazon
Kinesis
cambios
AWS Lambda
Función
Síncrono (push)
Amazon
API Gateway
Función en
AWS Lambda
/order
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Gateways y routers
• Elija un punto de entrada para la
aplicación
• Singular, cliente customizado?
Use el SDK de AWS
• No es client facing? Use endpoints
regionales en API Gateway
• Deseche eventos que no son relevantes
lo más pronto posible
• S3 – Prefijo del evento
• SNS – Filtrado de mensaje
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Controles de Concurrencia
• Concurrencia es un pool compartido por defecto
• Separar utilizando las configuraciones de concurrencia por cada función
• Actúa como reserva
• También actúa como concurrencia máxima por función
• Especialmente importante para bases de datos como RDS
• “Kill switch” – ajuste la concurrencia por función en cero
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Como sé que algo no está bien?
Esas herramientas están allá, ocúpenlas!
1. Activa X-Ray
1. Busque como decorar tus propias llamadas a través de los SDKs de X-
Ray
2. No subestimes las capacidades de logging en Lambda
1. Simples declaraciones “debug: en la función X” funcionan bien y son
fáciles de encontrar en CloudWatch Logs
3. Las métricas más útiles son aquellas que están más cerca
de tu cliente/caso de uso
1. Cuantas cosas esa función llamó/creó/procesó/etc.
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Lambda Dead Letter Queues (DLQ)
“Cualquier función Lambda invocada de forma asíncrona se reintenta
dos veces antes de que se descarte el evento. Si se producen errores en
los reintentos y no conoce el motivo, utilice colas de mensajes fallidos
(DLQ) para dirigir los eventos sin procesar a una cola de Amazon SQS o
a un tema de Amazon SNS para analizar el error.”
– https://docs.aws.amazon.com/es_es/lambda/latest/dg/dlq.html
• Actívalo! (para los casos de llamadas asíncronas)
• Monitorea a través de la métrica/alarma del tamaño de la fila en
SQS
• Si utilizas SNS, envíe los mensajes hacia algo durable y/o un
endpoint fiable para procesamiento
• Puedes enviar hacia funciones Lambda en otras regiones
• Si y cuando las cosas salgan mal DLQ puedes guardar la
información de los eventos al momento de la llamada
☠️
✉️
Q
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Lambda Dead Letter Queues (DLQ)
“Por defecto, una función Lambda fallida llamada asíncronamente es
reintentada dos veces, y de ahí el evento es descartado. Utilizando
Dead Letter Queues (DLQ) puedes indicar al servicio de Lambda que
eventos nos procesados deben ser enviados a una fila en Amazon SQS
o un tópico en Amazon SNS donde puedes tomar acciones
adicionales”.
– https://docs.aws.amazon.com/lambda/latest/dg/dlq.html
• Préndalo! (para los casos de llamadas asíncronas)
• Monitoree a través de la métrica/alarma del tamaño de la fila en
SQS
• Si utilizas SNS, envíe los mensajes hacia algo durable y/o un
endpoint fiable para procesamiento
• Puedes enviar hacia funciones Lambda en otras regiones
• Si y cuando las cosas salgan mal DLQ puedes guardar la
información de los eventos al momento de la llamada
☠️
✉️
Q
A partir de 28 de junio de 2018
puedes suscribir una función
Lambda para procesar
mensajes en la Dead Letter
Queue!
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Modelos de ejecución en Lambda
Polling
Amazon
SQS
mensajes
AWS Lambda
función
Nuevo Nuevo
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
aws.amazon.com/serverless
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Boris Cortes
borisco@amazon.com
@boriscorteshttps://www.flickr.com/photos/theredproject/3302110152/
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
?
https://secure.flickr.com/photos/dullhunk/202872717/

Más contenido relacionado

La actualidad más candente

Azure 13 effective security controls for iso 27001 compliance
Azure 13 effective security controls for iso 27001 complianceAzure 13 effective security controls for iso 27001 compliance
Azure 13 effective security controls for iso 27001 compliance
Erlinkencana
 
AWS Training For Beginners | AWS Certified Solutions Architect Tutorial | AWS...
AWS Training For Beginners | AWS Certified Solutions Architect Tutorial | AWS...AWS Training For Beginners | AWS Certified Solutions Architect Tutorial | AWS...
AWS Training For Beginners | AWS Certified Solutions Architect Tutorial | AWS...
Simplilearn
 

La actualidad más candente (20)

Cloud Services: Types of Cloud
Cloud Services: Types of CloudCloud Services: Types of Cloud
Cloud Services: Types of Cloud
 
AWS IAM과 친해지기 – 조이정, AWS 솔루션즈 아키텍트:: AWS Builders Online Series
AWS IAM과 친해지기 – 조이정, AWS 솔루션즈 아키텍트:: AWS Builders Online Series AWS IAM과 친해지기 – 조이정, AWS 솔루션즈 아키텍트:: AWS Builders Online Series
AWS IAM과 친해지기 – 조이정, AWS 솔루션즈 아키텍트:: AWS Builders Online Series
 
Introducing AWS Certificate Manager Private Certificate Authority (CA) - AWS ...
Introducing AWS Certificate Manager Private Certificate Authority (CA) - AWS ...Introducing AWS Certificate Manager Private Certificate Authority (CA) - AWS ...
Introducing AWS Certificate Manager Private Certificate Authority (CA) - AWS ...
 
A DIY Guide to Runbooks, Security Incident Reports, & Incident Response: AWS ...
A DIY Guide to Runbooks, Security Incident Reports, & Incident Response: AWS ...A DIY Guide to Runbooks, Security Incident Reports, & Incident Response: AWS ...
A DIY Guide to Runbooks, Security Incident Reports, & Incident Response: AWS ...
 
Getting Started with Serverless Architectures
Getting Started with Serverless ArchitecturesGetting Started with Serverless Architectures
Getting Started with Serverless Architectures
 
Introduction to Serverless
Introduction to ServerlessIntroduction to Serverless
Introduction to Serverless
 
Introduction to AWS VPC, Guidelines, and Best Practices
Introduction to AWS VPC, Guidelines, and Best PracticesIntroduction to AWS VPC, Guidelines, and Best Practices
Introduction to AWS VPC, Guidelines, and Best Practices
 
Aberdeen Oil & Gas Event - Introduction to the AWS Cloud
Aberdeen Oil & Gas Event - Introduction to the AWS CloudAberdeen Oil & Gas Event - Introduction to the AWS Cloud
Aberdeen Oil & Gas Event - Introduction to the AWS Cloud
 
Automating Incident Response and Forensics in AWS - AWS Summit Sydney 2018
Automating Incident Response and Forensics in AWS - AWS Summit Sydney 2018Automating Incident Response and Forensics in AWS - AWS Summit Sydney 2018
Automating Incident Response and Forensics in AWS - AWS Summit Sydney 2018
 
Azure 13 effective security controls for iso 27001 compliance
Azure 13 effective security controls for iso 27001 complianceAzure 13 effective security controls for iso 27001 compliance
Azure 13 effective security controls for iso 27001 compliance
 
AWS를 위한 도커, 컨테이너 (이미지) 환경 보안 방안 - 양희선 부장, TrendMicro :: AWS Summit Seoul 2019
AWS를 위한 도커, 컨테이너 (이미지) 환경 보안 방안 - 양희선 부장, TrendMicro :: AWS Summit Seoul 2019AWS를 위한 도커, 컨테이너 (이미지) 환경 보안 방안 - 양희선 부장, TrendMicro :: AWS Summit Seoul 2019
AWS를 위한 도커, 컨테이너 (이미지) 환경 보안 방안 - 양희선 부장, TrendMicro :: AWS Summit Seoul 2019
 
Business cases for the need of cloud computing
Business cases for the need of cloud computingBusiness cases for the need of cloud computing
Business cases for the need of cloud computing
 
AWS Training For Beginners | AWS Certified Solutions Architect Tutorial | AWS...
AWS Training For Beginners | AWS Certified Solutions Architect Tutorial | AWS...AWS Training For Beginners | AWS Certified Solutions Architect Tutorial | AWS...
AWS Training For Beginners | AWS Certified Solutions Architect Tutorial | AWS...
 
AWS DirectConnect 구성 가이드 (김용우) - 파트너 웨비나 시리즈
AWS DirectConnect 구성 가이드 (김용우) -  파트너 웨비나 시리즈AWS DirectConnect 구성 가이드 (김용우) -  파트너 웨비나 시리즈
AWS DirectConnect 구성 가이드 (김용우) - 파트너 웨비나 시리즈
 
AWS Lambda
AWS LambdaAWS Lambda
AWS Lambda
 
cloud Resilience
cloud Resilience cloud Resilience
cloud Resilience
 
Building a Better Business Case for Migrating to Cloud
Building a Better Business Case for Migrating to CloudBuilding a Better Business Case for Migrating to Cloud
Building a Better Business Case for Migrating to Cloud
 
Build a Hybrid Cloud Architecture Using AWS Landing Zones (ENT304-R1) - AWS r...
Build a Hybrid Cloud Architecture Using AWS Landing Zones (ENT304-R1) - AWS r...Build a Hybrid Cloud Architecture Using AWS Landing Zones (ENT304-R1) - AWS r...
Build a Hybrid Cloud Architecture Using AWS Landing Zones (ENT304-R1) - AWS r...
 
Disaster Recovery of on-premises IT infrastructure with AWS
Disaster Recovery of on-premises IT infrastructure with AWSDisaster Recovery of on-premises IT infrastructure with AWS
Disaster Recovery of on-premises IT infrastructure with AWS
 
Security Issues of Cloud Computing
Security Issues of Cloud ComputingSecurity Issues of Cloud Computing
Security Issues of Cloud Computing
 

Similar a Mejores prácticas y las difíciles lecciones aprendidas con las aplicaciones Serverless

Similar a Mejores prácticas y las difíciles lecciones aprendidas con las aplicaciones Serverless (20)

Arquitecturas y estrategias para generar aplicaciones modernas en AWS - MXO20...
Arquitecturas y estrategias para generar aplicaciones modernas en AWS - MXO20...Arquitecturas y estrategias para generar aplicaciones modernas en AWS - MXO20...
Arquitecturas y estrategias para generar aplicaciones modernas en AWS - MXO20...
 
Treinta arquitecturas sin servidores en 30 minutos - MXO209 - Mexico City Summit
Treinta arquitecturas sin servidores en 30 minutos - MXO209 - Mexico City SummitTreinta arquitecturas sin servidores en 30 minutos - MXO209 - Mexico City Summit
Treinta arquitecturas sin servidores en 30 minutos - MXO209 - Mexico City Summit
 
Comenzando con aplicaciones serverless en AWS
Comenzando con aplicaciones serverless en AWSComenzando con aplicaciones serverless en AWS
Comenzando con aplicaciones serverless en AWS
 
Impulsando la innovación con arquitectura de contenedores - MXO202 - Mexico C...
Impulsando la innovación con arquitectura de contenedores - MXO202 - Mexico C...Impulsando la innovación con arquitectura de contenedores - MXO202 - Mexico C...
Impulsando la innovación con arquitectura de contenedores - MXO202 - Mexico C...
 
Asegurando los datos de sus clientes desde el Día 1
Asegurando los datos de sus clientes desde el Día 1Asegurando los datos de sus clientes desde el Día 1
Asegurando los datos de sus clientes desde el Día 1
 
Optimización de costos en migraciones a la nube AWS
Optimización de costos en migraciones a la nube AWSOptimización de costos en migraciones a la nube AWS
Optimización de costos en migraciones a la nube AWS
 
Arquitecturas Serverless con IoT, Machine Learning y Asistentes de Voz
Arquitecturas Serverless con IoT, Machine Learning y Asistentes de VozArquitecturas Serverless con IoT, Machine Learning y Asistentes de Voz
Arquitecturas Serverless con IoT, Machine Learning y Asistentes de Voz
 
AWS Initiate Day Mexico City | Building Data Lakes & Analytics on AWS
AWS Initiate Day Mexico City | Building Data Lakes & Analytics on AWSAWS Initiate Day Mexico City | Building Data Lakes & Analytics on AWS
AWS Initiate Day Mexico City | Building Data Lakes & Analytics on AWS
 
Uso de Containers y Serverless para acelerar el desarrollo de aplicaciones mo...
Uso de Containers y Serverless para acelerar el desarrollo de aplicaciones mo...Uso de Containers y Serverless para acelerar el desarrollo de aplicaciones mo...
Uso de Containers y Serverless para acelerar el desarrollo de aplicaciones mo...
 
Mejores prácticas de CI / CD para construir aplicaciones modernas
Mejores prácticas de CI / CD para construir aplicaciones modernasMejores prácticas de CI / CD para construir aplicaciones modernas
Mejores prácticas de CI / CD para construir aplicaciones modernas
 
Patrones arquitectónicos y mejores prácticas de "big data" en AWS - MXO203 - ...
Patrones arquitectónicos y mejores prácticas de "big data" en AWS - MXO203 - ...Patrones arquitectónicos y mejores prácticas de "big data" en AWS - MXO203 - ...
Patrones arquitectónicos y mejores prácticas de "big data" en AWS - MXO203 - ...
 
Escalando para sus primeros 10 millones de usuarios
Escalando para sus primeros 10 millones de usuariosEscalando para sus primeros 10 millones de usuarios
Escalando para sus primeros 10 millones de usuarios
 
Desarrollo en la nube
Desarrollo en la nubeDesarrollo en la nube
Desarrollo en la nube
 
Clase 4 Electiva Profesional 3 AWS Lambda
Clase 4 Electiva Profesional 3 AWS LambdaClase 4 Electiva Profesional 3 AWS Lambda
Clase 4 Electiva Profesional 3 AWS Lambda
 
Seguridad en arquitecturas serverless y entornos cloud
Seguridad en arquitecturas serverless y entornos cloudSeguridad en arquitecturas serverless y entornos cloud
Seguridad en arquitecturas serverless y entornos cloud
 
Lleve la inteligencia al borde del IoT con AWS Greengrass - MXO205 - Mexico C...
Lleve la inteligencia al borde del IoT con AWS Greengrass - MXO205 - Mexico C...Lleve la inteligencia al borde del IoT con AWS Greengrass - MXO205 - Mexico C...
Lleve la inteligencia al borde del IoT con AWS Greengrass - MXO205 - Mexico C...
 
Micro vs Nano (servicios)
Micro vs Nano (servicios)Micro vs Nano (servicios)
Micro vs Nano (servicios)
 
Aprendiendo AWS Lambda con API Gateway y DynamoDB
Aprendiendo AWS Lambda con API Gateway y DynamoDBAprendiendo AWS Lambda con API Gateway y DynamoDB
Aprendiendo AWS Lambda con API Gateway y DynamoDB
 
AWS para desarrolladores
AWS para desarrolladoresAWS para desarrolladores
AWS para desarrolladores
 
App engine
App engineApp engine
App engine
 

Más de Amazon Web Services LATAM

Más de Amazon Web Services LATAM (20)

AWS para terceiro setor - Sessão 1 - Introdução à nuvem
AWS para terceiro setor - Sessão 1 - Introdução à nuvemAWS para terceiro setor - Sessão 1 - Introdução à nuvem
AWS para terceiro setor - Sessão 1 - Introdução à nuvem
 
AWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e BackupAWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e Backup
 
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
 
AWS para terceiro setor - Sessão 1 - Introdução à nuvem
AWS para terceiro setor - Sessão 1 - Introdução à nuvemAWS para terceiro setor - Sessão 1 - Introdução à nuvem
AWS para terceiro setor - Sessão 1 - Introdução à nuvem
 
AWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e BackupAWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e Backup
 
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
 
Automatice el proceso de entrega con CI/CD en AWS
Automatice el proceso de entrega con CI/CD en AWSAutomatice el proceso de entrega con CI/CD en AWS
Automatice el proceso de entrega con CI/CD en AWS
 
Automatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWSAutomatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWS
 
Cómo empezar con Amazon EKS
Cómo empezar con Amazon EKSCómo empezar con Amazon EKS
Cómo empezar con Amazon EKS
 
Como começar com Amazon EKS
Como começar com Amazon EKSComo começar com Amazon EKS
Como começar com Amazon EKS
 
Ransomware: como recuperar os seus dados na nuvem AWS
Ransomware: como recuperar os seus dados na nuvem AWSRansomware: como recuperar os seus dados na nuvem AWS
Ransomware: como recuperar os seus dados na nuvem AWS
 
Ransomware: cómo recuperar sus datos en la nube de AWS
Ransomware: cómo recuperar sus datos en la nube de AWSRansomware: cómo recuperar sus datos en la nube de AWS
Ransomware: cómo recuperar sus datos en la nube de AWS
 
Ransomware: Estratégias de Mitigação
Ransomware: Estratégias de MitigaçãoRansomware: Estratégias de Mitigação
Ransomware: Estratégias de Mitigação
 
Ransomware: Estratégias de Mitigación
Ransomware: Estratégias de MitigaciónRansomware: Estratégias de Mitigación
Ransomware: Estratégias de Mitigación
 
Aprenda a migrar y transferir datos al usar la nube de AWS
Aprenda a migrar y transferir datos al usar la nube de AWSAprenda a migrar y transferir datos al usar la nube de AWS
Aprenda a migrar y transferir datos al usar la nube de AWS
 
Aprenda como migrar e transferir dados ao utilizar a nuvem da AWS
Aprenda como migrar e transferir dados ao utilizar a nuvem da AWSAprenda como migrar e transferir dados ao utilizar a nuvem da AWS
Aprenda como migrar e transferir dados ao utilizar a nuvem da AWS
 
Cómo mover a un almacenamiento de archivos administrados
Cómo mover a un almacenamiento de archivos administradosCómo mover a un almacenamiento de archivos administrados
Cómo mover a un almacenamiento de archivos administrados
 
Simplifique su BI con AWS
Simplifique su BI con AWSSimplifique su BI con AWS
Simplifique su BI con AWS
 
Simplifique o seu BI com a AWS
Simplifique o seu BI com a AWSSimplifique o seu BI com a AWS
Simplifique o seu BI com a AWS
 
Os benefícios de migrar seus workloads de Big Data para a AWS
Os benefícios de migrar seus workloads de Big Data para a AWSOs benefícios de migrar seus workloads de Big Data para a AWS
Os benefícios de migrar seus workloads de Big Data para a AWS
 

Último

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 

Último (11)

Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 

Mejores prácticas y las difíciles lecciones aprendidas con las aplicaciones Serverless

  • 1. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Boris Cortes Solutions Architect | Amazon Web Services Mejores Prácticas y las Difíciles Lecciones Aprendidas con las Aplicaciones Serverless
  • 2. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. https://secure.flickr.com/photos/mgifford/4525333972 ¿Por qué estamos aquí hoy?
  • 3.
  • 4. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Ningún servidor para aprovisionar o administrar Escala con el uso No pagas por tiempo ocioso Disponibilidad y tolerancia a fallos por defecto Serverless significa…
  • 5. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. SERVICIOS (CUALQUIERA) Cambios en el estado del dato Peticiones a los endpoints Cambios en el estado del recurso FUENTE DEL EVENTO FUNCIÓN Node.js Python Java C# C# / Powershell Go Aplicaciones Serverless
  • 6. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Anatomía de una función Lambda Tu Función Runtime del lenguaje Entorno de ejecución Poder de cómputo
  • 7. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Anatomía de una función Lambda Tu Función Runtime del lenguaje Entorno de ejecución Poder de cómputo Donde puedes impactar el desempeño
  • 8. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Anatomía de una función Lambda Tu Función Runtime del lenguaje Entorno de ejecución Poder de cómputo Donde puedes impactar el desempeño
  • 9. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. El ciclo de vida de una función Inicia el runtime Inicia tu código Inicio en frío completo (full cold start) Inicio en frío parcial Inicio en caliente (warm start) Descarga tu código Lanza un nuevo contenedor Optimizado por AWS Optimizado por ti
  • 10. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Integración de AWS X-Ray con Serverless • Lambda instrumentaliza todos las peticiones en todos los lenguajes soportados • Lambda ejecuta un daemon de X- Ray en todos los lenguajes que poseen un SDK var AWSXRay = require(‘aws-xray-sdk-core‘); AWSXRay.middleware.setSamplingRules(‘sampling-rules.json’); var AWS = AWSXRay.captureAWS(require(‘aws-sdk’)); S3Client = AWS.S3();
  • 11. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Visualizando un inicio en frío en X-Ray
  • 12. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Optimizando el poder de cómputo de una función Lambda solamente expone un control de memoria, con el % de un núcleo de CPU y red alocados proporcionalmente Tu código es restringido por CPU, red o memoria? Puedes ser más barato elegir más memoria.
  • 13. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Asignación inteligente de recursos Calza la asignación de recursos (hasta 3 GB!) con la lógica de la función Estadísticas de una función Lambda que calculas 1.000 veces todos los números primos menores o iguales a 1.000.000 128 MB 11,722965s $0,024628 256 MB 6,678945s $0,028035 512 MB 3,194954s $0,026830 1024 MB 1,465984s $0,024638 Green = Mejor Red = Peor
  • 14. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Asignación inteligente de recursos Paree la asignación (hasta 3 GB!) con la lógica de la función Estadísticas de una función Lambda que calculas 1.000 veces todos los números primos menores o iguales a 1.000.000 128 MB 11,722965s $0,024628 256 MB 6,678945s $0,028035 512 MB 3,194954s $0,026830 1024 MB 1,465984s $0,024638 Green = Mejor Red = Peor +$0,00001-10,256981s
  • 15. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Impacto de los cambios en memoria 50% de aumento de memoria Percentil 95º cambias de 3s para 2.1s https://blog.newrelic.com/2017/06/20/lambda-functions-xray-traces-custom-serverless-metrics/
  • 16. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Multithreading? Quizás! • <1.8GB sigue siendo con solo uno core • Cargas de trabajo restringidas por CPU no perciben ninguna mejora – procesos comparten los mismos recursos • >1.8GB es multi core • Cargas de trabajo restringidas por CPU tendrán mejoras pero necesitan estar diseñadas para multithreading • Cargas de trabajo restringidas por E/S podrán obtener mejoras • e.j. cálculos en paralelo para retornar
  • 17. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. El ciclo de vida de una función dentro de una VPC Descarga tu código Lanza un nuevo contenedor Inicia tu código Crea una VPC ENI Adjunta una VPC ENI Inicio en frío completo Inicio en caliente Inicia el runtime Inicio en frío parcial Optimizado por AWS Optimizado por ti
  • 18. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Necesito una VPC? Mi función Lambda debería estar en una VPC? Mi función accede a algún otro recurso dentro de una VPC? Mi función también necesita acceder a recursos a través de internet pública? No pongas la función en una VPC Pon tu función en una subnet privada Pon tu función en una subnet en que el tráfico hacia internet salga por un NAT Si Si No No
  • 19. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. VPC vs. Resiliencia • Siempre configure al menos 2 Zonas de Disponibilidad • Entregue a sus funciones Lambda sus propias subnets • Entregue a las subnets de sus Lambdas un rango de direcciones IP amplio para soportar la carga potencial • Si tu función necesitas comunicarse con algún recurso por internet necesitarás un NAT ENIs no son fáciles, lo sabemos. Estamos trabajando en eso 🤓
  • 20. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. El hack del “ping” a través de CloudWatch Events Comúnmente innecesario pero si los inicios fríos tienen un impacto visible en el desempeño general: • Utilice un evento programado desde CloudWatch Events para disparar un “ping” hacia una función Lambda a través de una llamada a la API de Lambda • No agregue un API Gateway innecesariamente, por ejemplo • Utilices un payload que logres probar, no un payload real • Tenga una función en tu código que maneja y contesta apropiadamente Función Lambda evento (programado) Amazon API Gateway Amazon Kinesis Lógica normal de la aplicación Lógica del “ping”
  • 21. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Anatomía de una función Lambda Tu Función Runtime del lenguaje Entorno de ejecución Poder de cómputo Donde puedes impactar el desempeño
  • 22. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Anatomía de una función Lambda Función handler() Función que es ejecutada cuando la función es llamada Objeto del Evento Datos enviados durante la llamada de la función Lambda Objeto de Contexto Métodos disponibles para interacturar con la información del runtime (request ID, log group, etc.) public String handleRequest(Book book, Context context) { saveBook(book); return book.getName() + " saved!"; }
  • 23. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Entorno efímero de la función • Lambda procesa un único evento por contenedor • No es necesario una ejecución no bloqueante en el frontend • Recuérdate – contenedores son reutilizados • Definición tardía de variables en el scope global • No definas variables que no necesites – los inicios en frío son afectados import boto3 client = None def my_handler(event, context): global client if not client: client = boto3.client("s3") # process
  • 24. const aws = require('aws-sdk'); const gm = require('gm').subClass({imageMagick: true}); const path = require('path'); const s3 = new aws.S3(); const destBucket = process.env.DEST_BUCKET; exports.handler = function main(event, context) { ... for (let i = 0; i < event.Records.length; i++) { tasks.push(conversionPromise(event.Records[i], destBucket)); } Promise.all(tasks) .then(() => { context.succeed(); }) .catch((err) => { context.fail(err); }); }; function conversionPromise(record, destBucket) { ... } function get(srcBucket, srcKey) { ... } function put(destBucket, destKey, data) { ... Fuente: Sepai App in AWS Serverless Application Repository https://serverlessrepo.aws.amazon.com/applications/arn:aws:serverlessrepo:us- east-1:233054207705:applications~sepia
  • 25. const aws = require('aws-sdk'); const gm = require('gm').subClass({imageMagick: true}); const path = require('path'); const s3 = new aws.S3(); const destBucket = process.env.DEST_BUCKET; exports.handler = function main(event, context) { ... for (let i = 0; i < event.Records.length; i++) { tasks.push(conversionPromise(event.Records[i], destBucket)); } Promise.all(tasks) .then(() => { context.succeed(); }) .catch((err) => { context.fail(err); }); }; function conversionPromise(record, destBucket) { ... } function get(srcBucket, srcKey) { ... } function put(destBucket, destKey, data) { ... Fuente: Sepai App in AWS Serverless Application Repository https://serverlessrepo.aws.amazon.com/applications/arn:aws:serverlessrepo:us- east-1:233054207705:applications~sepia Carga de dependencias y creación de conecciones hacia bases de datos/otros servicios previos al Handler() Función Handler() contiene lógica mínima Lógica de negócio en sus propias funciones
  • 26. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Función con lógica concisa • Separe el Handler() (punto de entrada) de la lógica principal • Lógica dinámica a través de configuración • Por función – Variables de Entorno • Múltiples funciones – Amazon Parameter Store/Secrets Manager • Lea solamente lo que necesites. Por ejemplo: • Bases de Datos indexadas apropiadamente • Query filters en Aurora • Utilice S3 Select
  • 27. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Sin orquestación en el códigoInicio Job#Xiniciado HTTPPOST HTTPPOST Yaestamoslistos? No! Estamoslistos! o time.sleep(10) 💤😴
  • 28. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Sin orquestación en el código Utilice AWS Step Functions!
  • 29. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Código de función eficiente • Evite “funciones-monolito” • Controle las dependencias en el paquete de despliegue de tu función • Optimice para tu lenguaje
  • 30. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Modelos de ejecución en Lambda Asíncrono (evento) Amazon SNS Función en AWS Lambda Amazon S3 reqs Polling Amazon DynamoDB Amazon Kinesis cambios AWS Lambda Función Síncrono (push) Amazon API Gateway Función en AWS Lambda /order
  • 31. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Gateways y routers • Elija un punto de entrada para la aplicación • Singular, cliente customizado? Use el SDK de AWS • No es client facing? Use endpoints regionales en API Gateway • Deseche eventos que no son relevantes lo más pronto posible • S3 – Prefijo del evento • SNS – Filtrado de mensaje
  • 32. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Controles de Concurrencia • Concurrencia es un pool compartido por defecto • Separar utilizando las configuraciones de concurrencia por cada función • Actúa como reserva • También actúa como concurrencia máxima por función • Especialmente importante para bases de datos como RDS • “Kill switch” – ajuste la concurrencia por función en cero
  • 33. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Como sé que algo no está bien? Esas herramientas están allá, ocúpenlas! 1. Activa X-Ray 1. Busque como decorar tus propias llamadas a través de los SDKs de X- Ray 2. No subestimes las capacidades de logging en Lambda 1. Simples declaraciones “debug: en la función X” funcionan bien y son fáciles de encontrar en CloudWatch Logs 3. Las métricas más útiles son aquellas que están más cerca de tu cliente/caso de uso 1. Cuantas cosas esa función llamó/creó/procesó/etc.
  • 34. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Lambda Dead Letter Queues (DLQ) “Cualquier función Lambda invocada de forma asíncrona se reintenta dos veces antes de que se descarte el evento. Si se producen errores en los reintentos y no conoce el motivo, utilice colas de mensajes fallidos (DLQ) para dirigir los eventos sin procesar a una cola de Amazon SQS o a un tema de Amazon SNS para analizar el error.” – https://docs.aws.amazon.com/es_es/lambda/latest/dg/dlq.html • Actívalo! (para los casos de llamadas asíncronas) • Monitorea a través de la métrica/alarma del tamaño de la fila en SQS • Si utilizas SNS, envíe los mensajes hacia algo durable y/o un endpoint fiable para procesamiento • Puedes enviar hacia funciones Lambda en otras regiones • Si y cuando las cosas salgan mal DLQ puedes guardar la información de los eventos al momento de la llamada ☠️ ✉️ Q
  • 35. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Lambda Dead Letter Queues (DLQ) “Por defecto, una función Lambda fallida llamada asíncronamente es reintentada dos veces, y de ahí el evento es descartado. Utilizando Dead Letter Queues (DLQ) puedes indicar al servicio de Lambda que eventos nos procesados deben ser enviados a una fila en Amazon SQS o un tópico en Amazon SNS donde puedes tomar acciones adicionales”. – https://docs.aws.amazon.com/lambda/latest/dg/dlq.html • Préndalo! (para los casos de llamadas asíncronas) • Monitoree a través de la métrica/alarma del tamaño de la fila en SQS • Si utilizas SNS, envíe los mensajes hacia algo durable y/o un endpoint fiable para procesamiento • Puedes enviar hacia funciones Lambda en otras regiones • Si y cuando las cosas salgan mal DLQ puedes guardar la información de los eventos al momento de la llamada ☠️ ✉️ Q A partir de 28 de junio de 2018 puedes suscribir una función Lambda para procesar mensajes en la Dead Letter Queue!
  • 36. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Modelos de ejecución en Lambda Polling Amazon SQS mensajes AWS Lambda función Nuevo Nuevo
  • 37. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
  • 38. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. aws.amazon.com/serverless
  • 39. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Boris Cortes borisco@amazon.com @boriscorteshttps://www.flickr.com/photos/theredproject/3302110152/
  • 40. © 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved. ? https://secure.flickr.com/photos/dullhunk/202872717/