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

Construyendo una aplicación serverless en Java con AWS SAM CLI

Construyendo una aplicación serverless en Java con AWS SAM CLI

Lino Espinoza

December 02, 2023
Tweet

More Decks by Lino Espinoza

Other Decks in Technology

Transcript

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

    View full-size slide

  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

    View full-size slide

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

    View full-size slide

  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)

    View full-size slide

  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

    View full-size slide

  6. © 2023, Amazon Web Services, Inc. or its affiliates. 6
    AWS Lambda 101

    View full-size slide

  7. © 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

    View full-size slide

  8. © 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

    View full-size slide

  9. © 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)

    View full-size slide

  10. © 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)

    View full-size slide

  11. © 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.

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  15. © 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

    View full-size slide

  16. © 2023, Amazon Web Services, Inc. or its affiliates. 16
    AWS SDK para Java

    View full-size slide

  17. © 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



    software.amazon.awssdk
    bom
    2.21.37
    pom
    import



    // Import individual modules (in this case API gateway for example)

    software.amazon.awssdk
    apigateway

    View full-size slide

  18. © 2023, Amazon Web Services, Inc. or its affiliates. 18
    Infraestructura como
    Código (IAC)

    View full-size slide

  19. © 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/

    View full-size slide

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

    View full-size slide

  21. © 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

    View full-size slide

  22. © 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

    View full-size slide

  23. © 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

    View full-size slide

  24. © 2023, Amazon Web Services, Inc. or its affiliates. 24
    AWS SAM Workshop

    View full-size slide

  25. © 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

    View full-size slide