Post on 21-Jan-2018
Comenzando con arquitecturas sin servidores
Angel Leon
Arquitecto de Soluciones
Sector Público
Agosto 2017
Antecedente
¿Por qué los patrones de arquitecturas Serverless con AWS Lambda son
la siguiente evolución del diseño de aplicaciones?
Las herramientas para ayudar son MUCHAS
Servidores Web
Librerías de código
Servicios Web/Frameworks de Aplicación
Herramientas de administración de
configuraciones
Plataformas de administración de APIs
Patrones de despliegue
Patrones de CI/CD
Contenedores
Etc. Etc. Etc.
AWS ha ayudado también!
Amazon EC2
EC2 Auto-Scaling
AWS Elastic Load Balancer
EC2 Auto-Recovery
AWS Trusted Advisor
AWS Elastic Beanstalk
AWS OpsWorks
AWS EC2 Container Service
Etc. Etc. Etc.
Servidores (Ouch!)
¿Qué tamaño de servidores son
adecuados para mi presupuesto?
¿Cuántos usuarios generan
mucha carga a mis servidores?
¿Cuánta capacidad sobrante le
queda a mis servidores?
¿Cómo puedo detectar si un
servidor ha sido comprometido?
¿Cuántos servidores debería
presupuestar?
¿Cuál SO deberían tener mis
servidores?
¿Cuáles usuarios deberían
tener acceso a mis servidores?
¿Cómo puedo controlar el
acceso desde mis servidores?
¿Quién hará los parches de SO
de mis servidores?
¿Cómo despliegará el nuevo
código a mis servidores?
¿Cómo puedo incrementar la
utilización de mis servidores?
¿Cuándo debería decidir escalar
el número de servidores?
¿Qué tamaño de servidor es
adecuado para mi rendimiento?
¿Debo de ajustar los valores del
SO para optimizar mi aplicación?
¿Qué paquetes deben estar
creados en las imágenes?
¿Cuándo debería decidir crecer mis
servidores?
¿Cómo controlo los cambios en la
configuración del servidor?
¿Cómo las aplicaciones soportarán
fallas en el Hardware?
Arquitectura para ser Serverless
Totalmente administrado
No aprovisionamiento
Cero administración
Alta disponibilidad
Productividad del desarrollador
Enfocarse en el código que
importa
Innovar rápidamente
Reducir el time to market
Escalamiento continuo
Automatizado
Escala hacia arriba/abajo
Sitio web estático hospedado en S3
Especifique un documento índice (ej. index.html)
Especifique un documento de error
Los objetos deben ser de lectura pública
Soporta redireccionamientos
Todas las solcitudes
Condicional
bucket with
objects
Configuración dinámica
Una buena opción:
Obtener configuraciones de DynamoDB
Escriba los valores a variables globales
El código utiliza las variables globales
Lambda
Function
Amazon
DynamoDB
DynamoDB – recordatorio
Base de datos NoSQL
Llaves: Hash Key y Range Key (opcional)
Tips:
Planeé sus llaves
Piense en sus queries
Componentes de Lambda
Una función Lambda (que usted escribe)
Un evento externo
El servicio AWS Lambda
Un ambiente de red para la función
La función Lambda
Su código
(Java, NodeJS, Python, C#)
El rol de IAM que toma el
código durante la ejecución
La cantidad de memoria
reservada a su código
(afecta CPU y red también)
Una función completa
Lambda válida
Un evento externo
¿Cuándo se debe ejecutar su función?
Muchos servicios de AWS pueden ser eventos hoy:
• S3
• Kinesis
• SNS
• DynamoDB
• CloudWatch
• Config Rules
• Amazon Echo
• IoT
• Etc.
• …y Amazon API Gateway (más adelante)
El servicio AWS Lambda
Ejecuta el código de su función sin que tenga que
administrar o escalar servidores.
Provee un API para detonar la ejecución.
Asegura que la función es ejecutada cuando se detona,
en paralelo, sin importar la escala.
Provee capacidades adicionales para su función (logs,
monitoreo).
Ambiente de red para la función
Default – un ambiente de red
por defecto dentro de VPC está
incluido
El acceso a Internet siempre está
permitido para su función
Sin acceso a componentes
contenidos en una VPC propia
Customer VPC – Su función se
ejecuta dentro del contexto de su
propia VPC
Comunicación privada con otros
recursos dentro de su VPC
Configuración y comportamiento
familiar con:
– Subnets
– Elastic Network Interfaces (ENIs)
– EC2 Security Groups
– VPC Route Tables
– NAT Gateway
Muchas opciones sin servidores
Storage DatabaseNetwork
Compute Content DeliveryMessaging and QueuesSecurity
Gateways
User Management Monitoring & Logging
Internet of Things
Machine Learning
Streaming Analytics
Patrones de arquitecturas “Serverless”
Microservicios
Backend de aplicaciones móviles
Procesamiento de datos
Sitios Web
APIs
Analíticos en tiempo real
Procesamiento de multimedia
Upload
to S3
S3 Bucket Lambda
S3 Notification
Compressed
Image
Compress Image
Upload back to S3
Procesamiento de datos
Internet
Mobile Apps
Websites
Services
AWS Lambda
functions
API Gateway
Cache
Endpoints on
Amazon EC2
Any other publicly
accessible endpointAmazon
CloudWatch
Amazon
CloudFront
Amazon
API Gateway
API “Serverless” con API Gateway
CloudFront S3
Ingest
Lambda functions
HQ Copy
480p
Transcode
360p
Transcode
Audio Only
Transcode
S3
Playback
CloudFront
streaming
Thumbnails
Procesamiento de archivos de video
Beneficios de AWS Step functions
Diagnostique y
rastreé problemas
más rápido
Adáptese al
cambio
Fácil de conectar y
coordinar componentes
distribuidos y
microservicios para
crear aplicaciones más
rápido
Administra la
operación e
infraestructura de la
coordinación de
servicios para
asegurar la
disponibilidad
Productividad Agilidad Resiliencia