▫ 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
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
▫ 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ção Dados Runtime Middleware Sistema Operacional Virtualização Servidor Armazenamento Rede ● Cliente ● Fornecedor Legenda
PAAS - Platform As A Service Aplicação Dados Runtime Middleware Sistema Operacional Virtualização Servidor Armazenamento Rede ● Cliente ● Fornecedor Legenda
● 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*
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
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
▫ 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
▫ 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 ▫ 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 ▫ Possibilidade de RollBack ▫ Logs centralizados e indexados ▫ Métricas diferentes, monitoramento diferenciado
▫ 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ç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