Você está na página 1de 55

Em direção a um framework

Serverless para Docker Swarm
-
sl-handler

Aluno: Ricardo Robson Mendes da
Silva
Orientador: Vinicius Cardoso Garcia
Serverless
Uma implementação de Function as a Service

● Regra de negócio é escrita pelo desenvolvedor
● Gerenciado pelos provedores
● Event driven
● Efêmero *
● Stateless *
* Essas características estão sendo questionadas
Serverless
- É escrito pelo desenvolvedor
Serverless
- É escrito pelo desenvolvedor
Serverless
- Totalmente gerenciados por terceiros
Serverless
- Totalmente gerenciados por terceiros
Serverless
- Totalmente gerenciados por terceiros
Serverless
- Totalmente gerenciados por terceiros
Serverless
- Totalmente gerenciados por terceiros
Serverless
- Totalmente gerenciados por terceiros
Serverless
- Event-driven
Serverless
- Event-driven

?
Serverless
- Event-driven

?
Serverless
- Event-driven, Efêmero e Stateless

?
Serverless
- Event-driven, Efêmero e Stateless

?
Serverless
- Event-driven, Efêmero e Stateless

?
Serverless
- Event-driven, Efêmero e Stateless

?
Serverless
- Event-driven, Efêmero e Stateless
sl-handler

Ferramenta para prover
serverless em Docker Swarm
sl-handler - características

● Escrita em Go
● Proposta para rodar com o Docker
● Adere fortemente aos princípios de serverless:
○ Stateless: isola cada requisição em uma instância serverless
distinta
○ Efêmero: inicia o container, executa a requisição e deleta o
container para cada requisição
○ Event driven: associa cada serverless a uma rota HTTP
○ O sl-handler gerencia as funções e as execuções dos serverless
sl-handler - arquitetura

● Main - HTTP Server
○ API para implantação
○ Chamada aos serverless
● Docker Client
○ Gerenciar imagens Docker
○ Gerenciar containers Docker
● Function Manager
○ CRUD das funções
● Logger
○ Medidas de execuções e desempenhos
sl-handler - arquitetura
Docker Daemon
(HTTP Server)
sl-handler
Docker Client

Main Function Manager
Client
(HTTP Server)
Docker Swarm

Serverless Function

Logger
Database Serverless Function
sl-handler - arquitetura
Docker Daemon Docker Swarm
(HTTP Server)

sl-handler
Docker Client
Serverless Function

Main
Client
(HTTP Server) Serverless Function
Function Manager

Logger Database
sl-handler - fluxo de uso
Docker Daemon Docker Swarm
(HTTP Server)

sl-handler
Docker Client

Main
(HTTP Server)
Function Manager

Logger Database
sl-handler - fluxo de uso
Docker Daemon Docker Swarm
(HTTP Server)

sl-handler
Docker Client

Main
(HTTP Server)
Function Manager

Logger Database
sl-handler - fluxo de uso
Docker Daemon Docker Swarm
(HTTP Server)

sl-handler
Docker Client

Main
(HTTP Server)
Function Manager

Logger Database
sl-handler - fluxo de uso
Docker Daemon Docker Swarm
(HTTP Server)

sl-handler
Docker Client

Main
(HTTP Server)
Function Manager

Logger Database
sl-handler - fluxo de uso
Docker Daemon Docker Swarm
(HTTP Server)

sl-handler
Docker Client

Main
(HTTP Server)
Function Manager

Logger Database
sl-handler - fluxo de uso
Docker Daemon Docker Swarm
(HTTP Server)

sl-handler
Docker Client

Main
(HTTP Server)
Function Manager

Logger Database
sl-handler - fluxo de uso
Docker Daemon Docker Swarm
(HTTP Server)

sl-handler
Docker Client

Main
(HTTP Server)
Function Manager

Logger Database
sl-handler - fluxo de uso
Docker Daemon Docker Swarm
(HTTP Server)

sl-handler
Docker Client

Main
(HTTP Server)
Function Manager

Logger Database
sl-handler - fluxo de uso
Docker Daemon Docker Swarm
(HTTP Server)

sl-handler
Docker Client

Main
(HTTP Server)
Function Manager

Logger Database
sl-handler - fluxo de uso
Docker Daemon Docker Swarm
(HTTP Server)

sl-handler
Docker Client

Main
(HTTP Server)
Function Manager

Logger Database
sl-handler - fluxo de uso
Docker Daemon Docker Swarm
(HTTP Server)

sl-handler
? Docker Client

Main
(HTTP Server)
Function Manager

Logger Database
sl-handler - fluxo de uso
Docker Daemon Docker Swarm
(HTTP Server)

sl-handler
? Docker Client

Main
(HTTP Server)
Function Manager

Logger Database
sl-handler - fluxo de uso
Docker Daemon Docker Swarm
(HTTP Server)

sl-handler
? Docker Client

Main
(HTTP Server)
Function Manager

