Pular para o conteúdo

Agilidade e DevOps

  • por
Agilidade e DevOps

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:

  1. Instale o Heroku CLI em sua máquina local.
  2. Crie um novo diretório para o seu aplicativo e navegue até ele.
  3. Inicialize um novo projeto Node.js executando npm init -y.
  4. 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}/);
});

  1. Crie um arquivo Procfile na raiz do seu projeto com o seguinte conteúdo:makefileweb: node index.js
  2. Inicialize um repositório Git no seu projeto e faça o commit dos arquivos.
  3. Crie um novo aplicativo no Heroku executando heroku create.
  4. Faça o push do seu código para o Heroku executando git push heroku master.
  5. 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.