Conectores Spring Cloud e Heroku
1. Visão geral
Neste artigo, vamos cobrir a configuração de um aplicativo Spring Boot no Heroku usando Spring Cloud Connectors.
Heroku is a service that provides hosting for web services. Além disso, eles fornecem uma grande seleção de serviços de terceiros, chamados de complementos, que fornecem tudo, desde o monitoramento do sistema até o armazenamento do banco de dados.
Além de tudo isso, eles têm um pipeline de CI / CD personalizado que se integra perfeitamente ao Git, que acelera o desenvolvimento da produção.
Spring supports Heroku through it’s Spring Cloud Connectors library. Usaremos isso para configurar uma fonte de dados PostgreSQL em nosso aplicativo automaticamente.
Vamos começar a escrever o aplicativo.
2. Serviço Spring Boot Book
Primeiro, vamos criara new simple Spring Boot service.
3. Heroku Inscreva-se
Now, we need to sign up for a Heroku account. Vamos paraheroku.com e clique no botão de inscrição no canto superior direito da página.
Agora que temos uma conta, precisamos obter a ferramenta CLI. Precisamos navegar até a página de instalaçãoheroku-cli e instalar este software. Isso nos dará as ferramentas necessárias para concluir este tutorial.
4. Criar aplicativo Heroku
Agora que temos a CLI do Heroku, vamos voltar ao nosso aplicativo.
4.1. Inicializar repositório Git
Heroku funciona melhor ao usar git como nosso controle de origem.
Vamos começar indo para a raiz do nosso aplicativo, o mesmo diretório do nosso arquivopom.xml, e executando o comandogit init para criar um repositório git. Em seguida, executegit add . egit commit -m “first commit”.
Agora temos nosso aplicativo salvo em nosso repositório git local.
4.2. Provisionar Heroku Web App
A seguir, vamos usar a CLI do Heroku para provisionar um servidor da web em nossa conta.
Primeiro, precisamos autenticar nossa conta Heroku. From the command line run heroku login and follow the instructions for logging in and creating an SSH key.
Em seguida, executeheroku create. Isso provisionará o servidor da Web e adicionará um repositório remoto ao qual podemos enviar o código para implantações. Também veremos um domínio impresso no console, copie este domínio para que possamos acessá-lo mais tarde.
4.3. Empurre o código para o Heroku
Agora vamos usar o git para enviar nosso código para o novo repositório Heroku.
Execute o comandogit push heroku master para enviar nosso código ao Heroku.
Na saída do console, devemos ver logs indicando que o upload foi bem-sucedido, e o sistema fará o download de quaisquer dependências, compilará o aplicativo, executará testes (se houver) e implantará o aplicativo se tudo correr bem.
É isso aí: agora temos nosso aplicativo implantado publicamente em um servidor da web.
5. Teste na memória no Heroku
Vamos verificar se nosso aplicativo está funcionando. Usando o domínio de nossa etapa de criação, vamos testar nosso aplicativo ativo.
Vamos emitir algumas solicitações HTTP:
POST https://{heroku-domain}/books HTTP
{"author":"example","title":"Spring Boot on Heroku"}
Devemos voltar:
{
"title": "Spring Boot on Heroku",
"author": "example"
}
Agora vamos tentar ler o objeto que acabamos de criar:
GET https://{heroku-domain}/books/1 HTTP
Isso deve retornar:
{
"id": 1,
"title": "Spring Boot on Heroku",
"author": "example"
}
Tudo isso parece bom, mas na produção, devemos usar um armazenamento de dados permanente.
Vejamos como provisionar um banco de dados PostgreSQL e configurar nosso aplicativo Spring para usá-lo.
6. Adicionando PostgreSQL
Para adicionar o banco de dados PostgreSQL, execute este comandoheroku addons:create heroku-postgresql:hobby-dev
Isso fornecerá um banco de dados para o servidor da Web e adicionará uma variável de ambiente que fornece as informações de conexão.
Spring Cloud Connector is configured to detect this variable and set up the data source automatically dado que o Spring pode detectar que queremos usar o PostgreSQL.
Para informar ao Spring Boot que estamos usando PostgreSQL, precisamos fazer duas alterações.
Primeiro, precisamos adicionar uma dependência para incluir os drivers do PostgreSQL:
org.postgresql
postgresql
9.4-1201-jdbc4
A seguir, vamos adicionar propriedades para que os conectores Spring Data possam configurar o banco de dados de acordo com seus recursos disponíveis.
Emsrc/main/resources, crie um arquivo application.properties e adicione as seguintes propriedades:
spring.datasource.driverClassName=org.postgresql.Driver
spring.datasource.maxActive=10
spring.datasource.maxIdle=5
spring.datasource.minIdle=2
spring.datasource.initialSize=5
spring.datasource.removeAbandoned=true
spring.jpa.hibernate.ddl-auto=create
Isso agrupará nossas conexões de banco de dados e limitará as conexões de nosso aplicativo. Heroku limits the number of active connections in a development tier database to 10e definimos nosso máximo para 10. Além disso, definimos a propriedadehibernate.ddl para criar de modo que nossa tabela de livros seja criada automaticamente.
Finalmente, confirme essas alterações e executegit push heroku master. Isso enviará essas alterações para o nosso aplicativo Heroku. Após o início do aplicativo, tente executar os testes da seção anterior.
A última coisa que precisamos fazer é alterar a configuração de ddl. Vamos atualizar esse valor também:
spring.jpa.hibernate.ddl-auto=update
Isso instruirá o aplicativo a atualizar o esquema quando forem feitas alterações na entidade quando o aplicativo for reiniciado. Confirme e envie essa alteração como antes para que as alterações sejam enviadas ao nosso aplicativo Heroku.
Não precisamos escrever uma integração de fonte de dados personalizada para nada disso. Isso ocorre porque o Spring Cloud Connectors detecta que estamos executando com Heroku e usando PostgreSQL - e conecta automaticamente a fonte de dados Heroku.
5. Conclusão
Agora, temos um aplicativo Spring Boot em execução no Heroku.
Acima de tudo, a simplicidade de passar de uma única idéia para um aplicativo em execução torna o Heroku uma maneira sólida de implantar.
Para saber mais sobre o Heroku e todas as ferramentas que ele oferece, podemos ler mais emheroku.com.
Como sempre, trechos de código podem ser encontradosover on GitHub.