Slide 1

Slide 1 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Ana Cunha Developer Advocate O Canivete Suíço para o Desenvolvimento Serverless

Slide 2

Slide 2 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Arquiteturas Tradicionais

Slide 3

Slide 3 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Web Service Service Cliente HTTP

Slide 4

Slide 4 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Web Service na Nuvem Instância EC2 Banco de Dados

Slide 5

Slide 5 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Banco de Dados Web Service na Nuvem – Escalando Verticalmente Instância EC2

Slide 6

Slide 6 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Banco de Dados Web Service na Nuvem – Escalando Horizontalmente Elastic Load Balancer

Slide 7

Slide 7 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Banco de Dados Web Service na Nuvem – Auto Scaling Elastic Load Balancer Auto Scaling Group

Slide 8

Slide 8 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Banco de Dados Web Service na Nuvem – Alta Disponibilidade Elastic Load Balancer Auto Scaling Group Availability Zone A Availability Zone B

Slide 9

Slide 9 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Gerenciamento da Aplicação • Aplicação + Código • Lógica de Negócio • Provisionamento de Servidores • Sistemas Operacionais • Patches • Políticas de Escala • Planejamento de Capacidade • Disponibilidade Core Business Infraestrutura

Slide 10

Slide 10 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Serverless

Slide 11

Slide 11 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Componentes Essenciais Requisição Lógica de Negócio Outros Serviços

Slide 12

Slide 12 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Componentes Essenciais Outros Serviços Evento Código

Slide 13

Slide 13 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS Lambda – Componentes Serverless Outros Serviços Evento Event Source Handler AWS Lambda Function Amazon SNS Amazon S3 Amazon DynamoDB

Slide 14

Slide 14 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Serverless ü Sem gerenciamento de servidores

Slide 15

Slide 15 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Serverless ü Sem gerenciamento de servidores ü Escalabilidade flexível

Slide 16

Slide 16 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Serverless ü Sem gerenciamento de servidores ü Escalabilidade flexível ü Pagamento pelo valor

Slide 17

Slide 17 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Serverless ü Sem gerenciamento de servidores ü Escalabilidade flexível ü Alta disponibilidade ü Pagamento pelo valor

Slide 18

Slide 18 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Serverless Amplia os Benefícios da Nuvem Servidores físicos em data centers Servidores virtuais na nuvem Serverless

Slide 19

Slide 19 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Desenvolvimento Serverless Boas Práticas

Slide 20

Slide 20 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Produção Desenvolvimento e deploy seguindo boas práticas. Boas Práticas de Desenvolvimento São as Mesmas Experimentação Uso do Console de Gerenciamento da AWS para criação, teste e deploy. IDE

Slide 21

Slide 21 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Handler handler(event, context) Separação de Responsabilidades • Toda função Lambda tem um método handler • Processamento de eventos • Funcionalidade separada em múltiplas classes e funções

Slide 22

Slide 22 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Separação de Responsabilidades Handler • Configuração da função • Código específico para Lambda • Sem lógica de negócio Handler Controller Service

Slide 23

Slide 23 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Separação de Responsabilidades Controller • Processamento do evento • Lógica de Negócio Handler Controller Service

Slide 24

Slide 24 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Separação de Responsabilidades Service • Abstrações • Integrações externas Service Handler Controller

Slide 25

Slide 25 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Execution Context • Ambiente de runtime temporário • Baseado na configuração de memória e timeout definidas • Recursos necessários para executar a função Lambda • Carrega e inicializa as dependências da função • “Bootstrapping” do runtime • Reutilizado por algum tempo pelas próximas execuções da função

Slide 26

Slide 26 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Dependências Cold Start Warm Start Download código, inicialização Execution Context Bootstrap do runtime Iniciar o código Bootstrap • Minimizar dependências • Considerar tempo de inicialização • Outras dependências e frameworks

Slide 27

Slide 27 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Suporte Serverless para Frameworks Conhecidos AWS Serverless Java Container AWS Serverless Express Zappa

Slide 28

Slide 28 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Desenvolvimento Serverless Ferramentas

Slide 29

Slide 29 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Ferramentas Conhecidas • Sistema de Controle de Versão • IDE • Build • Deploy Novas • Framework para desenvolvimento de aplicações Serverless

Slide 30

Slide 30 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Serverless Application Framework Código Binário S3 Bucket Arquivo ZIP AWS Lambda Criação Build Package Deploy IDE + Ferramenta de Build Serverless Application Framework

Slide 31

Slide 31 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Etapas de Deploy 1. Build 2. ZIP 3. Upload para Amazon S3 4. Criar atualizar roles 5. Criar função Lambda 6. Criar API REST 7. Criar recurso 8. Criar método 9. Criar tabela 10. Configurar integrações Deploy

Slide 32

Slide 32 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS CloudFormation • Infraestrutura como código • Definição dos recursos que precisam ser criados • Provisionamento automatizado e replicável • Código = versionamento + revisão + testes

Slide 33

Slide 33 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Serverless Application Model (SAM)

Slide 34

Slide 34 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. SAM • Framework para construir aplicações serverless • Escreva com YAML • Deploy com AWS CloudFomration • Open Source • https://github.com/awslabs/serve rless-application-model

Slide 35

Slide 35 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. SAM SAM Templates • Infraestrutura como código • Aplicações Serverless • Sintaxe abreviada • Definir recursos e event sources SAM CLI • Conjunto de ferramentas • Desenvolvimento local • Debugging • Build, package, deploy

Slide 36

Slide 36 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. SAM Template AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Resources: GetHtmlFunction: Type: AWS::Serverless::Function Properties: CodeUri: ./src Handler: index.gethtml Runtime: nodejs12.x Policies: AmazonDynamoDBReadOnlyAccess Events: Api: Type: Api Properties: Path: /{proxy+} Method: ANY ListTable: Type: AWS::Serverless::SimpleTable

Slide 37

Slide 37 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. SAM Serverless Resources AWS::Serverless::Function AWS::Serverless::Api AWS::Serverless::HttpApi AWS::Serverless::SimpleTable AWS::Serverless::LayerVersion AWS::Serverless::Application AWS::Serverless::StateMachine

Slide 38

Slide 38 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. SAM CLI sam init

Slide 39

Slide 39 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. SAM CLI sam init sam build

Slide 40

Slide 40 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. SAM CLI sam init sam build sam deploy --guided

Slide 41

Slide 41 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. SAM CLI sam init sam build sam deploy --guided # Host API locally sam local start-api

Slide 42

Slide 42 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. SAM CLI sam init sam build sam deploy --guided # Directly invoke function sam local invoke

Slide 43

Slide 43 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Desenvolvimento Serverless Sistemas de Controle de Versão

Slide 44

Slide 44 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Repositórios de Código Um para cada função Lambda Um para todas funções Lamba

Slide 45

Slide 45 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Repositórios de Código Nível de Serviços

Slide 46

Slide 46 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Serviços Service Uma ou mais funções, serviços e recursos AWS Template Repositório

Slide 47

Slide 47 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Desenvolvimento Serverless Ambientes de Desenvolvimento Integrado (IDE)

Slide 48

Slide 48 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS Cloud9 • Criação • Execução • Debug • Deploy

Slide 49

Slide 49 text

© 2020, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Obrigada! Ana Cunha @mcunhaana analuizacunha