Bienvenida

1

Creación de Aplicaciones Serverless Avanzadas en AWS

2

Mejorando Proyectos Serverless con Buenas Prácticas y Funcionalidades

Buenas prácticas en serverless

3

Integración de Servicios AWS en Proyectos Serverless Avanzados

4

Buenas Prácticas con Serverless Framework en AWS

Serverless no es solo lambda

5

Validación de Lógica de Negocio con API Gateway y JSON Schema

6

Integración de Servicios AWS en Arquitecturas Serverless

7

Subida Segura de Archivos a S3 usando URLs Firmadas

8

Creación y Configuración de Buckets S3 con CloudFormation

9

Generación de URLs firmadas con AWS Lambda y API Gateway

Lambda layers

10

Procesador de Imágenes Asíncrono con AWS Lambda y S3

11

Optimización de Lambda con Layers en AWS y Serverless Framework

12

Automatización de Lambda Layers con GitHub Actions y Serverless Framework

Asegurando nuestra app serverless

13

Seguridad en Aplicaciones Serverless con API Gateway y Custom Authorizers

14

Uso de API Keys en Serverless Framework y API Gateway

15

Creación de Custom Authorizers en AWS con Serverless Framework

16

Autorización Personalizada con AWS Lambda y Custom Authorizer

Conectando ApiGateway con SQS

17

Asincronismo y Lambda: Implementación en AWS Serverless

18

Suma de Likes Asíncrona con AWS Lambda y SQS

19

Implementación Asíncrona de Likes con AWS Lambda y DynamoDB

Bonus

20

Configuración de Dominios Personalizados en AWS API Gateway

21

Configuración de Dominios Personalizados con Serverless Framework

22

Experiencias y desafíos en el desarrollo con Serverless en AWS

Cierra del curso

23

Resumen del Curso Serverless en AWS

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Buenas Prácticas con Serverless Framework en AWS

4/24
Recursos

¿Cuáles son las buenas prácticas al aplicar Serverless Framework en AWS?

Aplicar buenas prácticas usando Serverless Framework en Amazon Web Services (AWS) no es una limitación rígida, pero sí proporciona líneas guías esenciales que suelen adecuarse bien a las necesidades y soluciones predominantes en la industria. En este artículo, te brindaré algunos consejos útiles para optimizar tu implementación serverless en AWS, cubriendo aspectos de costos, rendimiento y seguridad.

¿Por qué evitar llamar a lambdas desde otras lambdas?

Llamar a una función lambda desde otra puede ser necesario en algunos casos. Sin embargo, es preferible evitarlo. Esto se debe a que el ecosistema serverless cobra por el consumo de recursos, lo que implica que si se genera un ciclo repetitivo de llamadas, los costos pueden dispararse.

  • Alternativas recomendadas:
    • Simple Queue Service (SQS) y Simple Notification Service (SNS): ideales para manejar procesos asincrónicos.
    • Step Functions: útil para procesos que requieren orquestación basada en lógica o condiciones específicas.

Estas herramientas permiten manejar llamadas entre funciones de manera más eficiente, aprovechando la naturaleza distribuida y asíncrona del entorno serverless.

¿Qué es el cold start y cómo enfrentarlo?

El fenómeno del "cold start" en AWS Lambda es un término común que describe el retraso que ocurre cuando una función lambda tarda milisegundos adicionales para iniciarse y responder a una petición tras un período de inactividad. Esto ocurre porque la función necesita aprovisionarse en un servidor antes de ejecutarse.

  • Provisioned Concurrency: Para asegurar que ningún usuario experimente el cold start, AWS ofrece la posibilidad de aprovisionar concurrency en Lambda, manteniendo instancias pre-calientes y listas para responder a peticiones.
  • Utilizar mejores prácticas: Al diseñar aplicaciones de alta concurrencia, es esencial evitar bloqueos innecesarios en el código. Implementar servicios como SNS, SQS y Step Functions ayudará a gestionar cargas de trabajo asincrónicas de manera eficiente.

¿Cómo optimizar el tamaño del package?

Reducir el tamaño de tus paquetes Lambda es crucial para maximizar el rendimiento y reducir tiempos de inicio. Al trabajar en aplicaciones más complejas con múltiples dependencias externas, considera implementar Lambda Layers de AWS, que permiten separar y reutilizar librerías comunes entre varias funciones Lambda.

  • Límites:
    • Máximo de cinco Lambda Layers por función.
    • El tamaño combinado de Lambda Layers y el package de despliegue no debe exceder 250 MB.

¿Por qué seguir el principio del mínimo privilegio?

El principio del mínimo privilegio es crucial para asegurar tu aplicación. Al proporcionar solo los permisos necesarios a tus funciones Lambda, reduces el riesgo de exposición innecesaria a recursos potencialmente sensibles.

  • Configuración de Roles: Al definir roles específicos para cada función Lambda en tu archivo serverless.yml, aseguras que cada función tenga solo los permisos estrictamente necesarios para realizar su tarea asignada, minimizando posibles vectores de ataque.

