1
12 Factor APPS
Docker na Cloud
e outras buzzwords
uma viagem pelo mundo mágico do hipsterismo
Sobre nós
2
Fernando Ruaro
github.com/fernandoruaro
Waldemar Neto
@waldemarnt
http://walde.co
http://bit.ly/nodejs-testavel
Meltwater
Empresa norueguesa com sede em San
Francisco, CA
Líder mundial em inteligência de
mídia
+24k clientes
+1.6k funcionários
3
Meltwater - Executive Alerts
Coleta dados de diferentes fontes
twitter, instagram, facebook, news,
ad spending, job posts
Processa mais de 100 milhões de
atividades diariamente
Analisa os dados e gera alertas em
tempo real para os usuários
4
Crawlers
Arquitetura - Executive Alerts
Twitter
Instagram
Facebook
News
Ad Spending
Job Posts
Internet
API
Internet
Pipeline de
Processamento
Internet
5
Aplicação Old School
6
Como funciona a aplicação
APP
Cria um alerta de preço
Recebe notificação de
alteração de valor
Busca dados das
lojas virtuais
7
Arquitetura
APLICAÇÃO
PAINEL DE CONFIGURAÇÃO
CRAWLING
ANÁLISE
NOTIFICAÇÃO
BANCO
8
Ambiente
● Possui três ambientes
● Possui testes
● Build e deploy é feito manualmente
● Cada desenvolvedor instala e configura na
sua máquina
TEST
STAGING
PROD
9
Replicação de ambiente
10
Ambientes homogêneos
APP
11
O que é necessário para uma aplicação ser containerizavel?
CODEBASE Dependencies Config Backing Services
Build, Release,
Run
Processes Port Binding Concurrency
Disposability Dev/Prod Parity Logs Admin Processes
12 Factor APPs
CODEBASE Dependencies Config Backing Services
Port Binding
12
Docker no desenvolvimento
● Codebase
○ Cada aplicação possui seu próprio codebase com controle de versão (ex
git, mercurial)
● Dependencies
○ Dependências explícitas e isoladas (ex: npm, maven, composer)
● Config
○ Guardar a configuração no ambiente (ex: credenciais, urls de
serviços)
● Backing Services
○ Tratar serviços como recursos anexados
● Port Binding
○ Expor serviços via porta
13
Sugestões de leitura
https://12factor.net/
https://leanpub.com/dockerparadesenvolvedores
14
Testes e build são feitos pelos desenvolvedores
15
Integração Contínua / Continuous Integration
git push
BUILD TEST
16
Deployment é manual
17
Entrega contínua / Continuous Delivery
git push
BUILD TEST
TEST
STAGIN
G
PROD
DEPLOY
18
manual
Deploy contínuo / Continuous Deployment
git push
BUILD TEST
TEST
STAGIN
G
PROD
DEPLOY
19
Sugestões de livros
● https://www.amazon.com/Continuous-Integration-Improving-Software-Reducing/dp/0321336380
● https://www.amazon.com/Phoenix-Project-DevOps-Helping-Business/dp/0988262592
● https://www.amazon.com/DevOps-Handbook-World-Class-Reliability-Organizations/dp/1942788002
20
Aumento da demanda
21
SERVIDOR
Aumento da demanda
Internet
APLICAÇÃO
PAINEL DE CONFIGURAÇÃO
CRAWLING
ANÁLISE
NOTIFICAÇÃO
22
SERVIDOR
Aumento da demanda
Internet
APLICAÇÃO
PAINEL DE CONFIGURAÇÃO
CRAWLING
ANÁLISE
NOTIFICAÇÃO
23
SERVIDOR 1Escalar a aplicação
Internet
APLICAÇÃO
PAINEL DE CONFIGURAÇÃO
CRAWLING
ANÁLISE
NOTIFICAÇÃO
SERVIDOR 2
APLICAÇÃO
PAINEL DE CONFIGURAÇÃO
CRAWLING
ANÁLISE
NOTIFICAÇÃO
Load Balancer
24
Alguns dos módulos consomem muito mais
recursos que outros, impactando nos custos e
gestão das máquinas.
25
Aplicação
APLICAÇÃO
PAINEL DE CONFIGURAÇÃO
CRAWLING
ANÁLISE
NOTIFICAÇÃO
BANCO
26
MICROSERVIÇOS!!!
27
PAINEL DE
CONFIGURAÇÃO
CRAWLING
ANÁLISE
NOTIFICAÇÃO
Arquitetura de micro serviços
Mysql
Mongo
28
Como fica a arquitetura
PAINEL
Load
Bala
ncer
PAINEL
NOTIFICAÇ
ÃO
NOTIFICAÇ
ÃO
NOTIFICAÇ
ÃO
NOTIFICAÇ
ÃO
CRAWLER
CRAWLER CRAWLER
CRAWLER CRAWLER
ANÁLISE
ANÁLISE
ANÁLISE
Disposability
29
Livros
● http://shop.oreilly.com/product/0636920032175.do
● https://www.amazon.com/Building-Microservices-Designing-Fine-Grained-Systems/dp/1491950358
30
Disparidade nas Implantações
31
Feature X
TEST STAGING PROD
SERVER SERVER
SERVER 1 SERVER 2
SERVER 3 SERVER 4
32
Feature X - Disparidade entre ambientes/servidores
TEST STAGING PROD
SERVER SERVER
SERVER 1 SERVER 2
SERVER 3 SERVER 4
33
Infraestrutura como código
TEST STAGING PROD
SERVER SERVER
SERVER 1 SERVER 2
SERVER 3 SERVER 4
Especificação via DSL/Script do que deve estar
instalado em cada servidor
34
Infraestrutura como código
35
Disparidade entre DEV e PROD
36
PRODDesenvolvimento
Disparidade entre desenvolvimento e produção
SERVER 1 SERVER 2
SERVER 3 SERVER 4
DOCKER DOCKER DOCKER
37
PRODDesenvolvimento
Disparidade entre desenvolvimento e produção
SERVER 1 SERVER 2
SERVER 3 SERVER 4
DOCKER DOCKER DOCKER
38
DOCKER DOCKER
DOCKER DOCKER
Dev/Prod
Parity
Orquestração de Containers
MINION MINIONMINION
MASTER
ETCD
API SERVER
CONTROLLER MANAGER
SCHEDULER
DOCKER
KUBE-PROXY
KUBELET
39
Monitoramento
40
Monitoramento
PAINEL
PAINEL
NOTIFICAÇ
ÃO
NOTIFICAÇ
ÃO
NOTIFICAÇ
ÃO
NOTIFICAÇ
ÃO
CRAWLER
CRAWLER
CRAWLER
CRAWLER
CRAWLER
ANÁLISE
ANÁLISE
ANÁLISE
Node 1 Node 2
Node 3Node 4
41
Escrever logs nos Nodes
PAINEL
PAINEL
NOTIFICAÇ
ÃO
NOTIFICAÇ
ÃO
NOTIFICAÇ
ÃO
NOTIFICAÇ
ÃO
CRAWLER
CRAWLER
CRAWLER
CRAWLER
CRAWLER
ANÁLISE
ANÁLISE
ANÁLISE
Node 1
Node 2
Node 3Node 4
42
Centralizar logs
PAINEL
PAINEL
NOTIFICAÇ
ÃO
NOTIFICAÇ
ÃO
NOTIFICAÇ
ÃO
NOTIFICAÇ
ÃO
CRAWLER
CRAWLER
CRAWLER
CRAWLER
CRAWLER
ANÁLISE
ANÁLISE
ANÁLISE
Node 1
Node 2
Node 3Node 4
LOG SERVER
Logs
43
Ferramentas de logs conhecidas
● Elasticsearch
● Fluentd
● Logstash
● Kibana
● Graphana
● Graphite
● Greylog
● New Relic
● Data dog
44
Livros
● https://artofmonitoring.com/
45
46
Perguntas?
47

12 Factor APPS, docker na cloud e outras buzzwords