1. Fazendo alterações no código
Como já mencionei antes, o desenvolvimento de software basicamente consiste em fazer pequenas mudanças no código. Milhões de programadores fazem isso há décadas, o que levou a uma grande padronização, testes e formalizações de várias formas.
Para guardar o código, existe um programa especial – Git. Git é um sistema de controle de versão distribuído. Ele não só armazena o código, mas também acompanha todas as mudanças nele e ajuda os programadores a trabalharem juntos nos projetos, sem atrapalhar um ao outro 🤝.
Com o Git, os desenvolvedores podem criar diferentes versões do projeto (branches), guardar toda a história de mudanças e até voltar a qualquer ponto do passado. É como uma máquina do tempo para o código! O Git ajuda a juntar mudanças e resolver conflitos, por isso virou a principal ferramenta para trabalho em equipe na dev moderna. 👩💻
2. Compilando o projeto
Antes de testar ou fazer o upload do projeto pro servidor, ele precisa ser compilado.
🏗️ Compilar projetos é o processo de transformar o código fonte em programas executáveis ou outros formatos que podem rodar, muitas vezes incluindo testes e deployment. É uma etapa essencial no desenvolvimento de software, garantindo que o programa esteja pronto pra uso.
Compilar não é só transformar o código, embora a compilação seja uma parte importante do processo. Depois de compilar, você pode acabar com dezenas ou até centenas de arquivos que precisam ser enviados para diferentes servidores.
Os compiladores podem ser de baixo nível, como:
- ☕ Maven e Gradle – muito usados em projetos Java pra gerenciar dependências e fazer build.
- 🐜 Apache Ant – outra ferramenta de build pra projetos Java, que dá bastante flexibilidade na criação de scripts de build.
- 🖥️ MSBuild – usado pra compilar projetos feitos com Visual Studio da Microsoft.
- ⚙️ Make – ferramenta clássica de build, que usa Makefile pra definir regras de compilação, muito popular em projetos C e C++.
- 🌐 Webpack – muito usado pra montar aplicações JavaScript, gerenciando dependências e módulos.
- 📜 Gulp e Grunt – ferramentas que ajudam a automatizar tarefas comuns no desenvolvimento web, como minificação de arquivos e compilação de SCSS em CSS.
Também existem compiladores de alto nível. Sobre eles, vamos falar mais abaixo.
3. CI/CD
🔄 CI/CD (Continuous Integration/Continuous Delivery) é uma metodologia que faz a integração contínua das mudanças de todas as branches no branch principal, além de testar e fazer deploy automático dessas mudanças. Isso ajuda a encontrar e corrigir bugs rapidinho, aumentando a eficiência e velocidade do desenvolvimento.
Um dos sistemas de CI/CD mais usados, embora um pouco antigo, é o Jenkins. Se você trabalha em uma empresa pequena, tem 80% de chance de usarem ele.
🤖 Jenkins é uma ferramenta automatizada popular pra integração contínua e entrega contínua (CI/CD). Ele permite automatizar várias etapas do desenvolvimento, como build, testes e deploy, melhorando a qualidade do código e acelerando o processo.
Se você entrar numa empresa grande, pode ter mais umas 5 opções:
- 🚦 TeamCity – sistema comercial forte da JetBrains. Tem integração profunda com várias IDEs e ferramentas de teste.
- 📝 GitLab CI – integrado ao GitLab, faz CI/CD com configuração via YAML.
- ☁️ CircleCI – serviço de CI/CD na nuvem, que automatiza testes e deploys pra vários projetos.
- 🦑 Travis CI – um dos primeiros serviços de CI na nuvem, muito usado em projetos open source. Se integra bem com GitHub.
- 🎍 Bamboo – da Atlassian, integra bem com Jira e Bitbucket.
Você não precisa saber usar todos eles – geralmente, os DevOps da equipe cuidam disso. Só é importante saber que eles existem e entender o que significa Jenkins, CI/CD ou “continuous integration” quando alguém falar.
4. Deploy do projeto no servidor
Não basta só escrever o projeto – ele precisa estar no seu servidor também. Basicamente, deploy (ou deployment) é o processo de colocar e ativar seu app na máquina, deixando ele acessível pros usuários via internet 🚚.
Esse processo inclui copiar os arquivos do projeto pro servidor, configurar o ambiente, banco de dados, dependências, além de ajustar as configurações de rede e segurança 😅.
E aí, seu código vai parar no servidor? Alguém vai fazer o upload? Ou você vai conectar por SSH, subir alguns arquivos e configurar tudo? Relaxa: não é mais assim que a galera faz. Agora tem Docker.
🐳 Docker é uma plataforma pra desenvolver, entregar e rodar aplicações usando containers. Docker facilita criar, fazer deploy e rodar apps, empacotando tudo que eles precisam — dependências e ambiente — em um pacote compacto. Assim, o ambiente fica igual em qualquer etapa: do desenvolvimento até produção.
Docker permite colocar seu projeto ou vários projetos em Docker containers. É tipo uma máquina virtual.
E mesmo que em fóruns de Docker você leve umas broncas se chamar ele de “máquina virtual”, dá pra pensar nele assim mesmo: um “máquina virtual” mais leve, bem mais fácil de usar.
Na real, Docker container é uma espécie de “máquina virtual”. Máquinas virtuais têm uma cópia completa do sistema operacional, kernel e hardware virtualizado, enquanto containers compartilham o kernel do host e são mais leves e rápidos ⚡.
Fazer deploy com Docker simplifica muito o processo, deixando tudo mais rápido e confiável. Seu projeto fica empacotado em containers Docker, que podem ser movidos e rodados em qualquer sistema que suporte Docker 🚢.
Isso evita problemas com diferenças entre ambientes de servidor e facilita escalar a aplicação, adicionando ou removendo containers conforme a demanda. Todo mundo tá usando Docker — é muito prático e fácil.
GO TO FULL VERSION