17
Trilha – Serverless Alexandre Rodrigues da Silva Fundador da Alesil Tecnologia | Desenvolvedor C# Comunidade Microservices Brasil (https://microservices.tech)

Trilha – Serverless...2019/07/17  · Azure Functions AWS Lambda IBM Cloud Functions Normalmente a estrutura de criação é exclusiva do provedor de cloud\爀䐀椀昀椀挀甀氀搀愀搀攀

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Trilha – Serverless...2019/07/17  · Azure Functions AWS Lambda IBM Cloud Functions Normalmente a estrutura de criação é exclusiva do provedor de cloud\爀䐀椀昀椀挀甀氀搀愀搀攀

Trilha – ServerlessAlexandre Rodrigues da Silva

Fundador da Alesil Tecnologia | Desenvolvedor C#Comunidade Microservices Brasil (https://microservices.tech)

Page 2: Trilha – Serverless...2019/07/17  · Azure Functions AWS Lambda IBM Cloud Functions Normalmente a estrutura de criação é exclusiva do provedor de cloud\爀䐀椀昀椀挀甀氀搀愀搀攀

Função comoServiço (FaaS)

Onde e porque errei ao usar ?

Apresentador
Notas de apresentação
- INTERAGIR: Perguntar quem usa, se usa em produção, qual cloud, se já tiveram problemas
Page 3: Trilha – Serverless...2019/07/17  · Azure Functions AWS Lambda IBM Cloud Functions Normalmente a estrutura de criação é exclusiva do provedor de cloud\爀䐀椀昀椀挀甀氀搀愀搀攀

3

Algumas características interessantesFunção como Serviço (FaaS)

ContêineresSão executadas em contêineres

de computação sem estado

EventosAcionadas por evento(filas, http, temporizadores, sistema de arquivos, banco de dados, etc.)

Apresentador
Notas de apresentação
A princípio são executadas de forma isolada (veremos mais a frente) Filas (AWS SQS, Azure Queue Service, entre outros) Arquivos e banco de dados (ao gravar, alterar, excluir – dispara o evento) Temporizadores (CRON)
Page 4: Trilha – Serverless...2019/07/17  · Azure Functions AWS Lambda IBM Cloud Functions Normalmente a estrutura de criação é exclusiva do provedor de cloud\爀䐀椀昀椀挀甀氀搀愀搀攀

4

EfêmerasPodem durar apenas

uma chamada

Duração LimitadaTempo de execução máximo definido pelo provedor da nuvem

Recursos LimitadosEspaço em disco, memória,

processador, rede, etc.

Cold-StartLatência na inicialização de uma nova instância

Page 5: Trilha – Serverless...2019/07/17  · Azure Functions AWS Lambda IBM Cloud Functions Normalmente a estrutura de criação é exclusiva do provedor de cloud\爀䐀椀昀椀挀甀氀搀愀搀攀

5

Processo de login utilizando o AWS Cognito com Token Customizado

Onde ocorreu o problema ?

• Usuário• Senha

Login

• AWS Cognito

Authentication• Função

Lambda (FaaS)

Custom Token

• Site liberado

Access

Apresentador
Notas de apresentação
- O usuário esperou por mais de 20 segundos após clicar no botão de login
Page 6: Trilha – Serverless...2019/07/17  · Azure Functions AWS Lambda IBM Cloud Functions Normalmente a estrutura de criação é exclusiva do provedor de cloud\爀䐀椀昀椀挀甀氀搀愀搀攀

6

A função lambda demorou para carregar e executar

Por que aconteceu ?

AWS Lambda

Amazon DynamoDB

Amazon Cognito

AWS Cloud • Memória: 256mb• Network: Com VPC ativa• Linguagem: C# (dotnet core)• Nenhum acesso nos últimos

30 minutos (o que gerou timeout da instância)

Apresentador
Notas de apresentação
Usei pouca memória, por consequência, pouco processador, largura de banda na rede, etc. VPC ativa – Tempo para criação da “placa de rede (estrutura)”, buscar IP no dhcp, etc. C# compilava com imagem de 1,5 Gb (demorando para carregar) Timeout derrubava a instância (revalidação do token era a cada 60 minutos)
Page 7: Trilha – Serverless...2019/07/17  · Azure Functions AWS Lambda IBM Cloud Functions Normalmente a estrutura de criação é exclusiva do provedor de cloud\爀䐀椀昀椀挀甀氀搀愀搀攀

7

Como funciona o paralelismo nos provedores ?

Paralelismo

F1 F1 F1

F1 F1

1

2

Apresentador
Notas de apresentação
Execuções em paralelo sobem instâncias paralelas, causando o cold-start NÃO compartilha disco nem memória (apenas chamadas subsequentes)
Page 8: Trilha – Serverless...2019/07/17  · Azure Functions AWS Lambda IBM Cloud Functions Normalmente a estrutura de criação é exclusiva do provedor de cloud\爀䐀椀昀椀挀甀氀搀愀搀攀

8

