2.1 Produção: o fim ou o início?

Neste capítulo falamos sobre o ambiente de produção. Conforme comentado no livro "DevOps na Prática: Entrega de Software Confiável a Automatizada", Sato (2018) argumenta que o ciclo de vida do software deveria iniciar somente apenas quando o usuário passasse a fazer uso do software.

Particularmente, considero uma afirmação interessante. Do ponto de vista de desenvolvimento de software, sabe-se que bons produtos de software ficam no mercado por mais de 20 anos. Desse modo, se comparado com o tempo de desenvolvimento do produto e o primeiro lançamento, pode-se dizer que o software passa muito mais tempo em manutenção do que em desenvolvimento.

A ideia deste capítulo é ilustrar como podemos utilizar o Docker para montar o ambiente de produção e disponibilizar uma aplicação para ser utilizada pelo usuário final.

Recapitulando a figura do Capítulo 1 que ilustra um fluxo DevOps, esse capítulo abordará o item 5 da figura, ou seja, o ambiente de produção.

Fluxo de trabalho genérico e para o ciclo de vida do aplicativo em contêineres do Docker (extraída de Torre (2020))

Será utilizado como exemplo, o código de uma loja virtual web, o mesmo utilizado por Sato (2018) em seu livro DevOps na Prática, mas, ao contrário daquele que fazia uso do Vagrant e Máquinas Virtuais para a instanciação do ambiente de produção, aqui faremos uso do Docker e contêineres.

2.1.1 Aplicação exemplo: loja virtual

O objeto do livro é ensinar conceitos de DevOps e não de desenvolvimento de software. Desse modo, faremos uso de uma aplicação já pronta para explorar os conceitos de conteinerização e Docker. Caso deseje, você pode utilizar uma aplicação que tenha familiaridade ou então utilizar a loja virtual do exemplo abaixo. Como citado anteriormente, é a mesma aplicação utilizada no livro DevOps na Prática, por se tratar de uma aplicação mais antiga, buscou-se por contêineres mais próximos da versão original do código, mesmo assim, foram feitas atualizações nas versões dos Plugings do Maven para torná-la compatível e poder ser executada. Trata-se de uma aplicação web escrita em Java e que faz uso da plataforma Broadleaf Commerce (http://www.broadleafcommerce.org/) para oferecer todos os recursos de uma loja virtual. A aplicação executa em um contêiner Tomcat versão 7 e também necessita de um banco de dados MySQL versão 5.6 que, no nosso caso, estará em outro contêiner.

Repositório da aplicação: https://github.com/aurimrv/loja-virtual-devops/

Um ponto importante a ser ressaltado é que, para compilar essa versão da aplicação será necessário fazer uso do Java 1.8.0. Eu utilizei o JDK 1.8 da Oracle. Além disso, assume-se que o git e o maven estejam instalados e funcionando.

Para mais detalhes sobre o Broadleaf Commerce sugiro a leitura da Seção 2.1, do Capítulo 2, do livro DevOps na Prática ou mesmo da documentação oficial em http://www.broadleafcommerce.org/.

Para gerar o arquivo .war para o deploy no servidor Web basta executar os comandos abaixo:

Se tudo correr bem, o resultado final será semelhante ao obtido abaixo:

O arquivo que será utilizado para o deploy no servidor web estará localizado em loja-virtual-devops/combined/target/devopsnapratica.war

Para essa atividade, mesmo que não tenha conseguido gerar o arquivo acima, você pode continuar pois o mesmo será disponibilizado, já compilado, para a criação da imagem do contêiner do servidor, na Seção 2.4.

De modo geral, a aplicação da loja virtual faz uso de uma série de tecnologias Java, tais como frameworks, e servidores de aplicação, além de banco de dados MySQL. Desse modo, seu processo de instalação e configuração corresponde ao de uma aplicação Java completa pois a mesma faz uso de diferentes tecnologias comumente utilizadas em aplicações Java para a web. A figura abaixo, adapta de Sato (2018), ilustra a composição do ambiente de produção.

Ambiente de Produção (adaptado de DevOps na Prática)

Os clientes terão acesso à aplicação por meio de um navegador e farão acesso à loja virtual que estará executando no Tomcat dentro do servidor web. O servidor web é responsável por executar a aplicação e contém todos os pré-requisitos necessários para esse fim, ou seja, contém todas as todas as bibliotecas e frameworks Java necessárias, incluindo uma instância embutida do Apache Solr, que se trata de um servidor de pesquisa para indexação dos itens da loja. A aplicação demanda também um servidor de bando de dados (Servidor BD) que estará executando em outro servidor. Desse modo, pode-se dizer que essa seria uma arquitetura web de duas camadas presente em grande parte dos produtos desenvolvidos para a web.

Last updated

Was this helpful?