Comenzando con aplicaciones serverless en AWS

40
© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Ivan Salazar, Enterprise Solutions Architect Noviembre, 2016 Comenzando con aplicaciones sin servidores en AWS

Transcript of Comenzando con aplicaciones serverless en AWS

© 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

La arquitectura monolítica

La arquitectura orientada a sercivios (SOA)

Capa de presentación Capa lógica

Capa de datos

La arquitectura de microservicios

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.

Pero….muchas de estas herramientas e innovaciones están acopladas a una dependencia común…

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

AWS Lambda

Servicio de cómputo, detonado por eventos y sin servidores

Lambda = microservicios sin servidores

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

“Pero espera…” – (usted)

Diferentes formas de abstraer servicios

§ SaaS§ PaaS§ MBaaS§ *aaS§ Application Engines/Platforms

¿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

Ejemplo de arquitectura sin servidores

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

“Pero… para poder utilizar Lambda, necesitodiseñar aplicaciones basadas eneventos?” – (usted)

SOA aún funciona

Amazon API Gateway

Un servicio totalmente administrado para APIs

Crear Configurar Publicar

Mantener Monitorear Seguro

Demo

AWS Lambda Function

web browser

Amazon S3

Contenido dinámico

Serverless Webform

Amazon API Gateway

HTML estático

Amazon DynamoDB

Patrones de arquitecturasServerless

Microservicios

Backend móvil

Motor de analíticos en tiempo real

Mejores prácticas para Serverless

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.

Una invitación

Construya algo!

Amazon API Gateway

AWS Lambda AmazonDynamoDB

Thank you!Gracias!