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.

280fecb4f048de5ecf36bec281609ea4?s=128

Wellington F. Silva

June 07, 2016
Tweet

Transcript

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

  2. About me ▫ TI desde 2000 ▫ Técnico em Telecom

    ▫ PHP ZCE ▫ Devop na Global Fashion Group ▫ Instrutor ▫ Autor ▫ Pai
  3. Merchan http://aprendendodocker.com.br

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

    um
  5. Disclaimer: I am not a cloud specialist

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

  7. ▫ Escolher datacenter Máquinas Físicas

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

  9. ▫ Escolher datacenter ▫ Contratar link de internet ▫ Contratar

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

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

    links de voz ▫ Comprar e configurar roteadores ▫ Comprar e configurar servidores Máquinas Físicas
  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
  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
  14. ▫ Monitorar custos Máquinas Físicas

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

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

    Físicas
  17. ▫ Monitorar custos ▫ Monitorar funcionamento ▫ Monitorar utilização ▫

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

    Escalabilidade lenta ▫ Aplicações monolíticas Máquinas Físicas
  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
  20. On-Premises Aplicação Dados Runtime Middleware Sistema Operacional Virtualização Servidor Armazenamento

    Rede • Cliente • Fornecedor Legenda
  21. Quem trabalha com máquinas físicas?

  22. Máquinas Virtuais Evolução

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

  24. ▫ Escolher tipo de cloud (IAAS/PAAS) ▫ Escolher provedor de

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

    Cloud ▫ Contratar os serviços do provedor Máquinas Virtuais
  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
  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
  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
  29. IAAS - Infrastructure As A Service Aplicação Dados Runtime Middleware

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

    Sistema Operacional Virtualização Servidor Armazenamento Rede • Cliente • Fornecedor Legenda
  31. ▫ Monitorar custos Máquinas Virtuais

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

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

    Virtuais
  34. ▫ Monitorar custos ▫ Monitorar funcionamento ▫ Monitorar utilização ▫

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

    Escalabilidade rápida ▫ Aplicações quebrada em serviços Máquinas Virtuais
  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
  37. Contêineres Novo paradigma

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

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

    veremos as características de cada um.
  40. Máquinas Físicas Sistema Operacional Bins/Libs Bins/Libs App1 App2

  41. Máquinas Virtuais Hypervisor SO Guest SO Guest App1 App2 Sistema

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

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

  44. Comparativo entre VMs e Contêineres

  45. • Isolamento no nível de sistema operacional • Isolamento no

    nível de máquina Máquinas Virtuais Contêineres
  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
  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
  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
  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*
  50. Onde usar cada um?

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

    de dev?
  52. Quais os focos em montar um ambiente de dev? ▫

    Provisionar rápido Ambiente de Dev
  53. Ambiente de Dev Quais os focos em montar um ambiente

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

    de dev? ▫ Provisionar rápido ▫ Fácil montar, destruir e remontar ▫ E PRINCIPALMENTE:
  55. Ambiente de Dev

  56. Monte o mais parecido ao ambiente de produção possível. Inclusive

    as versões utilizadas.
  57. Ambiente de Dev Monolito => Vai de VM

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

    Redis Varnish RabbitMQ
  59. Ambiente de Dev Microservice => Vai de container

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

    Redis Varnish RabbitMQ
  61. Esteira de entrega Quais os focos em montar ambientes para

    a esteira de entrega?
  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
  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
  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
  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
  66. Dê preferência para contêineres.

  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.
  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
  69. E o ambiente de produção? Uso Contêineres ou VMs?

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

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

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

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

    Alta Disponibilidade ▫ Escalabilidade ▫ Redundâncias Em produção
  74. ▫ VMs ainda são mais maduras out- of the-box Em

    produção
  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
  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
  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
  78. Contêineres em produção Cuidados

  79. Dev Prod

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

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

    ▫ Começe por serviços pequenos. Ex. APIs, load balancers.
  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
  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
  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
  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
  86. Contêineres em produção ▫ Serviço de registry rodando

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

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

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

    de Alta disponibilidade ▫ Na mesma network do CI ▫ Storage de alta performance
  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
  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
  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
  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
  94. Contêineres em produção ▫ Health checks melhores que em VMs

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

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

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

    ▫ Possibilidade de RollBack ▫ Logs centralizados e indexados ▫ Métricas diferentes, monitoramento diferenciado
  98. ▫ Repositório de imagens Contêineres em produção

  99. ▫ Repositório de imagens ▫ Gerenciamento de hosts Contêineres em

    produção
  100. ▫ Repositório de imagens ▫ Gerenciamento de hosts ▫ Gerenciamento

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

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

    de configurações ▫ Locais ▫ Do cluster Contêineres em produção
  103. ▫ Gerencia de Orquestração Contêineres em produção

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

    em produção
  105. ▫ Gerencia de Orquestração ▫ Como organizar o cluster ▫

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

    Organizar contêineres nos clusters ▫ Definir estratégia de schedule Contêineres em produção
  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
  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
  109. ▫ Segurança Contêineres em produção

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

    produção
  111. ▫ Segurança ▫ Imagem (docker bench, nautilus, etc.) ▫ Acesso,

    remover Linux capabilities --cap-drop sys_chroot Contêineres em produção
  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
  113. ▫ Utilizar framework do kernel (SELinux ApArmor) --selinux-enabled Contêineres em

    produção
  114. ▫ Utilizar framework do kernel (SELinux ApArmor) --selinux-enabled ▫ Limitar

    recursos --cpu-shares=512 Contêineres em produção
  115. ▫ Monitoramento Contêineres em produção

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

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

  118. ▫ Monitoramento ▫ Sysdig ▫ Datadog ▫ New Relic Contêineres

    em produção
  119. ▫ Monitoramento ▫ Sysdig ▫ Datadog ▫ New Relic ▫

    Stats (docker stats) Contêineres em produção
  120. ▫ Não utilizar SSH, gerencie contêineres via Host Contêineres em

    produção
  121. São cuidados para evitar isso:

  122. Não existe bala de prata, cada problema tem algumas soluções

    possíveis, é questão de analisar e escolher.
  123. Fontes Imagens: baixandowallpapers.com e clipartpanda. com Apresentação: slidescarnival.com