Prática de DevOps com Docker
  • Prática de DevOps com Docker
  • Autores e Agradecimentos
  • Uso do Livro
  • Contribua com o Livro
  • Licença
  • Organização do Livro
  • 1. Introdução
    • 1.1 - Máquinas Virtuais e Contêineres
    • 1.2 DevOps e Docker
    • 1.3 Configuração do Ambiente
  • 2. Produção
    • 2.1 Produção: o fim ou o início?
    • 2.2 Ambiente de Produção
    • 2.3 Instalação do Servidor de Banco de Dados
    • 2.4 Instalação do Servidor de Web
  • 3. Monitoramento
    • 3.1 Introdução
    • 3.2 Configurando o Servidor de Monitoramento
    • 3.3 Monitorando Servidores do Ambiente de Produção
    • 3.4 Comandos de Verificação do Nagios
    • 3.5 Criando Verificações Mais Específicas
    • 3.6 Criando Alertas
    • 3.7 Recuperando de Problemas
  • 4. Infraestrutura como Código e Orquestração
    • 4.1 Introdução
    • 4.2 Orquestração com Docker Compose
  • 5. Integração Contínua
    • 5.1 Introdução
    • 5.2 Controle de Versão
    • 5.3 Construindo o Projeto Utilizando Contêiner
    • 5.4 Garantindo Acesso de Desenvolvedor nas Plataformas por meio de Tokens
    • 5.5 Integrando GitLab e GitHub
    • 5.6 Pipeline de Integração Contínua com GitLab CI/CD
  • 6. Entrega Contínua
    • 6.1 Introdução
    • 6.2 Personalizando Imagem Docker
    • 6.3 Personalizando Imagem do Servidor Web via GitLab CI/CD
    • 6.4 Atualizando o Servidor Web no Ambiente de Produção
  • 7. Deploy na Nuvem
    • 7.1 Introdução
    • 7.2 Configurando o ambiente local de desenvolvimento
    • 7.3 Conhecendo os recursos e conceitos do Kubernetes
    • 7.4 Entendendo o Chart
    • 7.5 Configurando o Jib
    • 7.6 Definindo o chart utilizado para execução local e na nuvem
  • 8. Conclusão
    • Conclusão
Powered by GitBook
On this page

Was this helpful?

  1. 5. Integração Contínua

5.1 Introdução

Previous4.2 Orquestração com Docker ComposeNext5.2 Controle de Versão

Last updated 4 years ago

Was this helpful?

Nós capítulos anteriores o foco foi na demonstração da implantação do ambiente de produção considerando a tecnologia Docker. Desse modo, demonstramos como usar contêineres para colocar no ar uma aplicação funcional. Basicamente fizemos uso de três servidores para isso: um Servidor de Banco de Dados (MySQL), um Servidor de Aplicação (Tomcat), e um Servidor de Monitoramento (Nagios).

Observa-se que, para isso, não falamos sobre o processo de construção do arquivo lojavirtualdevops.war que foi utilizado para se efetuar o deploy no Servidor de Aplicação.

Neste capítulo e no próximo abordaremos especificamente a questão da construção do arquivo lojavirtualdevops.war , em outras palavras, retomando a figura abaixo, apresentada anteriormente no Capítulo 1.2, atacaremos as etapas 1, 3 e 4. O foco será no uso de Docker e outras tecnologias nas etapas de Desenvolvimento e Integração Contínua (Continuous Integration) (Capítulo 5) e Entrega Contínua (Continuous Deployment) (Capítulo 6).

Considerando essa forma moderna de desenvolvimento de software o que se pretende é que, a cada alteração realizada no código da aplicação que seja confirmada (commit), siga-se um fluxo (pipeline) que permita a compilação, teste e geração do pacote da aplicação para entrega ao ambiente de produção se for o caso.

A responsabilidade pelo código acabou fazendo com que o desenvolvedor, ao se responsabilizar pelo código que escreve, passasse a adotar teste unitário como prática comum. Desse modo, ele não entrega mais apenas o código operacional da aplicação mas também um conjunto de testes unitários que demonstram que o que ele desenvolveu funciona corretamente.

Espero que estejam animados para essas últimas etapas de aprendizado sobre Intergração e Entrega Continuas.

Conforme ressalta ), a essência do DevOps é exatamente a cooperação entre as equipes de desenvolvimento e operações em prol de construir e disponibilizar uma aplicação de qualidade para os usuários finais utilizando o máximo possível de automatização nesse processo. Para isso, escrever código para a aplicação e para a infraestrutura é fundamental.

Isso é decorrente da introdução dos métodos ágeis propostos nos anos 90 e que hoje são utilizados total ou parcialmente por grande parte das empresas desenvolvedoras de software (). Dentre as práticas ágeis preconizadas pela eXtreme Programing (XP), por exemplo, estão: refatoração, Test Driven Development (TDD), propriedade coletiva de código, projeto incremental, programação em pares, padrões de código e integração contínua. Obviamente, nem todas são universalmente aceitas mas algumas, tais como a responsabilidade pelo código e a integração contínua passaram a ser um padrão de fato no desenvolvimento de software atual.

Já a integração contínua faz com que, a cada mudança confirmada no código, todo ou parte do sistema seja reconstruída e testada rapidamente e a equipe de desenvolvimento passa a ter um rápido retorno se algo deu errado com as últimas mudanças introduzidas. Para esse ponto, recomendo a leitura do artigo de intitulado "". É bem interessante. Apesar de apresentar o relato de desenvolvimento em uma empresa particular, as práticas adotadas e descritas são empregadas hoje por uma vasta gama de empresas.

Sato (2018
Beck e Andres (2005)
Feitelson et al. (2013)
Development and Deployment at Facebook
Fluxo de trabalho genérico e para o ciclo de vida do aplicativo em contêineres do Docker (extraída de Torre (2020))