© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Ivan Salazar, Enterprise Solutions Architect
Noviembre, 2016
Comenzando con aplicaciones sin servidoresen AWS
Agenda
§ Antecedente
§ AWS Lambda
§ Amazon API Gateway
§ Demo
§ Serverless Architecture Patterns§ Serverless Best Practices
AntecedenteCómo es que los patrones de arquitecturas “Serverless” con AWS Lambda son la siguiente evolución del diseño de aplicaciones
Las herramientas para ayudar son VASTAS
§ 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 generanmucha 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íapresupuestar?
§ ¿Cuál SO deberían tener misservidores?
§ ¿Cuáles usuarios deberíantener acceso a mis servidores?
§ ¿Cómo puedo controlar el acceso desde mis servidores?
§ ¿Quién hará los parches de SOde mis servidores?
§ ¿Cómo despliegará el nuevocódigo a mis servidores?
§ ¿Cómo puedo incrementar la utilización de mis servidores?
§ ¿Cuándo debería decidir escalarel número de servidores?
§ ¿Qué tamaño de servidor esadecuado para mi rendimiento?
§ ¿Debo de ajustar los valores del SO para optimizar mi aplicación?
§ ¿Qué paquetes deben estarcreados en las imágenes?
§ ¿Cuándo debería decidir crecer misservidores?
§ ¿Cómo controlo los cambios en la configuración del servidor?
§ ¿Cómo las aplicaciones soportaránfallas en el Hardware?
Arquitectura para ser Serverless
Totalmente administrado§ No provisionamiento§ 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
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)
§ El rol de IAM que toma el código durante la ejecución
§ La cantidad de memoriareservada a su código(afecta CPU y red también)
Una función completaLambda 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 capacidade 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 componentescontenidos en una VPC propia
Customer VPC – Su función se ejecuta dentro del contexto de supropia VPC
§ Comunicación privada con otrosrecursos dentro de su VPC
§ Configuración y comportamientofamiliar con:– Subnets– Elastic Network Interfaces (ENIs)– EC2 Security Groups– VPC Route Tables– NAT Gateway
¿Qué hace a Lambda único?
§ Abstracción a nivel código/función (arbitraria, flexible, familiar)
§ El modelo de seguridad (IAM, VPC)
§ El model de precio
§ La comunidad§ Integración con los servicios de AWS
• Escala• Eventos
Muchas opciones sin servidores
Storage DatabaseNetwork
Compute Content DeliveryMessaging and QueuesSecurity
Gateways
User Management Monitoring & Logging
Internet of Things
Machine Learning
Streaming Analytics
Procesamiento de video Serverless
Laptop Encoders
HLS
S3 Playback
VOD Stream mobile client
CloudFrontStreaming
Live stream mobile client
CloudFront
S3 Ingest
480p Transcod
e
HQ Copy
360p Transcod
e
Audio-only
Transcode
Thumbnail
QOS Analytics
Funciones Lambda en cascada
http://www.slideshare.net/AmazonWebServices/arc308-the-serverless-company-using-aws-lambda
Demo
AWS Lambda Function
web browser
Amazon S3
Contenido dinámico
Serverless Webform
Amazon API Gateway
HTML estático
Amazon DynamoDB
Mejores prácticas para AWS Lambda
1. Limite el tamaño de la función– especialmente para Java (iniciar JVM toma tiempo)
2. Node – recuerde la ejecuciónes asíncrona.
3. No asuma el reuso de contenedores de funciones –pero aprovéchelo cuandosuceda.
1. No olvide el espacio en disco (500MB /tmp directorio a cadafunción)
2. Use aliases para liberarfunciones.
3. Use el servicio de logs incluido (incluye detalles del contexto del servicio)
4. Cree metricas personalizadas(operativas, y de negocio)
Mejores prácticas de Amazon API Gateway
1. Use plantillasrequest/response.
2. Tome control de los códigosde respuesta HTTP
3. Use Swagger import/export para compartir entre cuentas
1. Use integración con templates
2. Combine con Cognito para administrar el control de acceso de usuarios finales.
3. Use variables de ambientes(inserte los valores de configuración del API en las funciones para logs y comportamiento)
Mejores prácticas adicionales
1. Use estrategias de nombradoconsumibles (nombres de funciones Lambda, roles IAM, nombres de API, ambientesde API, etc.)
2. Use convenciones de nombres y versiones para automatizar
3. Externalice la autenticación a roles de IAM en medida de lo posible
1. El menor privilegio y roles separados de IAM
2. Externalice la configuración -DynamoDB es muy útil
3. Contacte a soporte antes de eventos a gran escalaconocidos
4. Sea consciente del throttling del servicio, contacte a soporte si sucede.
Top Related