TDC2016 POA | Trilha DevOps - Blue-Green Deployment com Docker

25
BLUE GREEN DEPLOYMENT COM DOCKER

Transcript of TDC2016 POA | Trilha DevOps - Blue-Green Deployment com Docker

Page 1: TDC2016 POA | Trilha DevOps - Blue-Green Deployment com Docker

BLUE GREENDEPLOYMENTCOM DOCKER

Page 2: TDC2016 POA | Trilha DevOps - Blue-Green Deployment com Docker

PEDRO CAVALHEIRODesenvolvedor web desde 2010, entusiasta por tecnologia como um todo. Perfil startup-developer-problem-solver, adora estudar novas ferramentas, linguagens e metodologias. Atualmente no Me Salva!.

Infos em pecavalheiro.com

Page 3: TDC2016 POA | Trilha DevOps - Blue-Green Deployment com Docker

BLUE GREEN WHAT?

Page 4: TDC2016 POA | Trilha DevOps - Blue-Green Deployment com Docker

BLUE GREEN DEPLOYMENT

▸ Integração Contínua

▸ Minimiza Downtime

▸ Feedback rápido - Rollback imediato

▸ Orquestração complexa

Mais informações em martinfowler.com/bliki/BlueGreenDeployment.html

Page 5: TDC2016 POA | Trilha DevOps - Blue-Green Deployment com Docker

BLUE GREEN DEPLOYMENT

Mais informações em martinfowler.com/bliki/BlueGreenDeployment.html

Page 6: TDC2016 POA | Trilha DevOps - Blue-Green Deployment com Docker

▸ Migrando aplicação

para AWS

▸ Busca por deploy

rápido e simples

▸ Docker se tornando

popular

CONTEXTO

Page 7: TDC2016 POA | Trilha DevOps - Blue-Green Deployment com Docker
Page 8: TDC2016 POA | Trilha DevOps - Blue-Green Deployment com Docker

1.ELB + EC2 + DOCKER

Use aquilo que já existe!

Page 9: TDC2016 POA | Trilha DevOps - Blue-Green Deployment com Docker

ELB + EC2 + DOCKER

Page 10: TDC2016 POA | Trilha DevOps - Blue-Green Deployment com Docker

▸ Configuração mínima (API/Listeners)

▸ Baixa complexidade

▸ Baixo custo agregado (ELB)

▸ Te torna “refém” da solução

▸ Impossível replicar externamente

ELB + EC2 + DOCKER

Page 11: TDC2016 POA | Trilha DevOps - Blue-Green Deployment com Docker

2.ROUTER +DOCKER

Adapte o que já existe!

Page 12: TDC2016 POA | Trilha DevOps - Blue-Green Deployment com Docker

ROUTER + DOCKER

Page 13: TDC2016 POA | Trilha DevOps - Blue-Green Deployment com Docker

ROUTER + DOCKER

Page 14: TDC2016 POA | Trilha DevOps - Blue-Green Deployment com Docker
Page 15: TDC2016 POA | Trilha DevOps - Blue-Green Deployment com Docker

ROUTER + DOCKER

▸ HAProxy

▸ Nginx Plus

▸ Node.js

▸ Consul

▸ Docker Swarm

Page 16: TDC2016 POA | Trilha DevOps - Blue-Green Deployment com Docker

ROUTER + DOCKER

▸ HAProxy

▸ Nginx Plus

▸ Node.js

▸ Consul

▸ Docker Swarm

▸ Nginx + Lua

Page 17: TDC2016 POA | Trilha DevOps - Blue-Green Deployment com Docker

ROUTER + DOCKER

▸ Container Router

▸ Container Aplicação Blue

▸ Container Aplicação Green

▸ Container Redis

▸ Docker Network

Page 18: TDC2016 POA | Trilha DevOps - Blue-Green Deployment com Docker

ROUTER + DOCKER

▸ Container Nginx

▹ OpenResty (Nginx + Lua)

▹ nginx.conf

▹ docker run -p 80:4000 --net=XXX -d router

Page 19: TDC2016 POA | Trilha DevOps - Blue-Green Deployment com Docker

ROUTER + DOCKER

▸ Container Aplicação Blue/Green

▹ (build) Clone, bundle, etc

▹ CMD update && run!

▹ docker run --net=XXX -d --name=app-green app

Page 20: TDC2016 POA | Trilha DevOps - Blue-Green Deployment com Docker

ROUTER + DOCKER

▸ Container Redisdocker run -p 6379:6379 --name redis --net=XXX -d redis

Page 21: TDC2016 POA | Trilha DevOps - Blue-Green Deployment com Docker

NGINX + LUA ROUTING upstream green {

server app-green:4000;

}

upstream blue {

server app-blue:4000;

}

location / {

set $upstream "";

rewrite_by_lua '

local redis = require "redis" local client = redis.connect("redis", 6379) route = client:get("current_upstream") if route ~= nil then ngx.var.upstream = route else ngx.var.upstream = "green" end

'; proxy_pass http://$upstream/; }

Page 22: TDC2016 POA | Trilha DevOps - Blue-Green Deployment com Docker
Page 23: TDC2016 POA | Trilha DevOps - Blue-Green Deployment com Docker

BENCHMARKING

Aplicação: github.com/pecavalheiro/proxy-comparison

Page 24: TDC2016 POA | Trilha DevOps - Blue-Green Deployment com Docker

CONSIDERAÇÕES FINAIS

Menos é mais

Solução simples para problemas simples

Controle

Flexibilidade na definição de fluxo da aplicação com baixa perda de performance

Possibilidades

▸ Filtros▸ AB Testing▸ Docker Compose▸ +

Page 25: TDC2016 POA | Trilha DevOps - Blue-Green Deployment com Docker

OBRIGADO!Dúvidas?

Contato pecavalheiro.com

Apps github.com/pecavalheiro/proxy-comparison