No curso da Alura foram abordados diversos tópicos relacionados ao desenvolvimento ágil de software. O processo de onboarding em uma empresa foi discutido, incluindo a familiarização com a cultura, pessoas e times. Em seguida, foi explorada a prática de desenvolvimento em um projeto específico, incluindo a clonagem de um repositório do GitHub e a análise do código fonte.
Uma parte crucial foi a introdução ao uso do Trello como ferramenta de gerenciamento de projetos baseada no quadro Kanban. O progresso das tarefas foi acompanhado, movendo-as entre as listas “Doing”, “In Review” e “Done”. Também foi mencionada a possibilidade de realizar reuniões diárias ou semanais para atualizar o quadro e identificar possíveis gargalos no processo.
Na parte prática do curso, foram implementadas funcionalidades em um projeto Java utilizando Spring Boot e Maven, seguindo as boas práticas do time e escrevendo testes automatizados usando JUnit e Spring Boot. Em seguida, foi abordada a infraestrutura da aplicação, incluindo o uso de containers com Docker e a criação de um Dockerfile para gerar a imagem Docker da aplicação.
Também foi discutida a automatização do fluxo de trabalho, com a criação de tarefas no Makefile para a criação de containers, execução de testes e realização de deploy. O deploy foi realizado no Heroku, um ambiente de nuvem, e aprendeu-se a configurar a aplicação para ser “deployada” no Heroku usando Docker.
Por fim, foram explorados os conceitos de integração contínua (CI) e deploy contínuo (CD) utilizando o Travis. Foi ensinado a configurar o Travis para executar testes automatizados sempre que houver um push de commits no GitHub. Em caso de erros, o time seria notificado, e em caso de sucesso, o deploy seria realizado automaticamente. O objetivo final foi fornecer uma visão geral do trabalho em um ambiente ágil, incluindo a colaboração entre as pessoas, a implementação de funcionalidades e a entrega automatizada do software.
Maven (Build):
- O Maven é uma ferramenta de automação de compilação usada principalmente para projetos Java. Ele gerencia dependências, compilação, teste e empacotamento de aplicativos.
- Exemplo: Um arquivo
pom.xml
define as configurações do projeto, incluindo dependências e plugins. O Maven compilará o código-fonte e criará o arquivo JAR ou WAR.
Docker:
O Docker é uma plataforma de software que permite a criação, implantação e execução de aplicativos em contêineres. Ele isola os aplicativos de seu ambiente, facilitando a implantação consistente em diferentes sistemas.
Exemplo: Um desenvolvedor pode criar um contêiner Docker para seu aplicativo Java e implantá-lo em diferentes sistemas operacionais sem se preocupar com as diferenças de configuração.
Dockerfile:
Um Dockerfile é um arquivo de texto usado para definir os passos necessários para criar uma imagem Docker. Ele inclui instruções para configurar o ambiente do contêiner e implantar o aplicativo.
Exemplo:
FROM openjdk:11
COPY . /app
WORKDIR /app
RUN mvn clean package
CMD [“java”, “-jar”, “app.jar”]
Docker Compose:
O Docker Compose é uma ferramenta para definir e executar aplicativos Docker multi-contêiner com facilidade. Ele usa um arquivo YAML para configurar os serviços do aplicativo e suas dependências.
Exemplo: Um arquivo docker-compose.yml
define serviços, redes e volumes para um aplicativo de microserviços.yaml
version: ‘3’
services:
web:
build: .
ports:
– “8080:8080”
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: example
Make (Makefile):
O Make é uma ferramenta de automação de compilação que permite definir e executar tarefas complexas com facilidade. O Makefile contém regras que especificam como os arquivos devem ser compilados e vinculados.
Exemplo: Um arquivo Makefile define regras para compilar e vincular um programa C.Makefile
CC = gcc
CFLAGS = -Wall -g
all: hello
hello: hello.o
$(CC) $(CFLAGS) -o hello hello.o
hello.o: hello.c
$(CC) $(CFLAGS) -c hello.c
clean:
rm -f hello hello.o
Essas ferramentas são amplamente utilizadas no desenvolvimento de software para automatizar processos e facilitar a criação, implantação e manutenção de aplicativos.
Heroku
O Heroku é uma plataforma em nuvem que permite aos desenvolvedores criar, implantar, gerenciar e dimensionar aplicativos facilmente. Ele oferece suporte a várias linguagens de programação, como Node.js, Ruby, Python, Java, PHP e Go, e integra-se a muitos serviços populares, como bancos de dados, ferramentas de monitoramento e sistemas de gerenciamento de filas.
Uma das principais vantagens do Heroku é sua facilidade de uso. Com apenas alguns comandos da linha de comando, os desenvolvedores podem implantar seus aplicativos em minutos, sem se preocupar com a infraestrutura subjacente. Além disso, o Heroku oferece escalabilidade automática, o que significa que os aplicativos podem lidar com picos de tráfego sem intervenção manual.
Outra característica importante do Heroku é sua integração contínua e implantação contínua (CI/CD). Os desenvolvedores podem conectar seus repositórios Git ao Heroku e configurar pipelines de CI/CD para automatizar o processo de compilação, teste e implantação de seus aplicativos.
Um exemplo simples de uso do Heroku seria implantar um aplicativo da web Node.js. Aqui está um exemplo de como fazer isso:
- Instale o Heroku CLI em sua máquina local.
- Crie um novo diretório para o seu aplicativo e navegue até ele.
- Inicialize um novo projeto Node.js executando
npm init -y
. - Crie um arquivo
index.js
com o seguinte conteúdo:
const http = require(‘http’);
const hostname = ‘0.0.0.0’;
const port = process.env.PORT || 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader(‘Content-Type’, ‘text/plain’);
res.end(‘Hello, World!\n’);
});
server.listen(port, hostname, () => {
console.log(Server running at http://${hostname}:${port}/
);
});
- Crie um arquivo
Procfile
na raiz do seu projeto com o seguinte conteúdo:makefileweb: node index.js
- Inicialize um repositório Git no seu projeto e faça o commit dos arquivos.
- Crie um novo aplicativo no Heroku executando
heroku create
. - Faça o push do seu código para o Heroku executando
git push heroku master
. - Visite o URL do seu aplicativo implantado para ver o resultado.
Com esses passos simples, você pode implantar um aplicativo Node.js no Heroku e acessá-lo pela Internet.