Blue Green Deployment com Docker

296 visualizações

Publicada em

Blue-Green Deployment é uma técnica robusta e segura, que consiste em manter dois ambientes de produção identicos rodando em paralelo (blue e green), alternando o tráfego entre eles, conforme a necessidade. Esta abordagem permite uma redução no downtime durante o deploy, com a segurança de rollback no caso de falhas, mas exige mais máquinas e um complexo sistema de orquestração. Nesta palestra, é demonstrado como realizar deploys sem downtime através do Docker, que torna o processo incrivelmente fácil e simplificado.

Publicada em: Tecnologia
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
296
No SlideShare
0
A partir de incorporações
0
Número de incorporações
155
Ações
Compartilhamentos
0
Downloads
2
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Blue Green Deployment com Docker

  1. 1. BLUE GREEN DEPLOYMENT COM DOCKER
  2. 2. PEDRO CAVALHEIRO Desenvolvedor 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
  3. 3. BLUE GREEN WHAT?
  4. 4. 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
  5. 5. BLUE GREEN DEPLOYMENT Mais informações em martinfowler.com/bliki/BlueGreenDeployment.html
  6. 6. ▸ Migrando aplicação para AWS ▸ Busca por deploy rápido e simples ▸ Docker se tornando popular CONTEXTO
  7. 7. 1. ELB + EC2 + DOCKER Use aquilo que já existe!
  8. 8. ELB + EC2 + DOCKER
  9. 9. ▸ 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
  10. 10. 2. ROUTER + DOCKER Adapte o que já existe!
  11. 11. ROUTER + DOCKER
  12. 12. ROUTER + DOCKER
  13. 13. ROUTER + DOCKER ▸ HAProxy ▸ Nginx Plus ▸ Node.js ▸ Consul ▸ Docker Swarm
  14. 14. ROUTER + DOCKER ▸ HAProxy ▸ Nginx Plus ▸ Node.js ▸ Consul ▸ Docker Swarm ▸ Nginx + Lua
  15. 15. ROUTER + DOCKER ▸ Container Router ▸ Container Aplicação Blue ▸ Container Aplicação Green ▸ Container Redis ▸ Docker Network
  16. 16. ROUTER + DOCKER ▸ Container Nginx ▹ OpenResty (Nginx + Lua) ▹ nginx.conf ▹ docker run -p 80:4000 --net=XXX -d router
  17. 17. ROUTER + DOCKER ▸ Container Aplicação Blue/Green ▹ (build) Clone, bundle, etc ▹ CMD update && run! ▹ docker run --net=XXX -d --name=app-green app
  18. 18. ROUTER + DOCKER ▸ Container Redis docker run -p 6379:6379 --name redis --net=XXX -d redis
  19. 19. 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/; }
  20. 20. BENCHMARKING Aplicação: github.com/pecavalheiro/proxy-comparison
  21. 21. 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 ▸ +
  22. 22. OBRIGADO! Dúvidas? Contato pecavalheiro.com Apps github.com/pecavalheiro/proxy-comparison

×