5. LAS HERRAMIENTAS PARA AYUDAR SON VASTAS
§ Servidores Web
§ Librerías de código
§ Servicios Web/Frameworks deAplicación
§ Herramientas de administración de
configuraciones
§ Plataformas de administración deAPIs
§ Patrones de despliegue
§ Patrones de CI/CD
§ Contenedores
§ Etc. Etc. Etc.
6. 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.
7. 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?
8. ARQUITECTURA PARA SER SERVERLESS
§ 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
Totalmente administrado Escalamiento continuo
§ Automatizado
§ Escala hacia arriba/abajo
9. Funciones Lambda son funciones de código
que implementan un microservicio.
LAMBDA ¿QUÉ SON?
10. Servicio de cómputo, detonado por eventos y sin servidores
Lambda = microservicios sin servidores
11. SERVERLESS
Enla implementación deAWS, se
les llama “serverless” porque no
tienes que administrar
servidores parausarlas*
*Sin embargo,si se usan servidores,
que administra AWS sin que tu
pienses enello.
13. Lambda te permite usar otras funciones lambda
dentro del código, por lo que puedes hacer
referencia a nuevos procesos.
LAMBDA USA OTRAS FUNCIONES LAMBDA
14. COSTO
Tienes 1 millón de llamadas gratis a tus funciones lambda
por mes.
● Esto no expira en ningún momento, sea una cuenta
nueva o vieja deAWS.
15. Si tienes 1000 usuarios activos de una app web o
móvil, son 1000 llamadas de las funciones por cada
uno.
Esdecir, 1000 llamadas afunciones en 30 dias son:
33llamadas por día.
¿QUÉESUNMILLÓNDE LLAMADAS?
17. ¿QUÉES LAMBDA?
No existe un servidor como vimos en EC2. Es
decir, solo está el código en lambdayAWS se
encargadeejecutarlo cuandonecesites.
Puedes programar funciones lambda en
NodeJS (javascript), Python, Java (Java
8),C# (.Net Core) y Go.
Serverless
Lenguajes
soportados
Imagina lambda como un lugar donde
puedes ejecutar funciones de tu código.
¿Qué son?
18. Puedes correr tu aplicación hasta
300 segundos, y tienes un /tmp
limitado a512MB
Está limitada a 1000 ejecuciones
concurrentes (aun mismo tiempo) –
no tiene límite en ejecuciones
secuenciales (una detrás de otra).
¿QUÉ ES LAMBDA?
Límitesde
ejecucióny
espacio
Ejecución
paralela
Mínima de 128 MB, máxima 3000MB
con incrementos de 64MB
Memoria
19. ¿QUÉ ES LAMBDA?
AWS está monitoreando constantemente la
ejecución de tus funciones y se encarga de que
siempre tengaelmejorperformance.
Tu código, aun estando en una
infraestructura compartida, corre en un
ambiente virtual exclusivo, aislado de
todos las demás ejecuciones de lambda.
Performance
Código aislado
Al ser una infraestructura compartida,
no tienes que preocuparte de
seguridad: AWS maneja todo.
Seguridad
20. AWS te regala 1 millón
de peticiones lambda
gratis en el primer año
de tucuenta.
HECHOS
21. CREANDO UNA FUNCIÓN LAMBDACON PYTHON
10 import os
def lambda_handler(event, context):
what_to_print =
os.environ.get("what_to_print")
how_many_times =
int(os.environ.get("how_many_times"))
# make sure what_to_print and
how_many_times values exist
if what_to_print and how_many_times > 0:
for i in range(0, how_many_times):
# formatted string literals are new in
Python 3.6
print(f"what_to_print: {what_to_print}.")
return what_to_print
return None
funcion_lambda.py
22. 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
23. 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 memoria
reservada a su código
(afecta CPU y red también)
Una función completa
Lambda válida
24. 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
• …y Amazon API Gateway (más adelante)
25. EL SERVICIO AWSLAMBDA
§ 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).
26. 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
32. MUCHAS OPCIONES SIN SERVIDORES
Storage DatabaseNetwork
Compute Content DeliveryMessaging and QueuesSecurity
Gateways
User Management Monitoring & Logging
Internet of Things
Machine Learning
StreamingAnalytics
33. EJEMPLO PROCESAMIENTO DE VIDEO SERVERLESS
Laptop
Encoders
HLS
S3
Playback
VOD Stream
mobile client
CloudFront
Streaming
Live stream
mobile client
CloudFro
nt
S3 Ingest
480p
Transcod
e
360p
Transcod
e
Audio-
only
Transcod
e
Thumbnai
l
QOS
Analytics
Funciones Lambda en cascada
HQ Copy
http://www.slideshare.net/AmazonWebServices/arc308-the-serverless-company-using-aws-lambda
34. DIFERENTES FORMAS DE ABSTRAER SERVICIOS
§ SaaS
§ PaaS
§ MBaaS
§ *aaS
§ Application Engines/Platforms
35. ¿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
36. 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ón
es asíncrona.
3. No asuma el reuso de
contenedores de funciones –
pero aprovéchelo cuando
suceda.
1. No olvide el espacio en disco
(500MB /tmp directorio a cada
función)
2. Use aliases para liberar
funciones.
3. Use el servicio de logs
incluido (incluye detalles del
contexto del servicio)
4. Cree metricas personalizadas
(operativas, y de negocio)
37. MEJORES PRÁCTICAS DE AMAZON APIGATEWAY
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 enlas
funciones para logs y
comportamiento)
1. Use plantillas
request/response.
2. Tome control de los códigos
de respuesta HTTP
3. Use Swagger import/export
para compartir entre cuentas
38. MEJORES PRÁCTICAS ADICIONALES
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 escala conocidos
4. Sea consciente del throttling del
servicio, contacte a soporte si
sucede.
1. Use estrategias de nombrado
consumibles (nombres de
funciones Lambda, roles IAM,
nombres de API, ambientes
de 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