Upgrade to Pro — share decks privately, control downloads, hide ads and more …

O canivete suiço DevOps

drequena
August 26, 2018

O canivete suiço DevOps

Uma análise crítica sobre a adoção de ferramentas DevOps na automatização de processos.
A talk tem o objetivo de auxiliar no processo de escolha do ferramental adequado para a automação, levando em consideração a maturidade das aplicações, processos e pessoas da organização.
Para ilustrar o processo de decisão, são apresentados 3 casos com diferentes necessidades de automação.

drequena

August 26, 2018
Tweet

More Decks by drequena

Other Decks in Technology

Transcript

  1. 2 Agenda + Whoami + Objetivos/Não Objetivos + DevOps +

    Escolhendo as ferramentas + Casos + Referências
  2. 3 Whoami Daniel Requena + Sysadmin há 12 anos (3

    anos de DevOps) + LPI-1/LPI-2 e Zabbix Specialist + Bacharel em CCP / Mestre em Eng. da Computação. + Barista Júnior.
  3. 4 Objetivos ◆ Lembrar os pontos principais da cultura DevOps

    ◆ Mostrar os fatores que influenciam no processo de escolha das ferramentas DevOps ◆ Auxiliar na escolha de ferramentas adequadas ◆ Passar experiência pessoal da adoção dessas ferramentas
  4. 5 Não Objetivos ◆ Ler a tabela periódica DevOps da

    XebiaLabs ◆ Detalhar todas as ferramentas comentadas ◆ Exaurir o tema
  5. 9 DevOPS ◆ Quem é Dev? ◆ Quem é OPS?

    ◆ Quem está adotando DevOps?
  6. 11 Escolhendo a ferramenta Problema: ◆ Um pneu furado Missão:

    ◆ Trocar o pneu usando as ferramentas mais adequadas
  7. 14 Escolhendo a ferramenta Problema: ◆ Quatro pneus furados Missão:

    ◆ Trocar os pneus usando as ferramentas mais adequadas
  8. 16 Escolhendo a ferramenta Problema: ◆ X pneus furados Missão:

    ◆ Trocar os pneus usando as ferramentas mais adequadas
  9. 18 Escolhendo ferramentas ➔ Qual foi basicamente a diferença? ◆

    Escala/Complexidade do problema ➔ Apesar disso... ◆ Ferramentas foram adequadas. • simples • funcionais • fácil manuseio Mas e se...
  10. 20 Escolhendo ferramentas ➔ Ambas “macacos” ➔ Executam a mesma

    função ◆ trocam pneus ➔ Porém, a última ◆ Mais moderna ◆ Mais potente ◆ Preparada para cenários mais complexos ➔ Qual o problema?
  11. 24 Escolhendo ferramentas Pré-cloud Cloud Aware Cloud Native ➔ Baremetal/Virt

    1º nível ➔ Escalabilidade vertical ➔ Monolítica ➔ Cliente/Servidor ➔ DB Central ➔ StandAlone ➔ Aplicação Web ➔ Monolítica ➔ Usa recursos do Cloud Provider ➔ Instrumentada ➔ Micro-serviços ➔ Distribuída ➔ Assíncronas ➔ Containers ➔ 12 factors SCM Configuration Management Server provisioner CI/CD Scripting Container Orchestrator Cloud Provisioners/Image Provisioners Monitoring
  12. 25 Escolhendo ferramentas ➔ Existem ferramentas que servem para todas

    as fases de maturidade ➔ É possível estar em todas as fases ao mesmo tempo ➔ Não há problema em pular fases (na verdade aconselhado) ➔ Nem sempre é preciso mudar uma aplicação ou processo.
  13. 27 Casos Disclaimer: ➔ Casos baseados em situações reais ➔

    Algumas ferramentas mencionadas têm alternativas. ➔ As soluções apresentadas são apenas uma das possíveis soluções ◆ Vamos conversar :)
  14. 29 Caso 1 Descrição: ➔ Infraestrutura baseada em servidores físicos

    (baremetal) ◆ um cliente por servidor ➔ Aplicação cliente/servidor ◆ empacotada em .deb ➔ Escalabilidade vertical ➔ Processos manuais. ◆ montagem ◆ instalação ◆ configuração ◆ monitoria ◆ setup da aplicação ◆ setup banco ◆ catálogo ➔ Principal dor ◆ Tempo para colocar um servidor no ar. (entre 2 e 4 dias)
  15. 30 Caso 1 Plano: ➔ Manual: ◆ Colocar Servidor no

    Rack, cabear e ligar ➔ Automático: ◆ Network Boot (PXE) ◆ Provisionar o SO no Baremetal ◆ Adicionar novo servidor ao catálogo ◆ Monitorar servidor ◆ Setup da aplicação ◆ Setup Banco de dados
  16. 31 Caso 1 PXE server (network boot) Provisionador SO Node

    classifier (Foreman) CM master server (Foreman) Gerenciamento de configuração. Receitas para instalação - Zabbix agent - Database - Application - Basic SO setup - Hardening - etc... SCM: Scripts, manifests, setup recipes. general automation monitoring HW inventory
  17. 33 Caso 2 Descrição: ➔ Infraestrutura de nuvem pública utilizada

    como IaaS ◆ Uso de LoadBalancer ➔ Aplicação monolítica ◆ Statefull em php ➔ Escalabilidade vertical ➔ Processos manuais. ◆ Build da aplicação (local Dev) ◆ Empacotamento ◆ Update da aplicação no cloud provider em QA (testes) ◆ Update da aplicação em Produção ➔ Principal dor ◆ Deploy/update da aplicação sem downtime de forma rápida e segura. Bônus, escalabilidade horizontal.
  18. 35 Caso 2 Plano: ➔ Manual: ◆ Commit de código

    ➔ Automático: ◆ Build/testes da aplicação. ◆ Empacotamento por ami ◆ Upgrade do ASG ◆ Registro no LoadBalancer
  19. 36 Caso 2 commit webhook git pull Test,Build,Package App Create

    AMI (Packer) Push to AWS Deploy with Terraform Deploy env: QA Deploy env: PROD Deploy Job
  20. 39 Caso 3 Descrição: ➔ Runtime em container Docker ➔

    Aplicação micro-serviços (API RestFull) ➔ Aplicação Stateless ➔ Processo automático: ◆ Testes, build e empacotamento aplicação ◆ Geração da Docker Image e push para Registry ◆ Execução da aplicação no Kubernetes ➔ Processo manual. ◆ Testes da nova versão ◆ Análise dos dados da nova versão ◆ Promoção para Produção ➔ Principal dor ◆ Gerar ambiente para “teste” de forma dinâmica, e promovê-lo de forma gradativa para produtivo caso passe nos requisitos de aceitação.
  21. 40 Caso 2 Node 1 Node 2 Node 3 Master

    v1 v1 v1 v1 v1 App v1 PODs v2 v2 v2 v2 v2 App v2 PODs
  22. 41 Caso3 Plano: ➔ Manual: ✓ Commit de código ➔

    Automático: ✓ Testes, build, empacotamento. ✓ Geração Docker Image ✓ Deploy Kubernetes (v2) ◆ Redirecionamento de x% do tráfego para v2 ◆ Análise de métricas de negócio e telemetria da API ◆ Aumento gradativo do redirecionamento do para v2 até 100%
  23. 44 Referências ❖ https://xebialabs.com/periodic-table-of-devops-tools/ ❖ https://www.theforeman.org/ ❖ https://puppet.com/ ❖ https://www.ansible.com/

    ❖ https://www.zabbix.com/ ❖ https://git-scm.com/ ❖ https://www.packer.io/ ❖ https://jenkins.io/ ❖ https://www.docker.com/ ❖ https://istio.io ❖ https://prometheus.io/ ❖ https://grafana.com/ ❖ https://helm.sh/ ❖ https://www.rundeck.com/ ❖ https://www.terraform ❖ http://cobbler.github.io/ ❖ https://www.amazon.com/Infrastructure-Code-Managing-Servers-Cloud/dp/1491924357 ❖ https://speakerdeck.com/drequena/