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. O canivete suíço
    DevOps

    View Slide

  2. 2
    Agenda
    + Whoami
    + Objetivos/Não Objetivos
    + DevOps
    + Escolhendo as ferramentas
    + Casos
    + Referências

    View Slide

  3. 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.

    View Slide

  4. 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

    View Slide

  5. 5
    Não Objetivos
    ◆ Ler a tabela periódica DevOps da XebiaLabs
    ◆ Detalhar todas as ferramentas comentadas
    ◆ Exaurir o tema

    View Slide

  6. 6
    Não Objetivos
    https://xebialabs.com/periodic-table-of-devops-tools/

    View Slide

  7. DevOps

    View Slide

  8. 8
    DevOPS
    C
    A
    L
    M
    S

    View Slide

  9. 9
    DevOPS
    ◆ Quem é Dev?
    ◆ Quem é OPS?
    ◆ Quem está adotando DevOps?

    View Slide

  10. Escolhendo ferramentas

    View Slide

  11. 11
    Escolhendo a ferramenta
    Problema:
    ◆ Um pneu furado
    Missão:
    ◆ Trocar o pneu usando as
    ferramentas mais adequadas

    View Slide

  12. 12
    Escolhendo ferramentas

    View Slide

  13. 13
    Escolhendo a ferramenta
    Problema:
    ◆ Um pneu furado

    View Slide

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

    View Slide

  15. 15
    Escolhendo ferramentas

    View Slide

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

    View Slide

  17. 17
    Escolhendo ferramentas

    View Slide

  18. 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...

    View Slide

  19. 19
    Escolhendo ferramentas

    View Slide

  20. 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?

    View Slide

  21. 21
    Escolhendo ferramentas
    ➔ O produto
    ➔ O processo
    ➔ As pessoas

    View Slide

  22. Mas para TI?

    View Slide

  23. 23
    Escolhendo ferramentas

    View Slide

  24. 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

    View Slide

  25. 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.

    View Slide

  26. Casos

    View Slide

  27. 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 :)

    View Slide

  28. Caso 1

    View Slide

  29. 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)

    View Slide

  30. 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

    View Slide

  31. 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

    View Slide

  32. Caso 2

    View Slide

  33. 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.

    View Slide

  34. 34
    Caso 2

    View Slide

  35. 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

    View Slide

  36. 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

    View Slide

  37. 37
    Caso 2

    View Slide

  38. Caso 3

    View Slide

  39. 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.

    View Slide

  40. 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

    View Slide

  41. 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%

    View Slide

  42. 42
    Caso3
    Istio

    View Slide

  43. 43
    Caso 2

    View Slide

  44. 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/

    View Slide

  45. Obrigado!
    Perguntas ?

    View Slide

  46. You can find me at @Daniel_Requena
    (twitter)
    www.linkedin.com/in/danielrequena/
    d[email protected]
    [email protected]
    Daniel Requena

    View Slide