Modificar e adicionar serviços a um aplicativo Java no Heroku

Executar seu aplicativo localmente

Com o passar do tempo, qualquer aplicativo que você executa no Heroku requer novos recursos e melhorias. À medida que faz essas mudanças, você precisa poder executar seus processos Java localmente para depurar problemas com facilidade, realizar testes e confirmar que seu aplicativo está funcionando. Nesta unidade, você aprenderá a executar o aplicativo Java de exemplo da mesma maneira que ele é executado na plataforma Heroku. Em seguida, fará alterações no aplicativo em seu ambiente local e as implantará no Heroku.

O Heroku reconhece um aplicativo Java pela existência de um arquivo pom.xml no diretório raiz. Aproveitando seus próprios aplicativos, você pode criar outro usando o comando mvn archetype:create. O aplicativo de demonstração que você implantou já tem um arquivo pom.xml ( veja-o no GitHub). Veja aqui um trecho dele:

<dependencies>    
   <dependency>      
    <groupId>org.springframework.boot</groupId>      
    <artifactId>spring-boot-starter-actuator</artifactId>    
   </dependency>    
   <dependency>      
    <groupId>org.springframework.boot</groupId>      
    <artifactId>spring-boot-starter-web</artifactId>    
   </dependency>    
   ...
</dependencies>

O arquivo pom.xml especifica dependências que devem ser instaladas com seu aplicativo. Quando um aplicativo é implantado, o Heroku lê este arquivo e instala as dependências usando o comando mvnw clean install.

Outro arquivo, system.properties, determina a versão do Java a ser usada (o Heroku é compatível com diversas versões). O conteúdo deste arquivo, que é opcional, é bastante direto:

java.runtime.version=1.8

Execute o comando ./mvnw clean install em seu diretório local pata instalar e executar o Maven (se você estiver usando Windows, deverá usar o comando mvnw.cmd em vez de ./mvnw).

./mvnw clean install

Ele instala as dependências e prepara seu sistema para executar o aplicativo localmente. Observe que este aplicativo requer Java 8, mas você pode desenvolver seus próprios aplicativos usando uma versão diferente do Java.

Agora inicie seu aplicativo localmente usando o comando heroku local, que foi instalado como parte da CLI do Heroku.

heroku local

Saída de exemplo heroku local

Assim como o Heroku na nuvem, o comando heroku local examina o Procfile para definir qual comando executar.

Deixe-o em execução e abra http://localhost:5000 com seu navegador da Web. Você verá seu aplicativo sendo executado localmente.

Para interromper a execução local do aplicativo, volte à sua janela de terminal e pressione Ctrl+C para sair.

Enviar alterações locais por push

Neste passo, você aprenderá a propagar uma alteração local no aplicativo por meio do Heroku. Como exemplo, você modificará o aplicativo para exibir uma nova página HTML.

Modifique o arquivo src/main/java/com/example/Main.java adicionando o seguinte método à classe Main.

@RequestMapping("/hello")
String hello(Map<String, Object> model) {
  model.put("message", "Welcome to my app!");
  return "hello";
}

Em seguida, crie um arquivo src/main/resources/templates/hello.html com os esses conteúdos.

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org" 
th:replace="~{fragments/layout :: layout (~{::body},'hello')}">
<body>  
  <div class="container">    
   <p th:text="${message}"/>  
  </div>
</body>
</html>

Agora, teste localmente executando os seguintes comandos (lembre-se de usar mvnw.cmd se estiver usando Windows).

./mvnw clean install
heroku local web

Acesse o aplicativo em seu navegador na rota /hello em http://localhost:5000/hello. Uma mensagem de boas-vindas será exibida.

Agora, implante essas alterações no Heroku. Quase todas as implantações no Heroku seguem o mesmo padrão.

Primeiro, adicione os arquivos modificados ao seu repositório Git local.

git add .

Em seguida, confirme as alterações no repositório.

git commit -m "Demo"

Envie as alterações por push para o repositório remoto do Heroku do seu aplicativo.

git push heroku master

Por fim, verifique se tudo está funcionando abrindo o aplicativo na rota /hello.

heroku open hello

Você verá em seu navegador da Web o mesmo texto que viu quando o aplicativo estava sendo executado localmente.

Provisionar um complemento

Complementos são serviços em nuvem de terceiros que fornecem serviços adicionais prontos para usar para seu aplicativo, como persistência de registros, monitoramento e muito mais. Seu aplicativo Java vem com um complemento instalado automaticamente: um banco de dados Postgres. Você pode aprender mais sobre como gerenciar seu banco de dados Postgres no Centro de Desenvolvimento Postgres do Heroku. 

Aqui, vamos demonstrar como acrescentar um complemento adicional para registros.

Por padrão, o Heroku armazena 1.500 linhas de registros do seu aplicativo. No entanto, ele disponibiliza o fluxo de registros completo como serviço. Além disso, diversos provedores de complementos possuem serviços de registro por escrito que fornecem recursos como persistência de registros, busca e alertas por email e SMS.

Neste passo, você vai provisionar um desses complementos de registro, Papertrail.

Provisione o complemento de registro papertrail.

heroku addons:create papertrail

Saída do papertrail

Para ajudar a evitar usos indevidos, provisionar um complemento requer uma verificação de conta. Se sua conta não tiver sido verificada, você será direcionado para o site de verificação.

Para ver este complemento específico em ação, acesse a URL do Heroku do seu aplicativo algumas vezes. Cada acesso gera mais mensagens de registro, que agora deverão ser encaminhadas para o complemento papertrail. Acesse o console do papertrail para ver as mensagens de registro.

heroku addons:open papertrail

Seu navegador abrirá um console da Web do Papertrail, que exibirá os eventos de registro mais recentes. A interface permite fazer buscas e configurar alertas.

lista de eventos registrados

Parabéns! Seu aplicativo Java está pronto para produção. 

Clique em Verify Step (Verificar etapa) para concluir o projeto.

Recursos