loading...
Cover image for Deploy de uma aplicação Java reativa (Pokedéx) na Microsoft Azure + CosmosDB ✨
WoMakersCode

Deploy de uma aplicação Java reativa (Pokedéx) na Microsoft Azure + CosmosDB ✨

anabneri profile image Ana Beatriz ・7 min read

Olá galera, no artigo de hoje vamos fazer deploy no Azure, a nuvem da microsoft, e usar a API do CosmosDB para colocar nosso banco de dados MongoDB Atlas.

Você pode acompanhar aqui no dev.to da Womakerscode o processo de construção da Rest API reativa usando WebFlux, este artigo pode ser tanto um complemento quanto um aprendizado, onde iremos fazer deploy numa nuvem diferente, então bora lá! ʕ•́ᴥ•̀ʔっ

Repositório da aplicação: https://bit.ly/pokedex-azure
Link a API publicada: https://restapipokedex-1587755576956.azurewebsites.net/pokedex

Pré Requesitos

Para poder fazer o deploy eis aqui alguns pré requesitos que você precisa ter

  • Azure CLI
  • Uma conta gratuita no Portal Azure
  • Uma conta gratuita no MongoDB Atlas
  • Uma aplicação com Webflux, se quiser usar a que fizemos no último artigo pode usar :D

Durante o tutorial vou usar uma aplicação WebFlux pokedéx que construi com os dados salvos no mongoDB Atlas

Setting up the project

Caso sua aplicação não use o MongoDB Atlas, sem problemas, acesse a apresentação onde eu ensino passo a passo de como criar um banco de dados no mongo Atlas de como colocar ele na sua aplicação Java WebFLux

PARA VIZUALIZAR CLIQUE AQUI

Ou você pode assistir a live da Womakerscode onde eu e a Kamila explicamos tudinho, e eu ensino um passo a passo de como colocar o MongoDB Atlas na sua aplicação Java Webflux

lembre-se de colocar o IP adress para qualquer localização como na imagem abaixo, senão sua aplicação local não sobe
aba de network access do mongodb atlas

Criando um banco Cosmos DB

Vamos entrar no portal Azure, e buscar por "CosmosDB"

painel do portal azure

Clique em Azure CosmosDB, agora na página vamos clicar em Add + para adicionar um novo banco de dados, como na imagem abaixo

painel do cosmos db

Vamos adicionar as informações do nosso banco de dados, para isso especifique as seguintes informações:

  • Assinatura: especifique a assinatura do Azure para usar.
  • Grupo de recursos: especifique se deseja criar um novo grupo de recursos ou escolher um grupo de recursos existente.
  • Nome da conta: Escolha um nome exclusivo para sua conta do Cosmos DB. Ele será usado para criar um nome de domínio totalmente qualificado, como wingtiptoysmongodb.documents.azure.com.
  • API: Especifique Azure Cosmos DB for MongoDB API para este tutorial.
  • Localização: especifique a região geográfica mais próxima do banco de dados.

Vale lembrar que eu tenho uma conta pay-as-you-go no Azure então minha assinatura esta com essa opção, mas isso nao interfere em nada, pois estou no período gratuito utilizando os mesmos recursos que você com a conta gratuita vai usar

Minhas informações ficaram assim:

informações de assinatura do cosmos

Agora vamos clicar em Review + create e nos será gerado uma página de revisão das informações que colocamos, se tudo estiver certinho só finalizar clicando em create e esperar um minutos que nosso banco de dados ComosDB estará sendo finalizado.

Se seu recurso subiu com êxito a seguinte mensagem vai aparecer:
mensagem de êxito ao criar o banco de dados

Agora só clicar em Go to recurse para acessarmos esse recurso

Configurando o MongoDB com a API do CosmosDB

Aparecerá uma tela com diversas formas de conexão com o MongoDB, como no nosso caso é uma aplicação Java, vamos nessa janela e copiar a second connection string que foi gerada..

Sugiro Copiar e colar num bloco de notas pois vamos usá-la mais tarde

Copie a connection String conforme a imagem, e lembre-se se usar a Second Connection String:
connection string

Volte pro projeto Spring e vá até o applicarion.properties, nele é onde fica nossas configurações de banco de dados.

Basta substituir a string de conexão que está lá com o link do mongoDB para essa nova String

spring.data.mongodb.database=wingtiptoysmongodb
spring.data.mongodb.uri=mongodb://wingtiptoysmongodb:AbCdEfGhIjKlMnOpQrStUvWxYz==@wingtiptoysmongodb.documents.azure.com:10255/?ssl=true&replicaSet=globaldb


`

Show!

Só que este comando esta com informações genéricas, devemos colocar as informações que o Azure CosmosDB nos deu, para isso volte na secodn connection string que deixamos guarado e substuitua no código, ficará da seguinte forma:

`

