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.

Avatar for Wellington F. Silva

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.