Otras prácticas recomendadas

  • Almacenamiento efímero: AWS Lambda permite un almacenamiento temporal en el directorio /tmp con un límite de hasta 512 MB, útil para manejos de archivos temporales, como el procesamiento de imágenes o videos.
  • Responsabilidad única: Asegúrate de que cada función Lambda tenga una responsabilidad específica. Esto simplifica el mantenimiento y potencializa la reutilización y escalabilidad del código.
  • RDS Proxy: Considera usar RDS Proxy para gestionar conexiones a bases de datos relacionales, evitando el problema de exceder el límite de conexiones debido al rápido escalamiento de Lambdas.

Implementar estas mejores prácticas no solo optimiza el funcionamiento de tus proyectos en el entorno serverless, sino que también prepara tu infraestructura para futuras escalas y la hace más segura y eficiente en términos de costos. Al combinar estas herramientas y técnicas, estarás más preparado para enfrentar los desafíos del desarrollo moderno en la nube.

Aportes 8

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

  • Excelentes practicas para desarrollar nuestros proyectos. Cada una es bastante útil.

  • Bastante importante lo de las Layers y de los secretos. Justo en un proyecto en que estoy trabajando lo requiere.

  • Excelente información acerca de definir contenido reutilzable afuera del handler para que pueda ser aprovechado por otro.

  • My meme (bad practice hahah) :

¡Buena pregunta! Aquí tienes una lista clara y útil de **buenas prácticas** y **errores comunes** al desarrollar aplicaciones con **Serverless Framework**, especialmente en AWS: ## ✅ Buenas prácticas en Serverless ### 1. **Mantén funciones pequeñas y enfocadas** * Cada función Lambda debe tener una única responsabilidad. * Facilita el mantenimiento, pruebas y despliegue independiente. ### 2. **Utiliza** `environment variables` **para la configuración** * Así evitas hardcodear valores sensibles o de entorno. * Usa `Secrets Manager` o `SSM` para información sensible. ### 3. **Despliegue por etapas (**`stages`**)** * Define entornos como `dev`, `staging`, `prod` en tu `serverless.yml`. * Evita sobrescribir datos reales al probar. ### 4. **Logs y monitoreo** * Usa `serverless logs -f nombreFuncion` para depurar. * Integra con herramientas como CloudWatch, Sentry, Datadog o New Relic. ### 5. **Configura correctamente los permisos (IAM)** * Otorga a cada Lambda solo los permisos necesarios (`least privilege`). * Usa roles por función si es necesario. ### 6. **Empaquetado individual (**`individually: true`**)** * Reduce tamaño de despliegue. * Acelera el proceso de deploy. ### 7. **Simula localmente con** `serverless-offline` * Ahorra tiempo y evita costos de AWS mientras desarrollas. ### 8. **Pruebas automatizadas** * Integra pruebas unitarias y de integración con Jest o Pytest según el lenguaje. * Prueba offline antes de desplegar. ## ❌ Errores comunes en Serverless ### 1. **Logs no disponibles o errores 504** * Ocurre cuando no existe el log group o la función se cuelga sin generar logs. * ✅ Revisa que la Lambda se desplegó correctamente y que está generando logs. ### 2. **Funciones muy grandes o con muchas dependencias** * El tiempo de despliegue se vuelve lento. * Puedes exceder el límite de tamaño de una Lambda. ### 3. **Hardcodear nombres de tablas, buckets o secretos** * Provoca conflictos entre entornos o al trabajar en equipo. * ✅ Usa variables dinámicas como `${self:service}-${sls:stage}`. ### 4. **Timeouts (error 504)** * Suele deberse a funciones que acceden a recursos lentos (como una DB mal configurada). * ✅ Aumenta el timeout o mejora el rendimiento de la función. ### 5. **Errores por rutas o carpetas mal nombradas** * El handler puede no encontrarse si la estructura de carpetas no coincide con lo indicado en `serverless.yml`. ### 6. **Mala gestión de errores** * No capturar errores en las Lambdas provoca respuestas poco claras o fallos silenciosos. * ✅ Usa bloques `try/catch` y responde con códigos HTTP adecuados. ### 7. **No usar versiones de runtime actualizadas** * AWS retira soporte para runtimes antiguos. * ✅ Usa Node.js 18.x, Python 3.10+, etc.
Estos recursos valen oro, sin duda alguna uno de los mejores cursos que tiene Platzi. Gracias.

Muy feliz con este curso, y como puedo aplicar los conocimientos que tengo y que sigo adquiriendo sobre AWS

Excelente contenido esta clase de buenas practicas.

Algo que me parece interesante es que se tomaron el tiempo de explicarlo bien porque a uno a veces las buenas practicas le dan duro y no son tan faciles de digerir. Sugiero que busquen la manera para que podamos hacer mas visible este tipo de explicaciones y/o contenido ejemplo(un like) o algo asi, porque si uno filtrara el contenido basado en likes y/o roles ejemplo(backend) quiza encuentre temas como estos que son muy comunes y le dan a uno una ruta clara para investigar mas a fondo .

Estos videos de buenas practicas se agradecen, en la practica son muy útiles.