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

122 visualizações

Publicada em

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

Publicada em: Internet
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
122
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1
Ações
Compartilhamentos
0
Downloads
0
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

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

  1. 1. Contêineres e VMs no mundo dos E- commerces
  2. 2. About me ▫ TI desde 2000 ▫ Técnico em Telecom ▫ PHP ZCE ▫ Devop na Global Fashion Group ▫ Instrutor ▫ Autor ▫ Pai
  3. 3. Merchan http://aprendendodocker.com.br
  4. 4. Agenda Máquinas Físicas Máquinas Virtuais Contêineres Comparativo Onde usar cada um
  5. 5. Disclaimer: I am not a cloud specialist
  6. 6. Máquinas Físicas O início
  7. 7. ▫ Escolher datacenterMáquinas Físicas
  8. 8. Máquinas Físicas ▫ Escolher datacenter ▫ Contratar link de internet
  9. 9. ▫ Escolher datacenter ▫ Contratar link de internet ▫ Contratar links de voz Máquinas Físicas
  10. 10. ▫ Escolher datacenter ▫ Contratar link de internet ▫ Contratar links de voz ▫ Comprar e configurar roteadores Máquinas Físicas
  11. 11. ▫ Escolher datacenter ▫ Contratar link de internet ▫ Contratar links de voz ▫ Comprar e configurar roteadores ▫ Comprar e configurar servidores Máquinas Físicas
  12. 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. 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. 14. ▫ Monitorar custosMáquinas Físicas
  15. 15. ▫ Monitorar custos ▫ Monitorar funcionamento Máquinas Físicas
  16. 16. ▫ Monitorar custos ▫ Monitorar funcionamento ▫ Monitorar utilização Máquinas Físicas
  17. 17. ▫ Monitorar custos ▫ Monitorar funcionamento ▫ Monitorar utilização ▫ Escalabilidade lenta Máquinas Físicas
  18. 18. ▫ Monitorar custos ▫ Monitorar funcionamento ▫ Monitorar utilização ▫ Escalabilidade lenta ▫ Aplicações monolíticas Máquinas Físicas
  19. 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. 20. On-Premises Aplicação Dados Runtime Middleware Sistema Operacional Virtualização Servidor Armazenamento Rede ● Cliente ● Fornecedor Legenda
  21. 21. Quem trabalha com máquinas físicas?
  22. 22. Máquinas Virtuais Evolução
  23. 23. ▫ Escolher tipo de cloud (IAAS/PAAS) Máquinas Virtuais
  24. 24. ▫ Escolher tipo de cloud (IAAS/PAAS) ▫ Escolher provedor de Cloud Máquinas Virtuais
  25. 25. ▫ Escolher tipo de cloud (IAAS/PAAS) ▫ Escolher provedor de Cloud ▫ Contratar os serviços do provedor Máquinas Virtuais
  26. 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. 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. 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. 29. IAAS - Infrastructure As A Service Aplicação Dados Runtime Middleware Sistema Operacional Virtualização Servidor Armazenamento Rede ● Cliente ● Fornecedor Legenda
  30. 30. PAAS - Platform As A Service Aplicação Dados Runtime Middleware Sistema Operacional Virtualização Servidor Armazenamento Rede ● Cliente ● Fornecedor Legenda
  31. 31. ▫ Monitorar custosMáquinas Virtuais
  32. 32. ▫ Monitorar custos ▫ Monitorar funcionamento Máquinas Virtuais
  33. 33. ▫ Monitorar custos ▫ Monitorar funcionamento ▫ Monitorar utilização Máquinas Virtuais
  34. 34. ▫ Monitorar custos ▫ Monitorar funcionamento ▫ Monitorar utilização ▫ Escalabilidade rápida Máquinas Virtuais
  35. 35. ▫ Monitorar custos ▫ Monitorar funcionamento ▫ Monitorar utilização ▫ Escalabilidade rápida ▫ Aplicações quebrada em serviços Máquinas Virtuais
  36. 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. 37. Contêineres Novo paradigma
  38. 38. Contêineres E aí como que se faz com contêineres?
  39. 39. Contêineres E aí como que se faz com contêineres? Primeiramente veremos as características de cada um.
  40. 40. Máquinas Físicas Sistema Operacional Bins/Libs Bins/Libs App1 App2
  41. 41. Máquinas Virtuais Hypervisor SO Guest SO Guest App1 App2 Sistema Operacional Bins/Libs Bins/Libs
  42. 42. Contêineres Container Engine App1 App2 Sistema Operacional Bins/Libs Bins/Libs
  43. 43. Qual modelo você NÃO usaria no seu e-commerce hoje?
  44. 44. Comparativo entre VMs e Contêineres
  45. 45. ● Isolamento no nível de sistema operacional ● Isolamento no nível de máquina Máquinas Virtuais Contêineres
  46. 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. 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. 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. 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. 50. Onde usar cada um?
  51. 51. Ambiente de Dev Quais os focos em montar um ambiente de dev?
  52. 52. Quais os focos em montar um ambiente de dev? ▫ Provisionar rápido Ambiente de Dev
  53. 53. Ambiente de Dev Quais os focos em montar um ambiente de dev? ▫ Provisionar rápido ▫ Fácil montar, destruir e remontar
  54. 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. 55. Ambiente de Dev
  56. 56. Monte o mais parecido ao ambiente de produção possível. Inclusive as versões utilizadas.
  57. 57. Ambiente de Dev Monolito => Vai de VM
  58. 58. Ambiente de Dev Monolito => Vai de VM PHP MySQL Redis Varnish RabbitMQ
  59. 59. Ambiente de Dev Microservice => Vai de container
  60. 60. Ambiente de Dev Microservice => Vai de container PHP MySQL Redis Varnish RabbitMQ
  61. 61. Esteira de entrega Quais os focos em montar ambientes para a esteira de entrega?
  62. 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. 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. 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. 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. 66. Dê preferência para contêineres.
  67. 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. 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. 69. E o ambiente de produção? Uso Contêineres ou VMs?
  70. 70. Quais os focos em montar um ambiente de produção? Em produção
  71. 71. Quais os focos em montar um ambiente de produção? ▫ Alta Disponibilidade Em produção
  72. 72. Quais os focos em montar um ambiente de produção? ▫ Alta Disponibilidade ▫ Escalabilidade Em produção
  73. 73. Quais os focos em montar um ambiente de produção? ▫ Alta Disponibilidade ▫ Escalabilidade ▫ Redundâncias Em produção
  74. 74. ▫ VMs ainda são mais maduras out- of the-box Em produção
  75. 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. 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. 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. 78. Contêineres em produção Cuidados
  79. 79. Dev Prod
  80. 80. Contêineres em produção ▫ Migre apenas um serviço por vez
  81. 81. Contêineres em produção ▫ Migre apenas um serviço por vez ▫ Começe por serviços pequenos. Ex. APIs, load balancers.
  82. 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. 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. 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. 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. 86. Contêineres em produção ▫ Serviço de registry rodando
  87. 87. Contêineres em produção ▫ Serviço de registry rodando ▫ Registry de Alta disponibilidade
  88. 88. Contêineres em produção ▫ Serviço de registry rodando ▫ Registry de Alta disponibilidade ▫ Na mesma network do CI
  89. 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. 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. 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. 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. 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. 94. Contêineres em produção ▫ Health checks melhores que em VMs
  95. 95. Contêineres em produção ▫ Health checks melhores que em VMs ▫ Possibilidade de RollBack
  96. 96. Contêineres em produção ▫ Health checks melhores que em VMs ▫ Possibilidade de RollBack ▫ Logs centralizados e indexados
  97. 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. 98. ▫ Repositório de imagensContêineres em produção
  99. 99. ▫ Repositório de imagens ▫ Gerenciamento de hosts Contêineres em produção
  100. 100. ▫ Repositório de imagens ▫ Gerenciamento de hosts ▫ Gerenciamento de configurações Contêineres em produção
  101. 101. ▫ Repositório de imagens ▫ Gerenciamento de hosts ▫ Gerenciamento de configurações ▫ Locais Contêineres em produção
  102. 102. ▫ Repositório de imagens ▫ Gerenciamento de hosts ▫ Gerenciamento de configurações ▫ Locais ▫ Do cluster Contêineres em produção
  103. 103. ▫ Gerencia de OrquestraçãoContêineres em produção
  104. 104. ▫ Gerencia de Orquestração ▫ Como organizar o cluster Contêineres em produção
  105. 105. ▫ Gerencia de Orquestração ▫ Como organizar o cluster ▫ Organizar contêineres nos clusters Contêineres em produção
  106. 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. 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. 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. 109. ▫ SegurançaContêineres em produção
  110. 110. ▫ Segurança ▫ Imagem (docker bench, nautilus, etc.) Contêineres em produção
  111. 111. ▫ Segurança ▫ Imagem (docker bench, nautilus, etc.) ▫ Acesso, remover Linux capabilities --cap-drop sys_chroot Contêineres em produção
  112. 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. 113. ▫ Utilizar framework do kernel (SELinux ApArmor) --selinux-enabled Contêineres em produção
  114. 114. ▫ Utilizar framework do kernel (SELinux ApArmor) --selinux-enabled ▫ Limitar recursos --cpu-shares=512 Contêineres em produção
  115. 115. ▫ MonitoramentoContêineres em produção
  116. 116. ▫ Monitoramento ▫ Sysdig Contêineres em produção
  117. 117. ▫ Monitoramento ▫ Sysdig ▫ Datadog Contêineres em produção
  118. 118. ▫ Monitoramento ▫ Sysdig ▫ Datadog ▫ New Relic Contêineres em produção
  119. 119. ▫ Monitoramento ▫ Sysdig ▫ Datadog ▫ New Relic ▫ Stats (docker stats) Contêineres em produção
  120. 120. ▫ Não utilizar SSH, gerencie contêineres via Host Contêineres em produção
  121. 121. São cuidados para evitar isso:
  122. 122. Não existe bala de prata, cada problema tem algumas soluções possíveis, é questão de analisar e escolher.
  123. 123. Fontes Imagens: baixandowallpapers.com e clipartpanda. com Apresentação: slidescarnival.com

×