Aula 07 - Implantação de Software
Como implantar aplicações usando Heroku e mais alguns tópicos especiais
Implantação
O processo de implantação de software corresponde à todas as atividades realizadas para a sua efetiva utilização pelos usuários finais desde a liberação de uma versão até o seu desativamento.
O processo de implantação (também chamado de deploy) possui ao menos as seguintes fases:
- Lançamento
- Instalação
- Ativação
- Desativação
- Desinstalação
- Atualização
A maioria dessas fases se repetem diversas vezes (como a atualização) durante o ciclo de vida de uma aplicação.
No desenvolvimento, o processo de implantação geralmente envolve a construção (build) do código-fonte e sua instalação em um servidor web para que possa ser devidamente acessado pelos usuários.
Implantação Web
Heroku é uma Plataforma como Serviço (PaaS - Plataform as a Service) que suporta a implantação de aplicações nas mais variadas plataformas e linguagens de programação. Através do Heroku é possível hospedar um container de aplicação com a possibilidade de escalar em diversos servidores.
O Heroku usa um servidor git para gerenciar as requisições do usuário. Todos os serviços hospedados são feitos sobre a Amazon EC2.
Para realizar uma implantação com o Heroku, vamos precisar das seguintes ferramentas:
Configurando Heroku CLI
Para verificar se o heroku foi instalado corretamente, acesse o bash/console do seu sistema e digite:
heroku --version
O resultado deve ser parecido com isso:
heroku/7.0.0 (darwin-x64) node-v8.0.0Em seguida, realize o login pela linha de comando. Certifique-se de criar a conta no site do Heroku
heroku login
Windows:
- Faça o download do instalador para windows no [site](https://gitforwindows.org/) do Git.
- Prossiga com a instalação nas opções padrão. Para usuários avançados, há a possibilidade de alterar algumas opções.
- Inicie um Git Bash, recém instalado.
- Execute os seguintes comandos:
$ git config --global user.name "Alan Turing" $ git config --global user.email "alan@turing.com"
GNU/Linux:
- Instale o git a partir do repositório de sua distribuição (ex.: em distribuições debian):
$ sudo apt-get update $ sudo apt-get install git - Prossiga com a instalação nas opções padrão. Para usuários avançados, há a possibilidade de alterar algumas opções.
- Inicie um Git Bash, recém instalado.
- Execute os seguintes comandos a partir do bash:
$ git config --global user.name "Alan Turing" $ git config --global user.email "alan@turing.com"
Os comandos acima configuram o nome e conta de email do usuário que fara contribuições na máquina. Caso compartilhe a máquina com outros usuários, realize a configuração por repositório digitando o mesmo comando sem a opção --global dentro da pasta do repositorio.
Antes de mais nada, vamos criar uma novação aplicação pela interface web do Heroku. Acesse https://dashboard.heroku.com/ e crie uma nova aplicação pelo menu New >> Create new app

Depois de criada a página para a aplicação, vamos precisar verificar se o heroku será capaz de iniciar a aplicação automaticamente.
Primeiro, vamos verificar se a aplicação possui o arquivo package.json, que é criado automaticamente quando usamos o comando npm start. Verifique se o arquivo possui configurado um script start, como no exemplo abaixo:
{
"name": "meuProjeto",
"version": "1.0.0",
"description": "",
"main": "index.js",
"dependencies": {
"level": "^5.0.1",
"request": "^2.88.0"
},
"devDependencies": {},
"scripts": {
"start": "node index.js"
},
"author": "",
"license": "ISC"
}
Em seguida, vamos alterar a função listen da nossa aplicação para permitir que o heroku defina sua própria porta para a execução da aplicação:
const PORT = process.env.PORT || 8080
app.listen(PORT, function () {
console.log('Listening');
})
Repare que o uso de process.env.PORT é necessário para que a aplicação use a porta definida nas variáveis de ambiente antes de forçar o uso da porta 8080.
Com Heroku CLI e a aplicação Node configurados, vamos finalizar a implantação com os seguintes passos:
- Criar um repositório git (caso não esteja criado)
- Adicionar endereço do projeto no heroku
- Adicionar o arquivo .gitignore
- Realizar um commit
- Enviar as alterações
Criando um repositório Git
No seu cliente bash/console, navegue até a pasta raiz do seu projeto. (Ex.: cd c://Users/ppw/Documents/MeuProjetoAbsurdo)
Em seguida, certificando-se de estar dentro da pasta raiz do projeto, digite o comando:
git init
Esse comando inicializa o versionamento do projeto com a ferramenta Git.
Adicionando endereço do projeto no heroku
Para vincular o seu projeto ao endereço remoto do heroku, vamos procurar o comando correto na página inicial do projeto e digitá-lo no bash. Ele geralmente será algo como heroku git:remote -a nome_do_projeto

Adicionando o arquivo .gitignore
O arquivo .gitignore na raiz do projeto funciona como um filtro que impede que arquivos não desejados sejam commitados no repositório Git. Para facilitar, vamos criar esse arquivo na raiz do projeto (nomeando-o simplesmente de .gitignore). O conteúdo pode ser copiado deste site, que já garante uma lista de arquivos indesejados como bibliotecas externas, logs, temporários, entre outros.
Realizar um commit (para atualizações, inicie daqui!)
Este passo deve ser realizado sempre que fizermos alterações no código do projeto. Na raiz do projeto, vamos usar o comando:
git add .
Este comando adiciona no índice todas as alterações no código do projeto. Em seguida, vamos commitar usando o comando:
git commit -m "Coloque aqui uma mensagem"
É importante adicionar na mensagem o próposito da alteração, como por exemplo Adiciona novo endpoint ou Altera função de cadastro dos usuários
Por fim, vamos enviar as alterações ao heroku, será responsável por colocar a aplicação no ar, usando o comando:
git push heroku master
Se tudo correr bem, o site estará disponível ao final da execução do comando e poderá ser acessado a partir do endereço https://nome-do-projeto.herokuapp.com
Se o resultado não for o esperado, repita os passos e verifique novamente por algum indício de erro.
Mão na Massa
Crie uma aplicação usando Node e Express que seja capaz de gerar um objeto aleatoriamente seguindo as seguintes especificações:
- Esse objeto deve representar algum recurso fictício (ex.: ator, filme, jogo, personagem...)
- Cada objeto deve conter pelo menos 5 atributos diferentes (ex.: nome, idade, altura, nacionalidade, tamanho...).
- Cada atributo deve possuir pelo menos 3 tipos de valores possíveis (Ex.: Nacionalidade - Brasileiro, Peruano e Japonês)
- Entre os atributos deve haver pelo menos um valor
number, um valorstringe um valorboolean - O endpoint para acessar o recurso deve ser
/api/nome_do_recurso(Ex.: http://app/api/planetas
Além disso, a aplicação também deve ter um segundo endpoint chamado /api/info, que deve retornar um objeto contendo as informações do estudante, como no exemplo:
{
"nome": "Ramon Venson",
"disciplina": "PPW II"
}
Para esse exercício, a postagem será feita apenas com o endereço da aplicação no Heroku (ou outro local, caso não queiram usar o heroku)
Obs.: Não é necessário inserir no objeto o nome verdadeiro. Para aqueles que quiserem omitir o nome por brincadeira ou por privacidade, podem usar um nome fictício desde que possua nome e sobrenome