Como funciona o paralelismo nos provedores ?

Paralelismo

F1 F1

F1 F1

1

2

F1 F1 F1

F1 F1 F1

Apresentador
Notas de apresentação
PODE executar mais de 1x no mesmo servidor, compartilhando disco e memória
Page 9: Trilha – Serverless...2019/07/17  · Azure Functions AWS Lambda IBM Cloud Functions Normalmente a estrutura de criação é exclusiva do provedor de cloud\爀䐀椀昀椀挀甀氀搀愀搀攀

9

Plano Premium – Permite o controle de pré-aquecimento das funções

Paralelismo

Apresentador
Notas de apresentação
Agora permite deixar uma quantidade de instâncias em pré-aquecimento Controla a quantidade mínima e máxima de instâncias em execução Com o MIN vc evita o cold-start Com o MAX vc pode definir quantas em paralelo, evitando problemas como o que vou mostrar a seguir
Page 10: Trilha – Serverless...2019/07/17  · Azure Functions AWS Lambda IBM Cloud Functions Normalmente a estrutura de criação é exclusiva do provedor de cloud\爀䐀椀昀椀挀甀氀搀愀搀攀

10

Cada função cria uma nova conexão no banco de dados

Banco de Dados

F1

F1

F1

F1

F1 F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

Apresentador
Notas de apresentação
Normalmente, cada chamada de função abre um canal com o banco de dados Até ai, ok. Mas imagina uma Black-Friday ? O que pode acontecer com seu banco ?
Page 11: Trilha – Serverless...2019/07/17  · Azure Functions AWS Lambda IBM Cloud Functions Normalmente a estrutura de criação é exclusiva do provedor de cloud\爀䐀椀昀椀挀甀氀搀愀搀攀

11

Servidor atinge limite de conexões

Banco de DadosF1

F1F1

F1 F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1F1 F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1F1

F1

F1

F1F1

F1

F1F1

Page 12: Trilha – Serverless...2019/07/17  · Azure Functions AWS Lambda IBM Cloud Functions Normalmente a estrutura de criação é exclusiva do provedor de cloud\爀䐀椀昀椀挀甀氀搀愀搀攀

12

Servidor começa a recusar conexões

Banco de DadosF1

F1F1

F1 F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1F1 F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1F1

F1

F1

F1F1

F1

F1F1

Page 13: Trilha – Serverless...2019/07/17  · Azure Functions AWS Lambda IBM Cloud Functions Normalmente a estrutura de criação é exclusiva do provedor de cloud\爀䐀椀昀椀挀甀氀搀愀搀攀

13

Funções começam a quebrar e retornar erros

Banco de DadosF1

F1F1

F1 F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1F1 F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1F1

F1

F1

F1F1

F1

F1F1

Page 14: Trilha – Serverless...2019/07/17  · Azure Functions AWS Lambda IBM Cloud Functions Normalmente a estrutura de criação é exclusiva do provedor de cloud\爀䐀椀昀椀挀甀氀搀愀搀攀

14

Servidor PARA DE RESPONDER

Banco de DadosF1

F1F1

F1 F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1F1 F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1

F1F1

F1

F1

F1F1

F1

F1F1

Apresentador
Notas de apresentação
Todas as funções caem Banco de dados para de responder Derruba todo o seu serviço
Page 15: Trilha – Serverless...2019/07/17  · Azure Functions AWS Lambda IBM Cloud Functions Normalmente a estrutura de criação é exclusiva do provedor de cloud\爀䐀椀昀椀挀甀氀搀愀搀攀

15

Compartilhamento de recursos entre execuções da função

Escopo de execução

F1 F1

F1 F1

1

2

F1 F1 F1

F1 F1 F1

F1 F1 F1

F1 F1

1

2

Apresentador
Notas de apresentação
Cada servidor compartilha memória (variáveis estáticas no ambiente global), podendo compartilhar a conexão com o banco de dados AWS: Compartilha em cada chamada subsequente AZURE: Compartilha com chamadas em paralelas e subsequentes
Page 16: Trilha – Serverless...2019/07/17  · Azure Functions AWS Lambda IBM Cloud Functions Normalmente a estrutura de criação é exclusiva do provedor de cloud\爀䐀椀昀椀挀甀氀搀愀搀攀

16

Estrutura focada para o provedor de cloud escolhido

Cloud Lock-In

GoogleCloud Functions

Azure Functions

AWS Lambda

IBM Cloud Functions

Apresentador
Notas de apresentação
Normalmente a estrutura de criação é exclusiva do provedor de cloud Dificuldade de portar entre as nuvens Alternativa: OpenFaaS
Page 17: Trilha – Serverless...2019/07/17  · Azure Functions AWS Lambda IBM Cloud Functions Normalmente a estrutura de criação é exclusiva do provedor de cloud\爀䐀椀昀椀挀甀氀搀愀搀攀

alexandresilva.devUm blog voltado para desenvolvimento de software em geral

linkedin.com/in/alexandresilvadev/