Na minha máquina funciona...e no servidor também

Na minha máquina funciona...e no servidor também

Se você já sofreu com deploy, esta apresentação é pra você. Nosso público-alvo são os desenvolvedores que gostam de fazer as coisas só uma vez.
Imagine um mundo em que você pode desenvolver sua aplicação diretamente no servidor, testando tudo em produção. E quando finalmente a coisa funcionar, você não tenha que se preocupar em jogar tudo em outra máquina, correndo o risco de emperrar o deploy por causa de alguma configuração diferente.
Este mundo existe no universo dos containers.

Mostramos como unificar as configurações do servidor e da máquina de desenvolvimento usando Docker e Docker Compose, para que todas as dependências de bibliotecas, ferramentas de linha de comando e até mesmo versões e distribuições do sistema operacional sejam exatamente as mesmas. Diga adeus ao deploy Kinder Ovo, que sempre vem com surpresa.

Tudo que dissermos neste tutorial pode e será usado a seu favor quando for usar Kubernetes.

B82b1da7a58dcf37c8f0461c5c08ec0a?s=128

Ricardo Coelho

August 21, 2020
Tweet

Transcript

  1. Na minha máquina funciona… ...e no servidor também Ricardo Coelho

    @ramcoelho 21 AGO 2020
  2. None
  3. Na minha máquina funciona… ...e no servidor também Ricardo Coelho

    @ramcoelho 21 AGO 2020
  4. Na minha empresa...

  5. Heterogeneidade

  6. None
  7. None
  8. Virtualização

  9. fonte: www.upguard.com/blog/docker-vs-vmware-how-do-they-stack-up

  10. Docker

  11. MacOS ou Windows

  12. Multipass

  13. Multipass https://multipass.run/

  14. None
  15. bit.do/instdocker

  16. None
  17. fonte: devopedia.org/docker

  18. CNCF Landscape

  19. landscape.cncf.io

  20. landscape.cncf.io

  21. Docker Compose

  22. docker-compose.yml

  23. docker-compose.yml

  24. Dockerfile

  25. Case

  26. Modelo Legado: Apache + vHosts

  27. Apache + vHosts (dificuldades) • Configuração centralizada • Manutenção de

    uma aplicação implica em downtime de todas • Uso de múltiplas versões de PHP requer configurações complexas • Erro na configuração de um vHost impede a execução de todos • Atualizações do ambiente afetam todas as aplicações, resultando em quebras não planejadas ou atraso na aplicação de patches de segurança
  28. Fase 1 - Containers Apache + PHP

  29. docker-compose.yml

  30. Prós • Resolve todos os problemas do modelo vHost Contras

    • Modelo extremamente custoso em termos de memória e processador • Monitoramento dos logs é complexo • Gestão de certificados SSL é administrativamente custosa Containers Apache + PHP (avaliação)
  31. Fase 2 - Containers Nginx + PHP-FPM Gestão via Portainer

  32. docker-compose.yml

  33. None
  34. fonte: help.dreamhost.com/hc/en-us/articles/215945987-Web-server-performance-comparison

  35. fonte: help.dreamhost.com/hc/en-us/articles/215945987-Web-server-performance-comparison

  36. Prós • Resolve todos os problemas do modelo vHost •

    Melhora sensivelmente o uso de memória e processador • Portainer resolve o problema do monitoramento Contras • Migração Apache → Nginx tem curva íngreme • Gestão de certificados SSL ainda é administrativamente custosa Containers Nginx + PHP-FPM (avaliação)
  37. Fase 3 - Reverse Proxy(ies)

  38. Prós • Todos os benefícios anteriores • Resolve a gestão

    de certificados SSL Contras • Demanda redundância de proxies reversos para evitar ponto único de falhas Reverse Proxy (avaliação)
  39. None
  40. Na prática

  41. github.com/ramcoelho/docker-stack-skel

  42. O que vem depois

  43. Profissionalizar • Build Automation (colocar o fonte dentro da imagem)

    • Esteira CI/CD com Container(s) Jenkins Crescer • Docker Swarm para fugir das Stacks isoladas • Kubernetes para atender modelos ainda mais complexos, como ambientes vendor agnostic ou multicloud Escalar • Rancher / OpenShift
  44. Obrigado! Perguntas?