Deploy de aplicação Spring Boot utilizando Amazon EC2

Pablo Manoel
Mar 11 · 7 min read

Introdução

Neste artigo mostrarei como realizar o deploy de uma aplicação Java Spring Boot utilizando o serviço Amazon EC2.

Para fins didáticos, usaremos uma aplicação simples disponível no meu repositório no Github que simula um sistema de pizzaria e realiza chamadas REST para buscar uma lista de todas pizzas disponíveis.

O que é AWS?

Segundo o próprio site da AWS, a Amazon Web Services (AWS) é a plataforma de nuvem mais adotada e mais abrangente que no mercado, oferecendo mais de 175 serviços completos de datacenters em todo o mundo. Desde 2006 ela trabalha com serviços de infraestrutura de TI para empresas por meio da computação na nuvem, removendo a responsabilidade da manutenção de infraestrutura em troca de serviços altamente confiáveis nos quais o pagamento é realizado apenas pelo que for utilizado.

O que é Amazon EC2?

Em poucas palavras, o EC2 — Elastic Computing Clouding, é um servidor web, ou seja, é um serviço que disponibiliza recursos computacionais altamente escaláveis em nuvem, como disco, memória e CPU.

Com o EC2 você não precisa se preocupar mais com investimento em hardware, ao invés disso, é necessário apenas indicar quanto recurso será alocado para realizar rapidamente o deploy das suas aplicações.

Criando uma nova instância EC2

Antes de darmos nossos primeiros passos com o EC2, caso você não tenha uma conta criada, é só seguir para página inicial da AWS e realizar seu cadastro. A Amazon oferece gratuidade durante um ano para uso limitado de diversos serviços. Para saber mais, consulte o nível gratuito da AWS.

Feito o cadastro e login, vá até o menu na parte superior da tela, clique em serviços e procure por EC2:

Na página que aparecer em seguida, clique em launch instance:

A AMI — Amazon Machine Image, é a imagem do sistema operacional que será utilizada na sua nova instância e está disponíveis em distribuições Linux e Windows.

No canto esquerdo da tela, selecione a opção Free tier only para que sejam exibidas apenas as imagens de nível gratuitas. No nosso exemplo utilizaremos a Amazon Linux 2:

Nesse passo você escolherá quais as características da máquina virtual que será alocada. Selecione a instância do tipo t2.micro para manter a gratuidade do serviço. Para saber mais sobre este e outros tipos, consulte a seção de tipos de instância oferecidas pela Amazon.

Após escolher o tipo de instância, você poderá pular os passos de configuração de instância, armazenamento e tags (passos 3,4 e 5), mantendo as configurações padrão sugeridas pela AWS, para então chegar na tela de Security Groups.

Security Groups é um conjunto de regras de firewall responsáveis pelo tráfego de dados da sua instância. Para que você possa liberar qualquer tráfego de internet precisará adicionar uma nova regra. Clique em add rule, selecione type “custom TCP Rule”, protocol “TCP”, port range “8080(essa será a porta utilizada pela aplicação) e, em source, selecione a opção “anywhere” para liberar o acesso publico à sua instância.

Nesta parte são apresentadas todas as configurações escolhidas para a criação da máquina virtual, depois de revisar os detalhes, clique em launch no botão inferior esquerdo da tela para terminar a criação da sua máquina EC2.

Nessa última parte será exibida uma tela para criação de um par de chaves SSH.

Acesse sua instância utilizando um par de chaves, formado por uma chave pública e uma privada. Uma ficará no servidor AWS e outra no computador. Quando a conexão para a instância EC2 for requisitada, os dois pares de chaves serão comparados e então o acesso será liberado.

No nosso caso, criaremos um novo par de chaves:

Clique em Download Key Pair para download das chaves e então finalize clicando em launch instances para a criação da sua nova instância.

Acessando a máquina por SSH

Neste tutorial faremos o processo de acesso à nossa instância para usuários Linux e Mac.

Novamente no menu superior da tela pesquise por EC2 para acessar o console do serviço.

Dê um clique sob a sua instância ativa e em seguida selecione a opção connect:

Conforme o guia da AWS, nossa chave local precisa conter uma visibilidade limitada. Para isso, abra seu terminal e vá até o diretório onde se encontra o arquivo contendo as chaves SSH. Uma vez no diretório, execute o comando do 3º item o guia, no meu caso é chmod 400 ec2keypair.pem.

