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

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

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. About me ▫ TI desde 2000 ▫ Técnico em Telecom

    ▫ PHP ZCE ▫ Devop na Global Fashion Group ▫ Instrutor ▫ Autor ▫ Pai
  2. ▫ Escolher datacenter ▫ Contratar link de internet ▫ Contratar

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

    links de voz ▫ Comprar e configurar roteadores ▫ Comprar e configurar servidores Máquinas Físicas
  4. ▫ 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. 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. ▫ Monitorar custos ▫ Monitorar funcionamento ▫ Monitorar utilização ▫

    Escalabilidade lenta ▫ Aplicações monolíticas Máquinas Físicas
  7. 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. ▫ Escolher tipo de cloud (IAAS/PAAS) ▫ Escolher provedor de

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

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

    Sistema Operacional Virtualização Servidor Armazenamento Rede • Cliente • Fornecedor Legenda
  14. ▫ Monitorar custos ▫ Monitorar funcionamento ▫ Monitorar utilização ▫

    Escalabilidade rápida ▫ Aplicações quebrada em serviços Máquinas Virtuais
  15. 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. • Isolamento no nível de sistema operacional • Isolamento no

    nível de máquina Máquinas Virtuais Contêineres
  17. • 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
  18. • 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
  19. 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
  20. 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*
  21. Quais os focos em montar um ambiente de dev? ▫

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

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

    de dev? ▫ Provisionar rápido ▫ Fácil montar, destruir e remontar ▫ E PRINCIPALMENTE:
  24. 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
  25. 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
  26. 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
  27. 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. Esteira de entrega ▫ Com contêineres não é necessário instalar

    todas as dependências para que suas aplicações sejam testadas e empacotadas.
  29. 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
  30. Quais os focos em montar um ambiente de produção? ▫

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

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

    Alta Disponibilidade ▫ Escalabilidade ▫ Redundâncias Em produção
  33. ▫ 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
  34. ▫ 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
  35. 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
  36. Contêineres em produção ▫ Migre apenas um serviço por vez

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

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

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

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

    ▫ Possibilidade de RollBack ▫ Logs centralizados e indexados ▫ Métricas diferentes, monitoramento diferenciado
  49. ▫ Repositório de imagens ▫ Gerenciamento de hosts ▫ Gerenciamento

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

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

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

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

    Organizar contêineres nos clusters ▫ Definir estratégia de schedule Contêineres em produção
  54. ▫ 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
  55. ▫ 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
  56. ▫ Segurança ▫ Imagem (docker bench, nautilus, etc.) ▫ Acesso,

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

    recursos --cpu-shares=512 Contêineres em produção
  59. ▫ Monitoramento ▫ Sysdig ▫ Datadog ▫ New Relic ▫

    Stats (docker stats) Contêineres em produção
  60. Não existe bala de prata, cada problema tem algumas soluções

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