Contêineres e VMs no mundo dos E-commerces (Devcommerce2016)
-
Upload
wellington-silva -
Category
Internet
-
view
140 -
download
0
Transcript of Contêineres e VMs no mundo dos E-commerces (Devcommerce2016)
Contêineres e VMs no mundo dos E-commerces
About me ▫ TI desde 2000▫ Técnico em Telecom▫ PHP ZCE▫ Devop na Global Fashion Group▫ Instrutor▫ Autor▫ Pai
Merchanhttp://aprendendodocker.com.br
Agenda Máquinas FísicasMáquinas VirtuaisContêineresComparativoOnde usar cada um
Disclaimer:I am not a cloud specialist
Máquinas Físicas
O início
▫ Escolher datacenterMáquinas Físicas
Máquinas Físicas ▫ Escolher datacenter▫ Contratar link de internet
▫ Escolher datacenter▫ Contratar link de internet▫ Contratar links de voz
Máquinas Físicas
▫ Escolher datacenter▫ Contratar link de internet▫ Contratar links de voz▫ Comprar e configurar roteadores
Máquinas Físicas
▫ Escolher datacenter▫ Contratar link de internet▫ Contratar links de voz▫ Comprar e configurar roteadores ▫ Comprar e configurar servidores
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.
Máquinas Físicas
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
▫ Monitorar custosMáquinas Físicas
▫ Monitorar custos▫ Monitorar funcionamento
Máquinas Físicas
▫ Monitorar custos▫ Monitorar funcionamento▫ Monitorar utilização
Máquinas Físicas
▫ Monitorar custos▫ Monitorar funcionamento▫ Monitorar utilização▫ Escalabilidade lenta
Máquinas Físicas
▫ Monitorar custos▫ Monitorar funcionamento▫ Monitorar utilização▫ Escalabilidade lenta▫ Aplicações monolíticas
Máquinas Físicas
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
On-Premises
AplicaçãoDados
RuntimeMiddleware
Sistema OperacionalVirtualização
ServidorArmazenamento
Rede
● Cliente● Fornecedor
Legenda
Quem trabalha com máquinas físicas?
Máquinas Virtuais
Evolução
▫ Escolher tipo de cloud (IAAS/PAAS)
Máquinas Virtuais
▫ Escolher tipo de cloud (IAAS/PAAS)
▫ Escolher provedor de Cloud
Máquinas Virtuais
▫ Escolher tipo de cloud (IAAS/PAAS)
▫ Escolher provedor de Cloud▫ Contratar os serviços do provedor
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
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
Máquinas Virtuais
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
IAAS - Infrastructure As A Service
AplicaçãoDados
RuntimeMiddleware
Sistema OperacionalVirtualização
ServidorArmazenamento
Rede
● Cliente● Fornecedor
Legenda
PAAS - Platform As A Service
AplicaçãoDados
RuntimeMiddleware
Sistema OperacionalVirtualização
ServidorArmazenamento
Rede
● Cliente● Fornecedor
Legenda
▫ Monitorar custosMáquinas Virtuais
▫ Monitorar custos▫ Monitorar funcionamento
Máquinas Virtuais
▫ Monitorar custos▫ Monitorar funcionamento▫ Monitorar utilização
Máquinas Virtuais
▫ Monitorar custos▫ Monitorar funcionamento▫ Monitorar utilização▫ Escalabilidade rápida
Máquinas Virtuais
▫ Monitorar custos▫ Monitorar funcionamento▫ Monitorar utilização▫ Escalabilidade rápida▫ Aplicações quebrada em serviços
Máquinas Virtuais
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
Contêineres
Novo paradigma
Contêineres E aí como que se faz com contêineres?
Contêineres E aí como que se faz com contêineres?
Primeiramente veremos as características de cada um.
Máquinas Físicas
Sistema Operacional
Bins/Libs Bins/Libs
App1 App2
Máquinas Virtuais
Hypervisor
SO Guest SO Guest
App1 App2
Sistema Operacional
Bins/Libs Bins/Libs
Contêineres
Container Engine
App1 App2
Sistema Operacional
Bins/Libs Bins/Libs
Qual modelo você NÃO usaria no seu e-commerce hoje?
Comparativo entre VMs e Contêineres
● Isolamento no nível de sistema operacional
● Isolamento no nível de máquina
Máquinas Virtuais Contêineres
● 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
● 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
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
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*
Onde usar cada um?
Ambiente de Dev Quais os focos em montar um
ambiente de dev?
Quais os focos em montar um ambiente de dev?▫ Provisionar rápido
Ambiente de Dev
Ambiente de Dev Quais os focos em montar um
ambiente de dev?▫ Provisionar rápido▫ Fácil montar, destruir e remontar
Ambiente de Dev Quais os focos em montar um
ambiente de dev?▫ Provisionar rápido▫ Fácil montar, destruir e remontar
▫ E PRINCIPALMENTE:
Ambiente de Dev
Monte o mais parecido ao ambiente de produção possível. Inclusive as versões utilizadas.
Ambiente de Dev
Monolito => Vai de VM
Ambiente de Dev
Monolito => Vai de VM
PHP
MySQLRedis
Varnish
RabbitMQ
Ambiente de Dev
Microservice => Vai de container
Ambiente de Dev
Microservice => Vai de container
PHP
MySQL Redis
Varnish RabbitMQ
Esteira de entrega Quais os focos em montar ambientes
para a 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)
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
Esteira de entrega
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
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
Dê preferência para contêineres.
Esteira de entrega ▫ Com contêineres não é necessário
instalar todas as dependências para que suas aplicações sejam testadas e empacotadas.
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
E o ambiente de produção? Uso Contêineres ou VMs?
Quais os focos em montar um ambiente de produção?
Em produção
Quais os focos em montar um ambiente de produção?▫ Alta Disponibilidade
Em produção
Quais os focos em montar um ambiente de produção?▫ Alta Disponibilidade▫ Escalabilidade
Em produção
Quais os focos em montar um ambiente de produção?▫ Alta Disponibilidade▫ Escalabilidade▫ Redundâncias
Em produção
▫ VMs ainda são mais maduras out-of the-box
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)
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 produção
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
Contêineres em produçãoCuidados
Dev Prod
Contêineres em produção ▫ Migre apenas um serviço por vez
Contêineres em produção ▫ Migre apenas um serviço por vez
▫ Começe por serviços pequenos. Ex. APIs, load balancers.
▫ 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
▫ 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
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
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
Contêineres em produção
▫ Serviço de registry rodando
Contêineres em produção
▫ Serviço de registry rodando▫ Registry de Alta disponibilidade
Contêineres em produção
▫ Serviço de registry rodando▫ Registry de Alta disponibilidade ▫ Na mesma network do CI
Contêineres em produção
▫ Serviço de registry rodando▫ Registry de Alta disponibilidade ▫ Na mesma network do CI▫ Storage de alta performance
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
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
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
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
Contêineres em produção
▫ Health checks melhores que em VMs
Contêineres em produção
▫ Health checks melhores que em VMs
▫ Possibilidade de RollBack
Contêineres em produção
▫ Health checks melhores que em VMs
▫ Possibilidade de RollBack▫ Logs centralizados e indexados
Contêineres em produção
▫ Health checks melhores que em VMs
▫ Possibilidade de RollBack▫ Logs centralizados e indexados▫ Métricas diferentes,
monitoramento diferenciado
▫ Repositório de imagensContêineres em produção
▫ Repositório de imagens▫ Gerenciamento de hosts
Contêineres em produção
▫ Repositório de imagens▫ Gerenciamento de hosts▫ Gerenciamento de configurações
Contêineres em produção
▫ Repositório de imagens▫ Gerenciamento de hosts▫ Gerenciamento de configurações
▫ Locais
Contêineres em produção
▫ Repositório de imagens▫ Gerenciamento de hosts▫ Gerenciamento de configurações
▫ Locais▫ Do cluster
Contêineres em produção
▫ Gerencia de OrquestraçãoContêineres em produção
▫ Gerencia de Orquestração▫ Como organizar o cluster
Contêineres em produção
▫ Gerencia de Orquestração▫ Como organizar o cluster▫ Organizar contêineres nos
clusters
Contêineres em produção
▫ Gerencia de Orquestração▫ Como organizar o cluster▫ Organizar contêineres nos
clusters▫ Definir estratégia de schedule
Contêineres em produção
▫ 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
▫ 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
▫ SegurançaContêineres em produção
▫ Segurança▫ Imagem (docker bench,
nautilus, etc.)
Contêineres em produção
▫ Segurança▫ Imagem (docker bench,
nautilus, etc.)▫ Acesso, remover Linux
capabilities --cap-drop sys_chroot
Contêineres em produção
▫ 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
▫ Utilizar framework do kernel (SELinux ApArmor) --selinux-enabled
Contêineres em produção
▫ Utilizar framework do kernel (SELinux ApArmor) --selinux-enabled
▫ Limitar recursos--cpu-shares=512
Contêineres em produção
▫ MonitoramentoContêineres em produção
▫ Monitoramento▫ Sysdig
Contêineres em produção
▫ Monitoramento▫ Sysdig▫ Datadog
Contêineres em produção
▫ Monitoramento▫ Sysdig▫ Datadog▫ New Relic
Contêineres em produção
▫ Monitoramento▫ Sysdig▫ Datadog▫ New Relic▫ Stats (docker stats)
Contêineres em produção
▫ Não utilizar SSH, gerencie contêineres via Host
Contêineres em produção
São cuidados para evitar isso:
Não existe bala de prata, cada problema tem algumas soluções possíveis, é questão de analisar e escolher.
Fontes Imagens: baixandowallpapers.com e clipartpanda.com
Apresentação: slidescarnival.com