1
12 Factor APPS
Docker na Cloud
e outras buzzwords
uma viagem pelo mundo mágico do hipsterismo
OPA!
Sou Waldemar Neto
Development Team Lead - Atlassian
@waldemarnt - http://walde.co
2
3
http://bit.ly/nodejs-testave
l
youtube.com/user/waldemaneto
“ Cloud Computing Market
Projected To Reach $411B
By 2020
Forbes:
https://www.forbes.com/sites/louiscolumbus/2017/10/18/cloud-computing-market-projected-to-r
each-411b-by-2020/#23bf992a78f2
4
Crescimento do mercado de cloud
5
Do old school para a
cloud
6
7
APP
Cria um alerta de preço
Recebe notificação
de alteração de valor
Busca dados das
lojas virtuais
A aplicação old school
Arquitetura da aplicação
8
APLICAÇÃO
PAINEL DE CONFIGURAÇÃO
CRAWLING
ANÁLISE
NOTIFICAÇÃO
BANCO
Ambiente
9
TEST
STAGING
PROD
● Possui tres ambientes
● Possui testes
● Build e deploy é feito
manualmente
● Cada desenvolvedor instala e
configura na sua máquina
Ship com 12 Factor App
10
12 Factor app
11
Codebase Dependencies Config Backing Services
Build, Release,
Run
Processes Port Binding Concurrency
Disposability Dev/Prod Parity Logs
Admin
Processes
1
ambiente
Ambientes facilmente replicáveis são a
primeira coisa para habilitar conteinerização
12
13
APP
Ambiente homogeneos
12 Factor app
14
CODEBASE Dependencies Config Backing Services
Build, Release,
Run
Processes Port Binding Concurrency
Disposability Dev/Prod Parity Logs
Admin
Processes
Codebase Dependencies Config Backing Services
Port Binding
● 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
15
Docker no desenvolvimento
Sugestão de leitura
16
https://12factor.net/
https://leanpub.com/dockerparadesenvolvedores
2
Teste e Build
Testes e build automatizados
17
18
Continuous Integration
git push
BUILD TEST
Continuous Delivery é a habilidade
de colocar todas as mudanças como
novas funcionalidades,
configurações, bugfixes e
experimentos na mão do usuário
final. Rápido, seguro e de maneira
sustentável.
19
20
Continuous Delivery
git push
BUILD TEST
TEST
STAGI
NG
PROD
DEPLOY
20
manual
21
Continuous Deployment
git push
BUILD TEST
TEST
STAGI
NG
PROD
DEPLOY
21
22
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
3
Disparidade
de ambiente
Ambientes devem ser facilmente criados,
replicados e destruídos.
23
24
Feature x
TEST STAGING PROD
SERVER SERVER
SERVER 1 SERVER 2
SERVER 3 SERVER 4
Feature X - Disparidade entre ambientes/serviores
25
TEST STAGING PROD
SERVER SERVER
SERVER 1 SERVER 2
SERVER 3 SERVER 4
"A ideia em infraestrutura como
código é que os sistemas
utilizados para rodar softwares
sejam eles mesmos, tratados
como software."
Kief Morris, @kief
26
Infraestructura como código
27
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.
Infraestructura como código
28
4
Aumento de
demanda
Escalonamento.
29
30
Aumento de demanda
SERVIDOR
INTERNET
APLICAÇÃO
PAINEL DE CONFIGURAÇÃO
CRAWLING
ANÁLISE
NOTIFICAÇÃO
Aumento de demanda
31
SERVIDOR
INTERNET
APLICAÇÃO
PAINEL DE CONFIGURAÇÃO
CRAWLING
ANÁLISE
NOTIFICAÇÃO
Aumento de demanda
32
SERVIDOR 1
INTERNET
APLICAÇÃO
CRAWLING
ANÁLISE
NOTIFICAÇÃO
SERVIDOR 2
APLICAÇÃO
PAINEL DE CONFIGURAÇÃO
CRAWLING
ANÁLISE
NOTIFICAÇÃO
LOAD
BALANCER
PAINEL DE CONFIGURAÇÃO
CONGESTIONAMENTO
33
FIM DO MUNDO?
34
35
MICROSERVICES!!
36
Aplicação
APLICAÇÃO
PAINEL DE CONFIGURAÇÃO
CRAWLING
ANÁLISE
NOTIFICAÇÃO
BANCO
37
PAINEL DE
CONFIGURAÇÃO
CRAWLING
ANÁLISENOTIFICAÇÃO
Mysql
Mongo
38
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
Como fica a arquitetura
Livros
39
● http://shop.oreilly.com/product/0636920032175.do
● https://www.amazon.com/Building-Microservices-Designing-Fine-Grained-Systems/dp/1491
950358
5
Disparidade
dev/prod
Ambientes homogêneos é a primeira coisa
para habilitar a conteinerização.
40
DISPARIDADE
41
42
Dev/Prod
PRODDESENVOLVIMENTO
SERVER 1 SERVER 2
SERVER 3 SERVER 4
DOCKER DOCKER DOCKER
Dev/Prod
43
PRODDESENVOLVIMENTO
SERVER 1 SERVER 2
SERVER 3 SERVER 4
DOCKER DOCKER DOCKER
DOCKER DOCKER
DOCKER DOCKER
Dev/Prod
Parity
44
Containers em prod
45
Infraestrutura containerizada
TRADICIONAL
HOST
APP APP
CONTAINERIZADO
HOST
ORQUESTRADO
HOST
Orquestração com kubernetes
46
NODE 3
HOST
NODE 1
HOST
NODE 2
HOST
6
Monitoramento
Os logs devem ser centralizados e coletados
de todos os serviços de forma simples.
47
48
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
Monitoring
CENTRALIZAÇÃO DE
LOGS
49
Escrevendo logs nos nodes
50
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
51
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
52
Dica de livro
53
54
“É um fato bem conhecido
que todos os que querem
governar as outras pessoas
são, por isso mesmo, os
menos indicados para
isso.”
Douglas Adams
55
56
Perguntas?
http://walde.co
Me ache nas redes por @waldemarnt

12 Factor App Docker na Cloud e outras buzzwords