Deploy de um app SpringBoot 2 nas nuvens do Azure

Como é da sapiência de todos, o mundo está em quarentena. Pra mim e acredito que para uma boa parte dos desenvolvedores a rotina não muda muito, de qualquer modo, o Blog DevJava quer contribuir com um conteúdo bacana, a fim de incentivar que você realmente fique em casa. Faça sua parte, ajude que essa grave doença não se espalhe. Dessa forma, como é do nosso conhecimento, fique em casa e aproveite esse período para aprender coisas novas.

Nós do Blog DevJava preparamos uma matéria em que realizaremos juntos o deploy de uma pequena aplicação SpringBoot 2 na nuvem do Microsoft Azure. 

Será bem rápido, simples e para focar apenas no deploy, utilizaremos o app HelloWorld que desenvolvemos nesse último post sobre SpringBoot aqui. Apenas para refrescar a memória, Essa aplicação que fizemos outrora, expõe um endpoint que nos retorna uma mensagem de HelloWorld. 

Caso não tenha desenvolvido ainda, está aí a oportunidade. Caso prefira pular para o deploy, pode realizar o git clone do projeto no meu github pessoal por esse link: https://github.com/rafaelvcunha/HelloWorldSpringBoot2

Mas antes de iniciarmos a prática, vamos colocar alguns pingos nos is. 

O que é o Microsoft Azure?

Como o próprio site da microsoft o apresenta, o Azure é uma plataforma de computação em nuvem completa, nessa plataforma podemos criar, implantar e gerenciar serviços e aplicativos na nuvem. 

O que preciso para acessar o Azure?

Caso você ainda não tenha uma conta no Azure, a Microsoft disponibiliza 12 meses de serviços gratuitos, basta se cadastrar no link a seguir: https://azure.microsoft.com/pt-br/free/

Mas se como eu, já encerrou o período de testes, é possível utilizar a plataforma pagando apenas pelo que usar. Ao final do deploy, auxiliarei na exclusão dos recursos para que não fique gerando custos para ti, ou mesmo que eles sejam irrelevantes.

Pré-requisitos

Pré-requisitos para iniciarmos esse tutorial:

  • Uma conta no Microsoft Azure como descrito anteriormente;
  • Realizar a instalação do Azure CLI (interface de linha de comando). Pode ser feito o download ou saber mais nesse link https://docs.microsoft.com/pt-br/cli/azure/?view=azure-cli-latest
  • JDK LTS 8 ou 11 instalado com suas variáveis de ambientes configuradas;
  • Possuir o Maven com suas variáveis de ambientes configuradas;
  • Git instalado.
  • Ter realizado o git clone do app HelloWorldSpringBoot2 e importado o projeto maven na sua IDE de estimação.

Bora para a prática, que nem só de teoria ou blá blá blá se vive um desenvolvedor… rsrssrs.

Preparando nossa aplicação para o Azure

Abra o arquivo pom.xml do projeto em sua IDE de estimação. Dentro da tag “<plugins>” que estão abaixo de “<build>”, inclua o seguinte plugin do maven para aplicativos web do azure. Com ele, será possível implantar um aplicativo Spring Boot em um contêiner linux no azure. Segue código:

<plugin>
  <groupId>com.microsoft.azure</groupId>
  <artifactId>azure-webapp-maven-plugin</artifactId>
  <version>1.9.0</version>
</plugin>

Seu arquivo pom.xml ficará da seguinte forma:

Após isso vamos abrir um terminal da sua escolha, aqui utilizo o ConEmu, mas pode ser utilizado os nativos do seu sistema operacional mesmo. Caso queira fazer download do ConEmu, acesse esse link ( https://conemu.github.io/en/Downloads.html ).

Com o terminal aberto, vá até o diretório que está seu app, no meu caso no (C:\desenvolvimento\workspaces\workspace-sts4\HelloWorldSpringBoot2) e utilize o comando abaixo que acionará o plugin do azure para que ele configure sua app.

mvn azure-webapp:config

Será apresentado a seguinte mensagem:

Escolha as opção 1 ou apenas aperte enter. A seguinte opção é sobre a versão do java, no meu caso é o Java 8, então também pressione enter.

Enfim, a última opção é apenas confirmar as propriedades do nosso webapp.

Voltando para o nosso arquivo pom.xml, é possível identificar algumas mudanças realizadas pelo plugin.

Adicione a tag “<appSettings>” apresentada a seguir dentro da tag “<configuration>” do plugin azure-webapp-maven-plugin para escutar a porta 80.


<appSettings>
          <property>
                <name>JAVA_OPTS</name>
                <value>-Dserver.port=80</value>
          </property>
</appSettings>

Seu pom.xml ficará da seguinte forma:

Deploy da aplicação no Microsoft Azure

Após a preparação da aplicação, bora realizar o deploy do app SpringBoot no Azure? Para isso, abra seu terminal e realize login no Microsoft Azure com o seguinte comando:

az login

Será aberto seu navegador padrão e solicitado login com sua conta do Microsoft Azure conforme imagem abaixo:

Ao efetuar o login com sucesso, é apresentado a seguinte mensagem em seu navegador. Já no terminal é apresentando informações do seu acesso no formato Json.

Após realizar o login, volte ao terminal e utilize o comando abaixo para recompilar o arquivo Jar utilizando o Maven.

mvn clean package

Após o Build ter sido concluído com sucesso, implante seu aplicativo SpringBoot 2 no Azure utilizando o comando maven abaixo:

mvn azure-webapp:deploy

O terminal apresentará a mensagem Build Success, e logo na linha acima podemos notar a frase, “Successfully deployed the artifact to *URL*” . Pode ser que leve alguns minutos para que sua aplicação faça deploy e seja apresentado no portal Azure (https://portal.azure.com/), mas adianto que por aqui foi imediato.

Depois que a aplicação Spring Boot tiver sido implantada, você conseguirá gerenciá-la por meio do portal Azure.

Seu aplicativo Web será listado nos Serviços de Aplicativos conforme imagem abaixo:

A URL para acessar sua aplicação Springboot será apresentada na Visão geral de seu aplicativo Web:

Verifique se a implantação foi bem-sucedida em seu navegador utilizando a URL presente na imagem anterior, acrescentando o path “/hello” ao final. Você verá a seguinte mensagem exibida: 

Bazinga!!! Temos uma aplicação rodando nas nuvens do Microsoft Azure. 

Agora vamos colocar os pés no chão e deletar todos os recursos. De preferencia, caso sua conta como “paga pelo uso” e não queira que sejam gerados custos, mesmo que irrelevantes. No meu caso, devido alguns testes, gerou um custo de apenas 9 centavos como pode ser observado na imagem abaixo:

Desse forma, bora limpar os recursos que não serão mais utilizados.

Limpar os recursos criados

No portal do Microsoft Azure acesse no menu lateral esquerdo ou na tela inicial o “Grupo de recursos”.

Será aberta a seguinte tela, caso necessário utilize o filtro por nome com o prefixo “HelloWorld”.

Selecione o grupo que criamos e pressione “Delete Resource Group”.

Digite o nome do grupo de recursos no campo de texto e pressione Excluir.

Após alguns segundos ou minutos a exclusão total será finalizada.

Como se dizia no jogo Mortal Kombat, Finish Him… rsrssrrs.

Pronto, Grupo de recursos excluindo para sempre.

Epilogo

Subi esse projeto já preparado para o Azure no GitHub no repositório projeto HelloWorldSpringBoot2 mesmo, mas na branch AzureHelloWorld. Acesse aqui.

Quer mais materiais para estudar nessa quarentena?

Caso queira se capacitar de forma gratuita, em alguns posts passados, preparei alguns sites e canais do Youtube que nos ajudam com isso. acesse os links:

*Canais do YouTube para o(a) desenvolvedor(a) Java estudar gratuitamente;

*Sites para o(a) desenvolvedor(a) Java estudar de graça.