Logger Database
sl-handler - fluxo de uso
Docker Daemon Docker Swarm
(HTTP Server)

sl-handler
? Docker Client

Main
(HTTP Server)
Function Manager

Logger Database
sl-handler - fluxo de uso
Docker Daemon Docker Swarm
(HTTP Server)

sl-handler
? Docker Client

Main
(HTTP Server)
Function Manager

Logger Database
sl-handler - fluxo de uso
Docker Daemon Docker Swarm
(HTTP Server)

sl-handler
? Docker Client

Main
(HTTP Server)
Function Manager

Logger Database
sl-handler - fluxo de uso
Docker Daemon Docker Swarm
(HTTP Server)

sl-handler
Docker Client

Main
(HTTP Server)
Function Manager

Logger Database
Análise

sl-handler vs principais provedores
Principais provedores serverless
Análise: sl-handler vs principais provedores

● Aderência aos princípios de serverless
● Desempenho (tempo de resposta do serverless)
○ Hello world, Fibonacci e Matriz
○ Requisições sequenciais
○ Requisições simultâneas (10% em paralelo)
Análise: sl-handler vs principais provedores
- Aderência aos princípios de serverless

AWS Lambda Azure Google Cloud sl-handler
Functions Functions

Event-Driven SIM SIM SIM SIM

Efêmero SIM* SIM* SIM* SIM

Stateless NÃO** NÃO** NÃO** SIM

* O sl-handler é efêmero para cada requisição enquanto os
principais
provedores têm estratégias próprias para gerir as instâncias das
funções
** Faz parte da estratégia do provedor para garantir a alta
Análise: sl-handler vs principais provedores
- Desempenho: Requisições sequenciais
Análise: sl-handler vs principais provedores
- Desempenho: Requisições sequenciais

Hello World 1 requisição 10 100 1000
requisições requisições requisições
AWS Lambda Tempo total 1,234 s 5,746 s 47,734 s 499,281 s
Azure Functions Tempo total 6,891 s 9.469 s 76,681 s 768,292 s
Google Cloud Tempo total
Functions
3.351 s 5,194 s 48,532 s 479,866 s

sl-handler Tempo total 3,516 s 30,718 s 359,878 s 3472,477 s
Análise: sl-handler vs principais provedores
- Desempenho: Requisições simultâneas
Análise: sl-handler vs principais provedores
- Desempenho: Requisições simultâneas
Fibonnaci(25) 10 requisições com 2 100 requisições com 1000 requisições
concorrentes 10 concorrentes com 100
concorrentes
AWS Lambda Falhas 0 0 0

Tempo total 2.637 s 5.328 s 5,956 s

Azure Functions Falhas 0 0 0

Tempo total 4.377 s 8.574 s 8.797 s

Google Cloud Falhas 0 0 0
Functions
Tempo total 2.457 s 5.092 s 7.367 s

sl-handler Falhas 0 3 22

Tempo total 27,443 s 238,396 s 2640,342 s
Análise: sl-handler vs principais provedores
- Desempenho: Requisições simultâneas
Análise: sl-handler vs principais provedores
- Desempenho: Requisições simultâneas
Matriz(5) 10 requisições com 2 100 requisições com 1000 requisições
concorrentes 10 concorrentes com 100
concorrentes

AWS Falhas 0 0 0
Lambda
Tempo total 2,558 s 5,306 s 5,718 s

Azure Falhas 0 0 0
Functions
Tempo total 4,196 s 8,954 s 8,940 s

Google Falhas 0 0 0
Cloud
Functions Tempo total 2,492 s 4,873 s 6,802 s

sl-handler Falhas 0 5 9

Tempo total 27,769 s 248,138 s 2653,280 s
Conclusão/entrega
e trabalhos futuros

O que foi feito e o que será feito
Conclusão/entrega

● Comparação entre provedores
● Provedor serverless para Docker Swarm aderente aos
princípios, porém extensível
● Código fácil de portar entre os principais provedores
● Fácil implantação
● Ferramenta fácil de portar entre modelos de modelos de
implantação de Cloud Computing (pública, privada e híbrida)
● Um passo em direção a um framework serverless para o
Docker Swarm
Trabalhos futuros

● Implementar estratégia para reutilizar os containers
serverless instanciados
● Alterar o módulo Docker Client do sl-handler para utilizar
outra forma de comunicação com o Docker-engine, que
atualmente usa a API HTTP do Docker
● Implementar Dashboard para acompanhar o consumo de
recursos do sl-handler e dos Serverless
● Investigar as falhas encontradas nas requisições dos
experimentos no sl-handler
Obrigado

À todos que contribuíram com este trabalho
e com minha jornada na graduação.
Graças a vocês tudo isso foi divertido.
Em direção a um framework
Serverless para Docker Swarm
-
sl-handler

Aluno: Ricardo Robson Mendes da
Silva
Orientador: Vinicius Cardoso Garcia