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

JConf Peru 2023 - Construyendo una aplicación s...

JConf Peru 2023 - Construyendo una aplicación serverless en java con AWS SAM CLI

Veremos de forma práctica como construir y desplegar una aplicación java en aws lambda utilizando aws sam cli

Carlos Zela Bueno

December 04, 2023
Tweet

More Decks by Carlos Zela Bueno

Other Decks in Programming

Transcript

  1. © 2023, Amazon Web Services, Inc. or its affiliates. Construyendo

    un app serverless en java con AWS SAM CLI Lino Espinoza (he/him)
  2. © 2023, Amazon Web Services, Inc. or its affiliates. 2

    Builder [noun] A person who constructs something by putting parts or material together over a period of time
  3. © 2023, Amazon Web Services, Inc. or its affiliates. 3

    Cloud Advocate Never stop learning from the community
  4. © 2023, Amazon Web Services, Inc. or its affiliates. 4

    Acerca de mi Builder y evangelista del mundo cloud en AWS - Serverless Technical Lead, Ex-Kushki Papá, amante del buen té y café Typescript & Go lover <3 LINO ESPINOZA (HE/HIM)
  5. © 2023, Amazon Web Services, Inc. or its affiliates. 5

    Agenda AWS Lambda 101 Tipos de aplicaciones lambda y patrones de invocación AWS SDK Java AWS SAM 101 AWS SAM Workshop
  6. © 2023, Amazon Web Services, Inc. or its affiliates. 7

    ¿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
  7. © 2023, Amazon Web Services, Inc. or its affiliates. 8

    ¿Qué se puede constuir usando AWS Lambda? Automatización Procesamiento de información Aplicaciones Web Aplicaciones basadas en eventos Machine Learning
  8. © 2023, Amazon Web Services, Inc. or its affiliates. 9

    Anatomía de una función lambda • 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)
  9. © 2023, Amazon Web Services, Inc. or its affiliates. 10

    Conceptos de AWS Lambda • Serverless • Escalamiento automático • Pagas por lo que usas • Casos de uso • Procesamientos de data a escala • Web y mobile backends • Cargas de trabajo de Machine Learning • Aplicaciones basadas en eventos (Event Driven Architecture)
  10. © 2023, Amazon Web Services, Inc. or its affiliates. 11

    Conceptos de AWS Lambda • Basado en memoria, mientras más memoria consumas, lo mismo con el cpu • Considera que un tamaño pequeño de una función lambda, no necesariamente significa menores costos.
  11. © 2023, Amazon Web Services, Inc. or its affiliates. 12

    Ciclo de vida de una función lambda
  12. © 2023, Amazon Web Services, Inc. or its affiliates. 13

    Ciclo de vida de una función lambda QUE PUEDO Y NO PUEDO OPTIMIZAR
  13. © 2023, Amazon Web Services, Inc. or its affiliates. 14

    Tipos de invocación de una function lambda
  14. © 2023, Amazon Web Services, Inc. or its affiliates. 15

    Tipos de invocación de una función lambda SÍNCRONA, ASÍNCRONA Y BASADA EN EVENTOS
  15. © 2023, Amazon Web Services, Inc. or its affiliates. 17

    AWS SDK para Java DESARROLLAR E IMPLEMENTAR APLICACIONES PARA JAVA, FACILITA EL LLAMADO A SERVICIOS DE AWS CON API DE JAVA IDIOMÁTICAS // pom.xml <dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>bom</artifactId> <version>2.21.37</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> // Import individual modules (in this case API gateway for example) <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>apigateway</artifactId> </dependency>
  16. © 2023, Amazon Web Services, Inc. or its affiliates. 19

    AWS CloudFormation • Infraestructura como código • Brinda un lenguaje común para describir y provisionar todos los recursos de tu infraestructura en el entorno de la nube. • Puedes provisionar la infraestructura y las aplicaciones, sin tener que ejecutar operaciones manuales o escribir scripts ad-hocs https://aws.amazon.com/cloudformation/
  17. © 2023, Amazon Web Services, Inc. or its affiliates. 20

    AWS Serverless Application Model (SAM)
  18. © 2023, Amazon Web Services, Inc. or its affiliates. 21

    AWS Serverless Application Model (SAM) DESARROLLAR E IMPLEMENTAR APLICACIONES PARA JAVA, FACILITA EL LLAMADO A SERVICIOS DE AWS CON API DE JAVA IDIOMÁTICAS Es un framework opensource para construir aplicaciones serverless en AWS Cuenta con una sintaxis abreviada para declarar funciones, APIs, bases de datos, y mappings de eventos. Basado en YAML, deploy se realiza con AWS CloudFormation https://aws.amazon.com/serverless/sam/ https://github.com/aws/serverless-application-model
  19. © 2023, Amazon Web Services, Inc. or its affiliates. 22

    AWS SAM template AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Resources: GetHelloWorldFunction: Type: AWS::Serverless::Function Properties: Handler: index.handler Runtime: java20 CodeUri: s3://my-bucket/my-jar.jar Policies: DynamoDBReadPolicy Events: GetTodo: Type: Api Properties: Path: /todo/{id} Method: GET SimpleTable: Type: AWS::Serverless::SimpleTable SAM template transform Creates: • Lambda function • Runtime • Execution Policy • Code • Hander • API Gateway • API Endpoint • Permissions Create DynamoDB table with some defaults
  20. © 2023, Amazon Web Services, Inc. or its affiliates. 23

    Iniciando con AWS SAM CLI sam init - Genera un template pre-configurado de AWS SAM junto con código de ejemplo en el lenguaje de tu preferencia sam package - Empaqueta el codigo de la aplicación junto con las dependencias en un ”deployment package” sam build - Prepara los siguientes pasos para hacer deploy o probar locamente sam deploy - Despliega tu aplicación serverless a la nube de AWS sam local - Prueba el código de tu aplicación localmente sam logs - Obtén los logs generados por tu función lambda desplegada
  21. © 2023, Amazon Web Services, Inc. or its affiliates. 25

    AWS SAM Workshop https://bit.ly/481EsJV https://catalog.workshops.aws/complete-aws-sam/es-US