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

Contêineres e VMs no mundo dos E-commerces (Devcommerce2016)

Contêineres e VMs no mundo dos E-commerces (Devcommerce2016)

Palestra sobre contêineres e máquinas virtuais ministrada no DevCommerce Conference 2016.

Wellington F. Silva

June 07, 2016
Tweet

More Decks by Wellington F. Silva

Other Decks in Technology

Transcript

  1. Contêineres e VMs
    no mundo dos E-
    commerces

    View Slide

  2. About me ▫ TI desde 2000
    ▫ Técnico em Telecom
    ▫ PHP ZCE
    ▫ Devop na Global Fashion Group
    ▫ Instrutor
    ▫ Autor
    ▫ Pai

    View Slide

  3. Merchan
    http://aprendendodocker.com.br

    View Slide

  4. Agenda Máquinas Físicas
    Máquinas Virtuais
    Contêineres
    Comparativo
    Onde usar cada um

    View Slide

  5. Disclaimer:
    I am not a cloud specialist

    View Slide

  6. Máquinas Físicas
    O início

    View Slide

  7. ▫ Escolher datacenter
    Máquinas Físicas

    View Slide

  8. Máquinas Físicas ▫ Escolher datacenter
    ▫ Contratar link de internet

    View Slide

  9. ▫ Escolher datacenter
    ▫ Contratar link de internet
    ▫ Contratar links de voz
    Máquinas Físicas

    View Slide

  10. ▫ Escolher datacenter
    ▫ Contratar link de internet
    ▫ Contratar links de voz
    ▫ Comprar e configurar roteadores
    Máquinas Físicas

    View Slide

  11. ▫ Escolher datacenter
    ▫ Contratar link de internet
    ▫ Contratar links de voz
    ▫ Comprar e configurar roteadores
    ▫ Comprar e configurar servidores
    Máquinas Físicas

    View Slide

  12. ▫ Escolher datacenter
    ▫ Contratar link de internet
    ▫ Contratar links de voz
    ▫ Comprar e configurar roteadores
    ▫ Comprar e configurar servidores
    ▫ Aguardar terceiros provisionar e
    fazer as instalações.
    Máquinas Físicas

    View Slide

  13. Máquinas Físicas ▫ Escolher datacenter
    ▫ Contratar link de internet
    ▫ Contratar links de voz
    ▫ Comprar e configurar roteadores
    ▫ Comprar e configurar servidores
    ▫ Aguardar terceiros provisionar e
    fazer as instalações.
    ▫ Botar para rodar

    View Slide

  14. ▫ Monitorar custos
    Máquinas Físicas

    View Slide

  15. ▫ Monitorar custos
    ▫ Monitorar funcionamento
    Máquinas Físicas

    View Slide

  16. ▫ Monitorar custos
    ▫ Monitorar funcionamento
    ▫ Monitorar utilização
    Máquinas Físicas

    View Slide

  17. ▫ Monitorar custos
    ▫ Monitorar funcionamento
    ▫ Monitorar utilização
    ▫ Escalabilidade lenta
    Máquinas Físicas

    View Slide

  18. ▫ Monitorar custos
    ▫ Monitorar funcionamento
    ▫ Monitorar utilização
    ▫ Escalabilidade lenta
    ▫ Aplicações monolíticas
    Máquinas Físicas

    View Slide

  19. Máquinas Físicas ▫ Monitorar custos
    ▫ Monitorar funcionamento
    ▫ Monitorar utilização
    ▫ Escalabilidade lenta
    ▫ Aplicações monolíticas
    ▫ Caso de falhas tinha que ir no
    datacenter

    View Slide

  20. On-Premises
    Aplicação
    Dados
    Runtime
    Middleware
    Sistema Operacional
    Virtualização
    Servidor
    Armazenamento
    Rede
    ● Cliente
    ● Fornecedor
    Legenda

    View Slide

  21. Quem trabalha com máquinas
    físicas?

    View Slide

  22. Máquinas Virtuais
    Evolução

    View Slide

  23. ▫ Escolher tipo de cloud
    (IAAS/PAAS)
    Máquinas
    Virtuais

    View Slide

  24. ▫ Escolher tipo de cloud
    (IAAS/PAAS)
    ▫ Escolher provedor de Cloud
    Máquinas
    Virtuais

    View Slide

  25. ▫ Escolher tipo de cloud
    (IAAS/PAAS)
    ▫ Escolher provedor de Cloud
    ▫ Contratar os serviços do provedor
    Máquinas
    Virtuais

    View Slide

  26. ▫ Escolher tipo de cloud
    (IAAS/PAAS)
    ▫ Escolher provedor de Cloud
    ▫ Contratar os serviços do provedor
    ▫ Provisionar e configurar via painel
    de controle ou API
    Máquinas
    Virtuais

    View Slide

  27. ▫ Escolher tipo de cloud
    (IAAS/PAAS)
    ▫ Escolher provedor de Cloud
    ▫ Contratar os serviços do provedor
    ▫ Provisionar e configurar via painel
    de controle ou API
    ▫ Faz o deploy da aplicação
    Máquinas
    Virtuais

    View Slide

  28. Máquinas
    Virtuais
    ▫ Escolher tipo de cloud
    (IAAS/PAAS)
    ▫ Escolher provedor de Cloud
    ▫ Contratar os serviços do provedor
    ▫ Provisionar e configurar via painel
    de controle ou API
    ▫ Faz o deploy da aplicação
    ▫ Bota pra rodar

    View Slide

  29. IAAS - Infrastructure As A Service
    Aplicação
    Dados
    Runtime
    Middleware
    Sistema Operacional
    Virtualização
    Servidor
    Armazenamento
    Rede
    ● Cliente
    ● Fornecedor
    Legenda

    View Slide

  30. PAAS - Platform As A Service
    Aplicação
    Dados
    Runtime
    Middleware
    Sistema Operacional
    Virtualização
    Servidor
    Armazenamento
    Rede
    ● Cliente
    ● Fornecedor
    Legenda

    View Slide

  31. ▫ Monitorar custos
    Máquinas
    Virtuais

    View Slide

  32. ▫ Monitorar custos
    ▫ Monitorar funcionamento
    Máquinas
    Virtuais

    View Slide

  33. ▫ Monitorar custos
    ▫ Monitorar funcionamento
    ▫ Monitorar utilização
    Máquinas
    Virtuais

    View Slide

  34. ▫ Monitorar custos
    ▫ Monitorar funcionamento
    ▫ Monitorar utilização
    ▫ Escalabilidade rápida
    Máquinas
    Virtuais

    View Slide

  35. ▫ Monitorar custos
    ▫ Monitorar funcionamento
    ▫ Monitorar utilização
    ▫ Escalabilidade rápida
    ▫ Aplicações quebrada em serviços
    Máquinas
    Virtuais

    View Slide

  36. Máquinas
    Virtuais
    ▫ Monitorar custos
    ▫ Monitorar funcionamento
    ▫ Monitorar utilização
    ▫ Escalabilidade rápida
    ▫ Aplicações quebrada em serviços
    ▫ Caso de falhas basta corrigir e re-
    provisionar

    View Slide

  37. Contêineres
    Novo paradigma

    View Slide

  38. Contêineres E aí como que se faz com
    contêineres?

    View Slide

  39. Contêineres E aí como que se faz com
    contêineres?
    Primeiramente veremos as
    características de cada um.

    View Slide

  40. Máquinas Físicas
    Sistema Operacional
    Bins/Libs Bins/Libs
    App1 App2

    View Slide

  41. Máquinas
    Virtuais
    Hypervisor
    SO Guest SO Guest
    App1 App2
    Sistema Operacional
    Bins/Libs Bins/Libs

    View Slide

  42. Contêineres
    Container Engine
    App1 App2
    Sistema Operacional
    Bins/Libs Bins/Libs

    View Slide

  43. Qual modelo você NÃO usaria
    no seu e-commerce hoje?

    View Slide

  44. Comparativo entre
    VMs e Contêineres

    View Slide

  45. ● Isolamento no nível de
    sistema operacional
    ● Isolamento no nível de
    máquina
    Máquinas Virtuais Contêineres

    View Slide

  46. ● Isolamento no nível de
    sistema operacional
    ● Aplicações são
    processos no Host
    ● Isolamento no nível de
    máquina
    ● Aplicações usam o
    kernel do guest
    Máquinas Virtuais Contêineres

    View Slide

  47. ● Isolamento no nível de
    sistema operacional
    ● Aplicações são
    processos no Host
    ● Provisionamento rápido
    ● Isolamento no nível de
    máquina
    ● Aplicações usam o
    kernel do guest
    ● Provisionamento lento
    Máquinas Virtuais Contêineres

    View Slide

  48. Máquinas Virtuais Contêineres
    ● Isolamento no nível de
    máquina
    ● Aplicações usam o
    kernel do guest
    ● Provisionamento lento
    ● KVM, Xen, OracleVM,
    VMware, VirtualBox
    ● Isolamento no nível de
    sistema operacional
    ● Aplicações são
    processos no Host
    ● Provisionamento rápido
    ● LXC, Docker, rkt,
    kubernetes

    View Slide

  49. Máquinas Virtuais Contêineres
    ● Isolamento no nível de
    máquina
    ● Aplicações usam o
    kernel do guest
    ● Provisionamento lento
    ● KVM, Xen, OracleVM,
    VMware, VirtualBox
    ● Rodam outros SOs guest
    ● Isolamento no nível de
    sistema operacional
    ● Aplicações são
    processos no Host
    ● Provisionamento rápido
    ● LXC, Docker, rkt,
    kubernetes
    ● Somente Linux*

    View Slide

  50. Onde usar cada um?

    View Slide

  51. Ambiente de
    Dev
    Quais os focos em montar um
    ambiente de dev?

    View Slide

  52. Quais os focos em montar um
    ambiente de dev?
    ▫ Provisionar rápido
    Ambiente de
    Dev

    View Slide

  53. Ambiente de
    Dev
    Quais os focos em montar um
    ambiente de dev?
    ▫ Provisionar rápido
    ▫ Fácil montar, destruir e remontar

    View Slide

  54. Ambiente de
    Dev
    Quais os focos em montar um
    ambiente de dev?
    ▫ Provisionar rápido
    ▫ Fácil montar, destruir e remontar
    ▫ E PRINCIPALMENTE:

    View Slide

  55. Ambiente de
    Dev

    View Slide

  56. Monte o mais parecido ao
    ambiente de produção possível.
    Inclusive as versões utilizadas.

    View Slide

  57. Ambiente de
    Dev
    Monolito => Vai de VM

    View Slide

  58. Ambiente de
    Dev
    Monolito => Vai de VM
    PHP
    MySQL
    Redis
    Varnish
    RabbitMQ

    View Slide

  59. Ambiente de
    Dev
    Microservice => Vai de container

    View Slide

  60. Ambiente de
    Dev
    Microservice => Vai de container
    PHP
    MySQL Redis
    Varnish RabbitMQ

    View Slide

  61. Esteira de
    entrega
    Quais os focos em montar ambientes
    para a esteira de entrega?

    View Slide

  62. Quais os focos em montar ambientes
    para a esteira de entrega?
    ▫ Que o código seja integrado de
    maneira contínua (CI)
    Esteira de
    entrega

    View Slide

  63. Quais os focos em montar ambientes
    para a esteira de entrega?
    ▫ Que o código seja integrado de
    maneira contínua (CI)
    ▫ Testes sejam feitos
    Esteira de
    entrega

    View Slide

  64. Esteira de
    entrega
    Quais os focos em montar ambientes
    para a esteira de entrega?
    ▫ Que o código seja integrado de
    maneira contínua (CI)
    ▫ Testes sejam feitos
    ▫ Um artefato "deployável" seja
    gerado

    View Slide

  65. Esteira de
    entrega
    Quais os focos em montar ambientes
    para a esteira de entrega?
    ▫ Que o código seja integrado de
    maneira contínua (CI)
    ▫ Testes sejam feitos
    ▫ Um artefato "deployável" seja
    gerado

    View Slide

  66. Dê preferência para contêineres.

    View Slide

  67. Esteira de
    entrega
    ▫ Com contêineres não é necessário
    instalar todas as dependências
    para que suas aplicações sejam
    testadas e empacotadas.

    View Slide

  68. Esteira de
    entrega
    ▫ Com contêineres não é necessário
    instalar todas as dependências
    para que suas aplicações sejam
    testadas e empacotadas.
    ▫ Contêinerize comandos:
    docker run --rm --volume
    "$PWD":/app composer/composer
    install

    View Slide

  69. E o ambiente de produção? Uso
    Contêineres ou VMs?

    View Slide

  70. Quais os focos em montar um
    ambiente de produção?
    Em produção

    View Slide

  71. Quais os focos em montar um
    ambiente de produção?
    ▫ Alta Disponibilidade
    Em produção

    View Slide

  72. Quais os focos em montar um
    ambiente de produção?
    ▫ Alta Disponibilidade
    ▫ Escalabilidade
    Em produção

    View Slide

  73. Quais os focos em montar um
    ambiente de produção?
    ▫ Alta Disponibilidade
    ▫ Escalabilidade
    ▫ Redundâncias
    Em produção

    View Slide

  74. ▫ VMs ainda são mais maduras out-
    of the-box
    Em produção

    View Slide

  75. ▫ VMs ainda são mais maduras out-
    of the-box
    ▫ Contêineres sobre VMs overhead
    de 5-8% (bit.ly/research-ibm)
    Em produção

    View Slide

  76. ▫ VMs ainda são mais maduras out-
    of the-box
    ▫ Contêineres sobre VMs overhead
    de 5-8% (bit.ly/research-ibm)
    ▫ Contêineres exigem muitos
    cuidados.
    Em produção

    View Slide

  77. Em produção ▫ VMs ainda são mais maduras out-
    of the-box
    ▫ Contêineres sobre VMs overhead
    de 5-8% (bit.ly/research-ibm)
    ▫ Contêineres exigem muitos
    cuidados.
    ▫ Em bare metal temos uma
    otimização de recursos usando
    contêineres

    View Slide

  78. Contêineres em
    produção
    Cuidados

    View Slide

  79. Dev Prod

    View Slide

  80. Contêineres em
    produção
    ▫ Migre apenas um serviço por vez

    View Slide

  81. Contêineres em
    produção
    ▫ Migre apenas um serviço por vez
    ▫ Começe por serviços pequenos.
    Ex. APIs, load balancers.

    View Slide

  82. ▫ Migre apenas um serviço por vez
    ▫ Começe por serviços pequenos.
    Ex. APIs, load balancers.
    ▫ Sistema de Deploy diferenciado
    Contêineres em
    produção

    View Slide

  83. ▫ Migre apenas um serviço por vez
    ▫ Começe por serviços pequenos.
    Ex. APIs, load balancers.
    ▫ Sistema de Deploy diferenciado
    ▫ Construção de nova imagem
    Contêineres em
    produção

    View Slide

  84. Contêineres em
    produção
    ▫ Migre apenas um serviço por vez
    ▫ Começe por serviços pequenos.
    Ex. APIs, load balancers.
    ▫ Sistema de Deploy diferenciado
    ▫ Construção de nova imagem
    ▫ Push da imagem para
    repositório

    View Slide

  85. Contêineres em
    produção
    ▫ Migre apenas um serviço por vez
    ▫ Começe por serviços pequenos.
    Ex. APIs, load balancers.
    ▫ Sistema de Deploy diferenciado
    ▫ Construção de nova imagem
    ▫ Push da imagem para
    repositório
    ▫ Imagem é testada no CI server

    View Slide

  86. Contêineres em
    produção
    ▫ Serviço de registry rodando

    View Slide

  87. Contêineres em
    produção
    ▫ Serviço de registry rodando
    ▫ Registry de Alta disponibilidade

    View Slide

  88. Contêineres em
    produção
    ▫ Serviço de registry rodando
    ▫ Registry de Alta disponibilidade
    ▫ Na mesma network do CI

    View Slide

  89. Contêineres em
    produção
    ▫ Serviço de registry rodando
    ▫ Registry de Alta disponibilidade
    ▫ Na mesma network do CI
    ▫ Storage de alta performance

    View Slide

  90. Contêineres em
    produção
    ▫ Serviço de registry rodando
    ▫ Registry de Alta disponibilidade
    ▫ Na mesma network do CI
    ▫ Storage de alta performance
    ▫ Gerencia de hosts

    View Slide

  91. Contêineres em
    produção
    ▫ Serviço de registry rodando
    ▫ Registry de Alta disponibilidade
    ▫ Na mesma network do CI
    ▫ Storage de alta performance
    ▫ Gerencia de hosts
    ▫ Gerencia de configurações

    View Slide

  92. Contêineres em
    produção
    ▫ Serviço de registry rodando
    ▫ Registry de Alta disponibilidade
    ▫ Na mesma network do CI
    ▫ Storage de alta performance
    ▫ Gerencia de hosts
    ▫ Gerencia de configurações
    ▫ Cluster e Envs

    View Slide

  93. Contêineres em
    produção
    ▫ Serviço de registry rodando
    ▫ Registry de Alta disponibilidade
    ▫ Na mesma network do CI
    ▫ Storage de alta performance
    ▫ Gerencia de hosts
    ▫ Gerencia de configurações
    ▫ Cluster e Envs
    ▫ Chaves e senhas

    View Slide

  94. Contêineres em
    produção
    ▫ Health checks melhores que em
    VMs

    View Slide

  95. Contêineres em
    produção
    ▫ Health checks melhores que em
    VMs
    ▫ Possibilidade de RollBack

    View Slide

  96. Contêineres em
    produção
    ▫ Health checks melhores que em
    VMs
    ▫ Possibilidade de RollBack
    ▫ Logs centralizados e indexados

    View Slide

  97. Contêineres em
    produção
    ▫ Health checks melhores que em
    VMs
    ▫ Possibilidade de RollBack
    ▫ Logs centralizados e indexados
    ▫ Métricas diferentes,
    monitoramento diferenciado

    View Slide

  98. ▫ Repositório de imagens
    Contêineres em
    produção

    View Slide

  99. ▫ Repositório de imagens
    ▫ Gerenciamento de hosts
    Contêineres em
    produção

    View Slide

  100. ▫ Repositório de imagens
    ▫ Gerenciamento de hosts
    ▫ Gerenciamento de configurações
    Contêineres em
    produção

    View Slide

  101. ▫ Repositório de imagens
    ▫ Gerenciamento de hosts
    ▫ Gerenciamento de configurações
    ▫ Locais
    Contêineres em
    produção

    View Slide

  102. ▫ Repositório de imagens
    ▫ Gerenciamento de hosts
    ▫ Gerenciamento de configurações
    ▫ Locais
    ▫ Do cluster
    Contêineres em
    produção

    View Slide

  103. ▫ Gerencia de Orquestração
    Contêineres em
    produção

    View Slide

  104. ▫ Gerencia de Orquestração
    ▫ Como organizar o cluster
    Contêineres em
    produção

    View Slide

  105. ▫ Gerencia de Orquestração
    ▫ Como organizar o cluster
    ▫ Organizar contêineres nos
    clusters
    Contêineres em
    produção

    View Slide

  106. ▫ Gerencia de Orquestração
    ▫ Como organizar o cluster
    ▫ Organizar contêineres nos
    clusters
    ▫ Definir estratégia de schedule
    Contêineres em
    produção

    View Slide

  107. ▫ Gerencia de Orquestração
    ▫ Como organizar o cluster
    ▫ Organizar contêineres nos
    clusters
    ▫ Definir estratégia de schedule
    ▫ Definir como balancear o
    tráfego entre os contêineres
    Contêineres em
    produção

    View Slide

  108. ▫ Gerencia de Orquestração
    ▫ Como organizar o cluster
    ▫ Organizar contêineres nos
    clusters
    ▫ Definir estratégia de schedule
    ▫ Definir como balancear o
    tráfego entre os contêineres
    ▫ Configurar service discovery
    Contêineres em
    produção

    View Slide

  109. ▫ Segurança
    Contêineres em
    produção

    View Slide

  110. ▫ Segurança
    ▫ Imagem (docker bench,
    nautilus, etc.)
    Contêineres em
    produção

    View Slide

  111. ▫ Segurança
    ▫ Imagem (docker bench,
    nautilus, etc.)
    ▫ Acesso, remover Linux
    capabilities
    --cap-drop sys_chroot
    Contêineres em
    produção

    View Slide

  112. ▫ Segurança
    ▫ Imagem (docker bench,
    nautilus, etc.)
    ▫ Acesso, remover Linux
    capabilities
    --cap-drop sys_chroot
    ▫ Mudar contêineres para
    rodar sem root
    Contêineres em
    produção

    View Slide

  113. ▫ Utilizar framework do
    kernel (SELinux ApArmor)
    --selinux-enabled
    Contêineres em
    produção

    View Slide

  114. ▫ Utilizar framework do
    kernel (SELinux ApArmor)
    --selinux-enabled
    ▫ Limitar recursos
    --cpu-shares=512
    Contêineres em
    produção

    View Slide

  115. ▫ Monitoramento
    Contêineres em
    produção

    View Slide

  116. ▫ Monitoramento
    ▫ Sysdig
    Contêineres em
    produção

    View Slide

  117. ▫ Monitoramento
    ▫ Sysdig
    ▫ Datadog
    Contêineres em
    produção

    View Slide

  118. ▫ Monitoramento
    ▫ Sysdig
    ▫ Datadog
    ▫ New Relic
    Contêineres em
    produção

    View Slide

  119. ▫ Monitoramento
    ▫ Sysdig
    ▫ Datadog
    ▫ New Relic
    ▫ Stats (docker stats)
    Contêineres em
    produção

    View Slide

  120. ▫ Não utilizar SSH, gerencie
    contêineres via Host
    Contêineres em
    produção

    View Slide

  121. São cuidados para evitar isso:

    View Slide

  122. Não existe bala de prata, cada
    problema tem algumas
    soluções possíveis, é questão de
    analisar e escolher.

    View Slide

  123. Fontes Imagens: baixandowallpapers.com e clipartpanda.
    com
    Apresentação: slidescarnival.com

    View Slide