spring.data.mongodb.database=pokedex-demo
spring.data.mongodb.uri=mongodb://pokedex-demo:crbTRtSMrZ8ymwK6zg0hpxfVQFjJ62wrOISTopZd5pElCeeyIEVZGP9enmlzmZP2JcYcV835YoJl1oE6UfoPOg==@pokedex-demo.mongo.cosmos.azure.com:10255/?ssl=true&replicaSet=globaldb&retrywrites=false&maxIdleTimeMS=120000&appName=@pokedex-demo@


`

Agora para saber se a aplicação foi criada, precisamos testar, para isso inicie sua aplicação no método main();

Testando a aplicação local

Vamos testar nossos endpoints para saber se esta tudo ok
Eu vou utlilizar o postman mas você pode usar o Web client API que quiser!

Perceba que testando a requisição Get, não me retorna nada, isso por que nosso banco de dados está vazio:
teste no postamn da requisição GET, está retornando vazia

Para ter algo salvo, eu vou inserir pelo postman mesmo com a requisição POST > body > raw > JSON, vou inserir o Bulbassauro

`

{
    "nome": "Bulbassauro"
}

Se funcionou você tem seu banco conectado o/, siginifica que estamos prontos pro deploy

Deploy na plataforma Azure

No arquivo pom.xml da sua aplicação insira o plugin do Azure

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


`
E importe as mudanças

Agora abre um terminal e localize a pasta onde está salvo seu projeto, para locar no azure com o comando mvn azure-webapp:config

Espere alguns segundo para seja realizado o deploy, vai aparecer mensagens para definirmos valores para nossa aplicação, vamos usar as que o azure nos entrega por padrão, sendo assim nossa resposta é a seguinte:

sucesso de construção

As configurações serão salvas no arquivo pom.xml

Caso você queira mudar as confirgurações rode o comando mvn azure-webapp:config novamente

Configurando a porta

No mesmo arquivo pom.xml vamos definir a porta que nossa aplicação vai subir, para isso vá ate a tag e cole o seguinte comando:

`

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


`

Subindo a aplicação

Depois de todas as confirgurações realizadas, vamos fazer login no portal azure com o comando az login

Selecione sua conta, e volte para o terminal

conta microsoft

Deve retornar esta mensagem no terminal

mensagem com as credenciais da conta na plataforma azure

Se tudo deu certo, utilize o comando mvn clean package , para limpar todas as suas dependências e realizar o building no Maven, a mensagem de Build Success aparecerá conforme a imagem:

mensagem que de sucesso ao realizar o comando de maven clean package

...

AGORA BORA PRO DEPLOY

Para realizar definitivamente o deploy utilize o comando mvn azure-webapp:deploy

Agora é só esperar alguns minutinhos até nossa aplicação subir
vídeo de um personagem esperando

Se tudo ocorreu certinho, obtivemos sucesso no deploy, e no seu terminal terá um link na nuvem que você poderá acessar:
sucesso no deploy

No meu caso esse foi o link que gerou: https://restapipokedex-1587755576956.azurewebsites.net

Vou acessar esse link, e colar no postman para testar os endpoints, usando https://restapipokedex-1587755576956.azurewebsites.net/pokedex

postman com o link que o azure me gerou

Teste todos os enpoints, o que insere (POST), o que exclui (DELETE), se divirta pois seu deploy foi com sucesso!!! (•◡•) /

Você pode ver detalhes da sua aplicação acessando o portal o azure > App Services e selecionar o seu, sua visão será como esta imagem:

portal azure com o caminho dito acima

Você pode acessar seus recursos por esse painel e também acessar a URI que sua aplicação tem agora!

...

Conclusão

A microsoft é uma empresa gigante com várias funcionalidades, e quando estamos falando de Java essas funcionalidades aumentam, quando pensei em colocar minha Rest API na nuvem fiquei pensando em diversos serviços que poderiam me auxiliar, e para um ínicio achei que o Azure foi demais.
Eu já tive contato com o Azure na faculdade, principalmente publicando webapps, só que eu fazia pelo github (se vocês quiserem posso fazer uma artigo sobre isso também), mas por linha de comando é tão íncrivel quanto!

...
Espero que vocês tenham gostado, e que possamos nos ver mais vezes aqui no dev.to da comunidade Womakerscode!
Me sigam nas redes sociais https://twitter.com/anabneri

...

Referências
Canal da Michelli Brito DIVA
Artigo do Blog Dev Java
Documentação da Microsoft

thank you next, gif do videoclip da ariana grande

Posted on by:

anabneri profile

Ana Beatriz

@anabneri

Software Engineer, Java Full Stack Developer, Tech Speaker and Comunity Co-Organizer

WoMakersCode

WoMakersCode’s mission is empower women in technology, creating meetups and workshops designed to help you achieve new hard (technical) and soft skills and take the next step in your carrer.

Discussion

pic
Editor guide