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

Road to Serverless

Road to Serverless

Palestra sobre arquitetura Serverless na AWS.

07080351150c53efa399856330e4fa19?s=128

Matheus Fidelis

September 22, 2018
Tweet

Transcript

  1. @fidelissauro

  2. Matheus Fidelis (Raj) Arquiteto Cloud / DevOps Superlógica / PJBank

  3. SEM SERVIDOR? SEM SERVIDOR? RODA ONDE? IT’S M AGIC?? BRURRARIA?

    SEM SERVIDOR?? COM O SEM ??? IT’S POSSIBRU??
  4. None
  5. ESQUEÇA TUDO

  6. NoOps Sem Servers DevOps Sem Preocupação com Servers

  7. Funções tem entrega e escala de forma unitária; Máquinas, VM's

    ou containers não são VISÍVEIS ao usuário; Storage Persistente é mantido transparentemente; Scaling por request; Nunca acima ou abaixo da necessidade; Never pay for idle; Sem custos por recursos sem utilização; Tolerante a falhas; Bring Your Own Code; Métricas e logging são direitos universais; MANIFESTO
  8. PROVER RECURSOS DE INFRA SEM AS EVENTUAIS PREOCUPAÇÕES DE INFRA

  9. CAMADA DE APLICAÇÃO

  10. ONDE ISSO MORA? STORAGE DATABASES STREAMING CONTAINERS FAAS API’s IOT

    / MOBILE
  11. None
  12. None
  13. On Quase Premise

  14. Escala de... ACESSOS CLIENTES DEMANDA EQUIPE INFRA

  15. CLOUD REVOLUTION

  16. X-aaS IaaS PaaS BaaS DaaS MaaS SaaS FaaS

  17. IaaS Capacidade Computacional; VM Servers, Network, Routers e etc; Focado

    em Infraestrutura e SO; Requer mais provisionamento e configuração; Ideal para equipes grandes ou aplicações mais complexas;
  18. PaaS Nível básico de abstração de infra; Focado em plataformas

    e aplicação; Ideal para equipes de desenvolvedores; Provisionamento e Escala Facilitado;
  19. BaaS Alto nível de abstração; Objetivos Específicos; Corte de demanda;

    Gerenciamento por terceiros;
  20. FaaS (Function as a Service)

  21. Funções Independentes Responsabilidades Independentes Escala Independente

  22. OBJETIVOS ESPECÍFICOS

  23. MICROSERVIÇOS

  24. None
  25. Cloud Native (Código escrito para nuvem)

  26. Negócio Abstração de administração Auto-scaling Pay-per-use* Time to market Baixo

    Overhead Curva de aprendizado BENEFÍCIOS
  27. None
  28. None
  29. None
  30. None
  31. None
  32. FaaS Baseado em eventos Alta disponibilidade Alta escalabilidade

  33. RUNTIMES

  34. Event-Driven Applications Triggers ARQUITETURA

  35. Event Sources

  36. EPHEMERAL CONTAINERS

  37. EPHEMERAL Criados para morrer Não garante um longo TTL Online

    somente quando requisitado Warm Ups
  38. WARM UPS

  39. COLD WARM UP

  40. COLD WARM UP Uma nova execução é requisitada O código

    é copiado para o container A função é inicializada A função é executada O container é congelado para execução
  41. HOT WARM UP

  42. HOT WARM UP Uma nova execução é requisitada Um container

    é descongelado (warm) A função é executada O container é congelado novamente
  43. None
  44. COMO ORQUESTRAR TUDO ISSO?

  45. None
  46. FRAMEWORK CLI Open Source Otimização de Deploy Gerenciamento FaaS Arquivo

    YAML de configuração https://serverless.com
  47. npm install -g serverless

  48. $ serverless create deploy invoke logs remove

  49. serverless create \ --template aws-nodejs \ --path ./demo

  50. handler.js

  51. handler.js

  52. nome do app providers, runtimes e configurações globais Declaração de

    uma função serverless.yml
  53. nome do app providers, runtimes e configurações globais Declaração de

    uma função serverless.yml Configuração de um evento HTTP
  54. serverless.yml Configurações específicas

  55. serverless deploy -v

  56. None
  57. None
  58. None
  59. PROVIDERS

  60. POR ONDE EU COMEÇO?

  61. COMEÇANDO DO ZERO Pequenos serviços satélites Projetos novos em geral

    Processos mais braçais Crons e outros processos agendados Gerenciamento de logs e alertas
  62. MIGRANDO O PRODUTO Migração parcial Otimizações de Pain Points Endpoints

    de gargalo API Gateway
  63. MIGRANDO O PRODUTO

  64. MIGRANDO O PRODUTO

  65. MIGRANDO O PRODUTO

  66. MIGRANDO O PRODUTO

  67. MIGRANDO O PRODUTO

  68. DevOps

  69. DEVOPS + FaaS Pipelines Unit Tests Multi-environment CI/CD de FaaS

    Dev Onboarding
  70. Desenvolvimento + Mocks localstack - AWS Resources (Docker) serverless-offline (npm)

    serverless-dynamodb-local (npm)
  71. Unit Tests Mocha Chai Lab

  72. Unit Tests Módulo da função lambda

  73. Unit Tests Módulo da função lambda Mock de um evento

    HTTP
  74. Unit Tests Módulo da função lambda Mock de um evento

    HTTP Captura do callback do Lambda
  75. Autenticação Amazon Cognito JWT

  76. Telemetria New Relic Cloudwatch X-Ray Serverless Dashboard Dashbird

  77. SERVERLESS PIPELINE https://github.com/msfidelis/serverless-pipeline

  78. Aplicações Casos de Uso

  79. Webhooks API Gateway Lambda Save webhooks-db webhooks-queue Webhooks Consumer Async

    Webhooks Execution Async execution feedback
  80. SERVERLESS WEBHOOKS https://github.com/superlogica/serverless-webhooks

  81. API Logs / IDS / Comportamento App Servers RedisMQ -

    IDS RedisMQ - API Logs IDS Consumer Logs Consumer
  82. Lazy Data Streaming API Gateway Lambda Post SQS Messages Consumer

    App Servers
  83. API’s de Bigdata

  84. Cron Jobs ETC... S3 Batch Processing HTTP Requests AWS API

    Actions Database Process rate(2 hours) cron(00 23 * * ? * ) cron(00 05 1 * * ? *) cron(00 05 1 * ? * ) cron(* * * * * * )
  85. Cron Jobs

  86. SERVERLESS FRAMEWORK https://github.com/serverless/serverless

  87. SERVERLESS DOCS https://serverless.com/framework/docs/

  88. SERVERLESS EXAMPLES https://github.com/serverless/examples

  89. SERVERLESS ARCHITECTURE BOILERPLATE https://github.com/msfidelis/serverless-architecture-boilerplate

  90. Configurações de Ambiente API Endpoints Workers Shared Libs Tests Docker

    Travis CI / CD
  91. SERVERLESS EXPRESS https://github.com/dougmoscrop/serverless-http

  92. OBRIGADO! PERGUNTAS?

  93. Matheus Fidelis (Raj) Twitter: @fidelissauro Github: msfidelis Web: raj.ninja