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

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

    ▫ PHP ZCE ▫ Devop na Global Fashion Group ▫ Instrutor ▫ Autor ▫ Pai
  2. 10.

    ▫ Escolher datacenter ▫ Contratar link de internet ▫ Contratar

    links de voz ▫ Comprar e configurar roteadores Máquinas Físicas
  3. 11.

    ▫ Escolher datacenter ▫ Contratar link de internet ▫ Contratar

    links de voz ▫ Comprar e configurar roteadores ▫ Comprar e configurar servidores Máquinas Físicas
  4. 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
  5. 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
  6. 18.

    ▫ Monitorar custos ▫ Monitorar funcionamento ▫ Monitorar utilização ▫

    Escalabilidade lenta ▫ Aplicações monolíticas Máquinas Físicas
  7. 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
  8. 25.

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

    Cloud ▫ Contratar os serviços do provedor Máquinas Virtuais
  9. 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
  10. 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
  11. 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
  12. 29.

    IAAS - Infrastructure As A Service Aplicação Dados Runtime Middleware

    Sistema Operacional Virtualização Servidor Armazenamento Rede • Cliente • Fornecedor Legenda
  13. 30.

    PAAS - Platform As A Service Aplicação Dados Runtime Middleware

    Sistema Operacional Virtualização Servidor Armazenamento Rede • Cliente • Fornecedor Legenda
  14. 35.

    ▫ Monitorar custos ▫ Monitorar funcionamento ▫ Monitorar utilização ▫

    Escalabilidade rápida ▫ Aplicações quebrada em serviços Máquinas Virtuais
  15. 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
  16. 39.
  17. 45.

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

    nível de máquina Máquinas Virtuais Contêineres
  18. 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
  19. 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
  20. 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
  21. 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*
  22. 52.

    Quais os focos em montar um ambiente de dev? ▫

    Provisionar rápido Ambiente de Dev
  23. 53.

    Ambiente de Dev Quais os focos em montar um ambiente

    de dev? ▫ Provisionar rápido ▫ Fácil montar, destruir e remontar
  24. 54.

    Ambiente de Dev Quais os focos em montar um ambiente

    de dev? ▫ Provisionar rápido ▫ Fácil montar, destruir e remontar ▫ E PRINCIPALMENTE:
  25. 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
  26. 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
  27. 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
  28. 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
  29. 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.
  30. 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
  31. 71.

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

    Alta Disponibilidade Em produção
  32. 72.

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

    Alta Disponibilidade ▫ Escalabilidade Em produção
  33. 73.

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

    Alta Disponibilidade ▫ Escalabilidade ▫ Redundâncias Em produção
  34. 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
  35. 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
  36. 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
  37. 79.
  38. 81.

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

    ▫ Começe por serviços pequenos. Ex. APIs, load balancers.
  39. 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
  40. 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
  41. 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
  42. 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
  43. 88.

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

    de Alta disponibilidade ▫ Na mesma network do CI
  44. 89.

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

    de Alta disponibilidade ▫ Na mesma network do CI ▫ Storage de alta performance
  45. 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
  46. 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
  47. 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
  48. 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
  49. 96.

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

    ▫ Possibilidade de RollBack ▫ Logs centralizados e indexados
  50. 97.

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

    ▫ Possibilidade de RollBack ▫ Logs centralizados e indexados ▫ Métricas diferentes, monitoramento diferenciado
  51. 100.

    ▫ Repositório de imagens ▫ Gerenciamento de hosts ▫ Gerenciamento

    de configurações Contêineres em produção
  52. 101.

    ▫ Repositório de imagens ▫ Gerenciamento de hosts ▫ Gerenciamento

    de configurações ▫ Locais Contêineres em produção
  53. 102.

    ▫ Repositório de imagens ▫ Gerenciamento de hosts ▫ Gerenciamento

    de configurações ▫ Locais ▫ Do cluster Contêineres em produção
  54. 105.

    ▫ Gerencia de Orquestração ▫ Como organizar o cluster ▫

    Organizar contêineres nos clusters Contêineres em produção
  55. 106.

    ▫ Gerencia de Orquestração ▫ Como organizar o cluster ▫

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

    ▫ Segurança ▫ Imagem (docker bench, nautilus, etc.) ▫ Acesso,

    remover Linux capabilities --cap-drop sys_chroot Contêineres em produção
  59. 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
  60. 114.

    ▫ Utilizar framework do kernel (SELinux ApArmor) --selinux-enabled ▫ Limitar

    recursos --cpu-shares=512 Contêineres em produção
  61. 119.

    ▫ Monitoramento ▫ Sysdig ▫ Datadog ▫ New Relic ▫

    Stats (docker stats) Contêineres em produção
  62. 122.

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

    possíveis, é questão de analisar e escolher.