Feito isso, execute o comando dado para conexão, no meu caso é ssh -i “ec2keypair.pem” ec2-user@ec2–54–80–80–12.compute-1.amazonaws.com

Pronto, agora você já está conectado à sua instância EC2! Algo parecido com a imagem abaixo deve ser exibido no seu terminal:

Gerando .jar do projeto e configurando ambiente

Agora que você já tem sua instância EC2 rodando e acessível, vamos deployar nossa aplicação Spring Boot dentro desta instância.

Primeiramente, clone o repositório do projeto para seu diretório local de preferência. Ainda pelo terminal, acesse a raiz do projeto e execute mvn clean install para que o maven gere o jar do projeto contendo todas as dependências:

Após o término da instalação das dependências um arquivo chamado pizzaweb-0.0.1-SNAPSHOT.jar deverá ser criado dentro da pasta target/

Ainda dentro do diretório raiz do projeto, execute o comando:

scp -i <diretorio-chave-ssh>/ec2keypair.pem target/pizzaweb-0.0.1-SNAPSHOT.jar <endereco-instancia-ec2>:~

substituindo <diretorio-chave-ssh> pelo diretório em que se encontra o par de chaves SSH e substituindo <endereco-instancia-ec2> pelo endereço da instancia EC2, disponível no guia de conexão da instância na AWS (imagem abaixo):

Com isso status de upload do jar será exibido no terminal.

Acesse a sua instância do EC2.

Digite ls e você perceberá que seu jar já estará na máquina virtual.

Digite sudo yum update para atualizar a lista de pacotes da distribuição linux.

Digite sudo yum install java-1.8.0 para instalação do java.

Execute o comando java -jar pizzaweb-0.0.1-SNAPSHOT.jar para executar o projeto Java que se iniciará na porta 8080.

Parabéns! Agora sua aplicação já está rodando dentro da instância EC2! Para acessar sua aplicação basta executar uma requisição pelo browser digitando <url-ec2-instance>:8080/pizzaweb/pizzas, substituindo <url-ec2-instance> pelo endereço DNS publico da instância, disponível no guia de conexão da instância na AWS. Com isso você já receberá um JSON contendo uma lista de Pizzas, conforme o esperado pela aplicação.

Conclusão

O intuito deste tutorial é familiarizar o desenvolvimento de soluções utilizando serviços AWS, permitindo que você explore melhor esse novo ambiente. A AWS está presente entre as maiores companhias do mundo e seus serviços são utilizados em diversas empresas que adotam soluções em Nuvem em seus ambientes de desenvolvimento e infraestrutura. No site oficial da AWS há diversos guias para usuários e desenvolvedores, tutoriais e referencias de API de todos os seus serviços disponíveis.

Essa foi a primeira de um série postagens a respeito da AWS. No próximo artigo iremos trabalhar conectando a aplicação Spring Boot em uma instância de banco de dados Amazon RDS. Nos vemos em breve!


Meu nome é Pablo Manoel, sou desenvolvedor backEnd, entusiasta de novas tecnologias e tenho a missão de ser um solucionador de problemas cada vez melhor, conciliando trabalho, saúde e bem estar.


A Mobicare combina os Melhores Talentos, Tecnologias de Ponta, Práticas Agile e DevOps com Capacidades Operacionais avançadas para ajudar Operadoras Telecom e grandes empresas a gerarem novas receitas e a melhorarem a experiência dos seus próprios clientes.

Se você gosta de inovar, trabalhar com tecnologia de ponta e está sempre buscando conhecimento, somos um match perfeito!

Faça parte do nosso time. 😉

mobicareofficial

Se você gosta de inovar, trabalhar com tecnologia de ponta e está sempre buscando conhecimento, somos um match perfeito! Vem trabalhar com a gente 😉 bit.ly/mobicarreiras

Pablo Manoel

Written by

mobicareofficial

Se você gosta de inovar, trabalhar com tecnologia de ponta e está sempre buscando conhecimento, somos um match perfeito! Vem trabalhar com a gente 😉 bit.ly/mobicarreiras

More From Medium

More on AWS from mobicareofficial

More on Development from mobicareofficial

Related reads

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade