Slide 1

Slide 1 text

Serverless com OpenFaaS e PHP @FernandoDebrand

Slide 2

Slide 2 text

Sobre mim! Fernando Silva Software Developer Analyst @FernandoDebrand

Slide 3

Slide 3 text

Visão Geral ● Serverless ● BaaS - Backend as a Service ● FaaS - Functions as a Service ● OpenFaaS ● PHP, Serverless e OpenFaaS

Slide 4

Slide 4 text

Serverless

Slide 5

Slide 5 text

O que é Serverless? As arquiteturas sem servidor (serverless) são projetos de aplicações que incorporam serviços “Backend as a Service” (BaaS) de terceiros e/ou que incluem execução de código personalizado em contêineres efêmeros gerenciados em uma plataforma “Functions as a Service” (FaaS).

Slide 6

Slide 6 text

O que é Serverless? ● 2017, o Gartner adicionou o serverless ao seu “Hype Cycle of Emerging Technologies”, refletindo a explosão de interesse em Function as a Service (FaaS). O Gartner categoriza serverless como estando na fase inicial do ciclo, "innovation trigger".

Slide 7

Slide 7 text

A evolução até o Serverless

Slide 8

Slide 8 text

Menos responsabilidades

Slide 9

Slide 9 text

Menos responsabilidades Infrastructure as a Service

Slide 10

Slide 10 text

Menos responsabilidades Infrastructure as a Service Platform as a Service

Slide 11

Slide 11 text

Menos responsabilidades Infrastructure as a Service Platform as a Service Serverless computing

Slide 12

Slide 12 text

Menos responsabilidades Infrastructure as a Service Platform as a Service Serverless computing Software as a Service

Slide 13

Slide 13 text

Panorama Serverless

Slide 14

Slide 14 text

BaaS - Backend as a Service

Slide 15

Slide 15 text

O que é BaaS? Backend-as-a-service (BaaS) é um serviço de computação em nuvem que serve como middleware. O mesmo fornece aos desenvolvedores uma forma para conectar suas aplicações mobile e web a serviços na nuvem a partir de APIs e SDKs.

Slide 16

Slide 16 text

FaaS - Functions as a Service

Slide 17

Slide 17 text

O que é FaaS? A FaaS pertence a uma categoria de CCS (Cloud Computing Services), que fornece uma plataforma para os clientes desenvolverem, executarem e gerenciarem aplicações. Fazê-lo sem a complexa manutenção e construção de infra-estrutura que geralmente é associada ao desenvolvimento e ao lançamento de um aplicativo.

Slide 18

Slide 18 text

O que é FaaS? É um conceito relativamente novo que foi disponibilizado pela primeira vez em 2014 pela hook.io e agora é implementado em serviços como o AWS Lambda, o Google Cloud Functions, o IBM OpenWhisk e o Microsoft Azure Functions.

Slide 19

Slide 19 text

Serverless Functions Made Simple for Docker and Kubernetes

Slide 20

Slide 20 text

O que é OpenFaaS? O OpenFaaS é uma estrutura para criar funções serverless em contêineres (com o Docker e o Kubernetes). Ele fornece uma funcionalidade integrada, com infraestrutura de auto-recuperação, dimensionamento automático e a capacidade de controlar todos os aspectos do cluster.

Slide 21

Slide 21 text

O que é OpenFaaS?

Slide 22

Slide 22 text

API Gateway O API Gateway fornece uma rota externa para suas funções e coleta métricas do Native Cloud por meio do Prometheus. Seu API gateway escalará as funções de acordo com a demanda, alterando a contagem de réplicas de serviço no Docker Swarm ou na API do Kubernetes. Uma interface do usuário é preparada para permitir que você invoque funções em seu navegador e crie novas, conforme necessário.

Slide 23

Slide 23 text

API Gateway

Slide 24

Slide 24 text

Function Watchdog Você pode transformar qualquer imagem do Docker em uma função serverless, adicionando o Function Watchdog (um minúsculo servidor HTTP Golang). O Watchdog é o ponto de entrada que permite que as solicitações HTTP sejam encaminhadas para o processo de destino via STDIN. A resposta é enviada de volta ao requisitor escrevendo para STDOUT a partir da sua aplicação.

Slide 25

Slide 25 text

Function Watchdog

Slide 26

Slide 26 text

Prometheus / Grafana O prometheus é utilizado para monitorar os serviços, para o escalonamento automático e mostrando o dimensionamento automático ao vivo em ação.

Slide 27

Slide 27 text

Prometheus / Grafana

Slide 28

Slide 28 text

Prometheus / Grafana

Slide 29

Slide 29 text

Docker Docker é uma plataforma Open Source que permite criar, executar, testar e implantar aplicações distribuídas dentro de containers.

Slide 30

Slide 30 text

Docker Engine

Slide 31

Slide 31 text

Docker Swarm O Docker Swarm é uma ferramenta nativa do Docker que permite a criação de clusters de Docker, ou seja, podemos fazer com que diversos hosts de Docker estejam dentro do mesmo pool de recursos, facilitando assim o deploy de containers.

Slide 32

Slide 32 text

Docker Swarm

Slide 33

Slide 33 text

OpenFaaS CLI Qualquer container ou processo em um container Docker pode ser uma função serverless no FaaS. Usando a FaaS CLI, você pode implantar suas funções ou criar rapidamente novas funções a partir de modelos como o Node.js, Python, PHP...

Slide 34

Slide 34 text

OpenFaaS CLI

Slide 35

Slide 35 text

Configurando o OpenFaaS Supondo que você já tenha o Docker instalado, a primeira coisa que você precisa fazer é inicializar o Docker Swarm e implantar a stack do OpenFaaS.

Slide 36

Slide 36 text

Configurando o OpenFaaS Instale a stack do OpenFaaS clonando o repositório do github e executando o script de implementação.

Slide 37

Slide 37 text

Configurando o OpenFaaS Instalar a estrutura cli do OpenFaaS (faas-cli) que permite construir, implementar e invocar suas próprias funções facilmente a partir da linha de comando.

Slide 38

Slide 38 text

Configurando o OpenFaaS

Slide 39

Slide 39 text

OpenFaaS UI: http://127.0.0.1:8080

Slide 40

Slide 40 text

Demonstração

Slide 41

Slide 41 text

PHP, Serverless e OpenFaaS Construindo e implementando uma função PHP no OpenFaaS

Slide 42

Slide 42 text

Instale o modelo PHP do OpenFaaS

Slide 43

Slide 43 text

Criando nossa primeira função PHP Um novo arquivo func-ping-php.yml e a pasta (func-ping-php) da função será criada.

Slide 44

Slide 44 text

Dentro de ./func-ping-php há um diretório src que contém uma classe Handler.php.

Slide 45

Slide 45 text

Construindo a função Isso criará o container docker que executará nossa função.

Slide 46

Slide 46 text

Implantando a função

Slide 47

Slide 47 text

Implantando a função

Slide 48

Slide 48 text

Demonstração

Slide 49

Slide 49 text

Referências ● https://www.openfaas.com ● https://medium.com/@FernandoDebrand/serverless- com-openfaas-e-php-3dce499f8062 ● https://dzone.com/articles/a-short-introduction-to-ser verless-architecture ● https://landscape.cncf.io/format=serverless&grouping =landscape&landscape=serverless ● https://github.com/openfaas/workshop

Slide 50

Slide 50 text

OBRIGADO! fernando.poa.br speakerdeck.com/fernandodebrando Perguntas? VENHA FAZER PARTE DO NOSSO TIME king.host/talentos