Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Serverless: Mejores prácticas para desarrolladores

Lino Espinoza
September 22, 2024

Serverless: Mejores prácticas para desarrolladores

Lino Espinoza

September 22, 2024
Tweet

More Decks by Lino Espinoza

Other Decks in Technology

Transcript

  1. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados .
  2. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados . Serverless: Mejores prácticas para desarrolladores Lino Espinoza (he/him) AWS Community Builder @Serverless
  3. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados . Agenda • Serverless • Service-full serverless • Functions • From prototype to prod
  4. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados . Serverless
  5. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados . Los inicios de “Serverless” 2006 Lanzamiento de Amazon S3 Lanzamiento de AWS SQS 2008 Amazon EC2 en producción 2014 AWS Lambda preview 2015 AWS Lambda – Generally Available
  6. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados . Desarrollo de software en la nube en estos días Requiere cierta experiencia en la nube • Desarrollo para servicios distribuídos • Administrar fallos a larga escala (resilience) • Manejo de errores (error handling) • Administrar una alta disponibilidad (availability) • Administrar un rendimiento óptimo (performance) • Administrar una larga flota de capacidades de cómputo efímeras y almacenamiento • Conectividad en redes y permisos (networking & roles/policies)
  7. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados . Well-Architected Framework orientado a Serverless Disponibilidad Utilización de recursos Escalabilidad Seguridad Rendimiento
  8. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados . Evolucionando el uso de soluciones en la nube Componentes de infraestructura • Balanceadores • Tipos de instancias (EC2) • Componentes de red • Almacenamiento en disco • Reglas de firewall Aplicaciones • Bases de datos • Funciones • Colas / Streams • Servicios administrados • Flujos de trabajo (workflows) • Eventos
  9. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados . Serverless como un: Pensamiento estratégico Un forma, una práctica, una cultura, una forma de trabajar Foco Entrega de valor al negocio en vez de un solo ser un habilitador tecnológico
  10. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados . Serverless como un: Modelo de operación Sin la administración de capacidades complejas de infraestructura Construye en la nube, no solo dentro de la nube
  11. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados . Service-full serverless
  12. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados . Una aplicación serverless AWS Lambda
  13. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados . Una aplicación serverless Node.js Python Java .NET Go Ruby Rust PowerShell Runtime API Function
  14. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados . Una aplicación serverless Node.js Python Java .NET Go Ruby Rust PowerShell Runtime API Function Event source Cambios en el estado de la data Solicitudes hacia endpoints Cambios en el estado de un recurso
  15. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados . Una aplicación serverless Node.js Python Java .NET Go Ruby Rust PowerShell Runtime API Function Event source Cambios en el estado de la data Solicitudes hacia endpoints Cambios en el estado de un recurso Services
  16. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados . Una aplicación serverless Event source Cambios en el estado de la data Solicitudes hacia endpoints Cambios en el estado de un recurso Services
  17. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados . Es una función lambda siempre necesaria? Usa una función lambda para transformar, no transportar
  18. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados . Que tanta Están colocando dentro del código de tu función lambda
  19. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados . Que tan poca Están colocando dentro de tu código
  20. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados . App Tradicional Auth Caching logic Throttling logic Routing Storage Backend Error handling Retry logic Frontend
  21. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados . App Tradicional Auth Caching logic Throttling logic Routing Backend Error handling Retry logic Frontend Storage
  22. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados . App Tradicional Auth Caching log Backend Storage Frontend Throttling logic Routing Error handling Retry logic
  23. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados . Funciones modulares y con un solo propósito
  24. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados .
  25. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados . What should my function contain? /getuser /getusers /getproduct /getproducts /createuser /updateuser /createproduct /updateproduct /deleteuser /deleteproduct Agrupar funciones por: • Contexto (bound contexts) • Organización del equipo • Grupo de permisos IAM • Dependencias comunes en el downstream • Tiempo en el que deben inicializarse • Configuración de memoria
  26. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados . Orquestación / coreografía
  27. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados . Orquestación / coreografía Orquestación Coreografía AWS Step Functions AWS EventBridge
  28. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados . Integraciones usando el SDK de Step Functions
  29. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados . Amazon API Gateway: Integraciones directas
  30. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados . Functions
  31. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados . ¿Qué es AWS Lambda? • Provee tu código o imagen • Paga por milisegundo • Empaqueta como un .zip file (250 MB) o como un container image (10 GB) • Soporta lenguajes como (Java, Go, Node.js, .NET, Python, Ruby) • Sin aprovisionamiento o administración de servidores • Escalamiento en milisegundos en respuesta al tráfico ES LA FORMA MÁS RÁPIDA DE CONSTRUIR APLICACIONES MODERNAS CON EL MÁS BAJO COSTO DE OPORTUNIDAD
  32. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados . ¿Qué es AWS Lambda? ES LA FORMA MÁS RÁPIDA DE CONSTRUIR APLICACIONES MODERNAS CON EL MÁS BAJO COSTO DE OPORTUNIDAD • Función a ejecutarse después de la invocación • Contiene la información enviada durante la invocación de la lambda Event (object) • Metadata para obtener información del runtime (requestId, authorizers, log group, etc) Handler Context (object)
  33. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados . Ciclo de vida de una function lambda
  34. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados . Tipos de invocación de una función lambda SÍNCRONA, ASÍNCRONA Y BASADA EN EVENTOS
  35. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados . Habilitar AWS X-Ray en tus funciones lambda const AWSXRay = require('aws-xray-sdk-core’); const AWS = AWSXRay.captureAWS(require('aws-sdk')); // Capture all outgoing https requests AWSXRay.captureHTTPsGlobal(require('https')); const https = require('https'); Habilitar Xray para obtener información del rendimiento actual de las lambdas
  36. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados . AWS Xray Trace de ejemplo
  37. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados . AWS Lambda con Cpu Graviton 2 https://aws.amazon.com/blogs/aws/aws-lambda-functions-powered-by-aws-graviton2-processor-run-your-functions- on-arm-and-get-up-to-34-better-price-performance/
  38. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados . https://aws.amazon.com/blogs/aws/aws-lambda-functions-powered-by-aws-graviton2-processor-run-your-functions- on-arm-and-get-up-to-34-better-price-performance/ AWS Lambda Provisioned Concurrency Concurrency: Es el número de requests que tu función puede manejar al mismo tiempo Reserved Concurrency: Es el máximo número de instancias concurrentes que quieres habilitar para tu función lambda. Esto no incurre en costos. Provisioned Concurrency: Es el número de entornos de ejecución pre- inicializadas que quieres habilitar para tu función lambda. Si incurre en costos.
  39. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados . AWS Compute Optimizer
  40. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados . Desde el prototipo a producción
  41. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados . Infraestructure as Code (IAC)
  42. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados . AWS Application Composer
  43. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados . Serverless patterns
  44. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados . Unit testing
  45. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados .
  46. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados .
  47. © 2024, UGConf “The Cloud Conference”, UGPerú Cloud y sus

    afiliadas. Todos los derechos reservados . Gracias por asistir! Conectemos por Linked In Lino Espinoza AWS Community Builder @Serverless