CodeGym /Curso Java /Python SELF PT /Implementação do código no servidor

Implementação do código no servidor

Python SELF PT
Nível 64 , Lição 2
Disponível

3.1 Fazendo mudanças no código

Como eu tinha dito antes, o desenvolvimento de software se resume a fazer pequenas alterações no código. Milhões de programadores estão nesse processo há décadas, o que levou a um refinamento, padronização e formalização cuidadosa em todos os sentidos possíveis.

Para armazenar 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 rastreia todas as mudanças nele e ajuda os programadores a trabalharem juntos em projetos sem atrapalhar uns aos outros.

Com o Git, os desenvolvedores podem criar diferentes versões de um projeto (branches), armazenar um histórico completo de mudanças e até voltar para qualquer momento no passado. É como uma máquina do tempo para o código! O Git ajuda a unir mudanças e resolver conflitos, por isso se tornou a principal ferramenta para trabalho em equipe no desenvolvimento moderno.

3.2 Montando o projeto

Antes de testar ou enviar o projeto para o servidor, ele precisa ser montado.

A montagem de projetos é o processo de compilar o código-fonte do projeto em programas executáveis ou outros formatos que possam ser executados, muitas vezes incluindo testes e implantação. Esse é um aspecto chave do desenvolvimento de software, garantindo que o programa esteja pronto para uso.

Montagem não é apenas compilação, embora a compilação geralmente faça parte do processo de montagem. Depois de terminar a montagem, você pode acabar com dezenas ou até centenas de arquivos que precisam ser enviados para vários servidores.

Os montadores podem ser de baixo nível, como:

Maven e Gradle são amplamente utilizados em projetos Java para gerenciamento de dependências e montagem de projetos.

Apache Ant é outra ferramenta para montagem de projetos em Java, oferece mais flexibilidade na escrita de scripts de montagem.

MSBuild é usado para montagem de projetos criados com Microsoft Visual Studio.

Make é a ferramenta clássica de montagem, utilizando Makefile para definir regras de montagem, especialmente popular em projetos C e C++.

Webpack é frequentemente usado para montagem de aplicativos JavaScript, gerenciando dependências e módulos.

Gulp e Grunt são ferramentas que ajudam a automatizar tarefas que são frequentemente realizadas no desenvolvimento de aplicativos web, como minificação de arquivos e compilação de SCSS para CSS.

Também existem montadores de alto nível. Mais sobre eles a seguir.

3.3 CI/CD

CI/CD (Continuous Integration/Continuous Delivery) é uma metodologia que envolve a integração contínua de mudanças de todos os branches de desenvolvimento no branch principal, além do teste e implementação automáticos dessas mudanças. Isso permite identificar e corrigir erros rapidamente, aumentando a eficiência e velocidade do desenvolvimento.

Um dos sistemas CI/CD mais comuns, embora um pouco ultrapassado, é o Jenkins. Se você trabalha numa empresa pequena, há 80% de chance de estar usando ele.

Jenkins é um sistema de automação popular, usado para integração e entrega contínuas (CI/CD). Jenkins permite automatizar várias etapas do desenvolvimento de software, incluindo montagem, testes e implementação, o que melhora a qualidade do código e acelera o processo de desenvolvimento.

Se você estiver em uma empresa grande, pode haver mais 5 opções para escolher:

TeamCity é um potente sistema comercial da JetBrains. Oferece integração profunda com diversos ambientes de desenvolvimento e teste.

GitLab CI é parte integrada do GitLab, oferecendo integração e entrega contínuas com possibilidade de configuração via arquivos YAML.

CircleCI é um serviço em nuvem CI/CD, suporta automação de teste e implementação para vários projetos.

Travis CI foi um dos primeiros serviços CI em nuvem, usado em muitos projetos de código aberto. Integra-se bem com o GitHub.

Bamboo é um produto da Atlassian, integra-se estreitamente com outras ferramentas da empresa, como Jira e Bitbucket.

Conhecê-los e saber trabalhar com eles não é necessário – geralmente na empresa há especialistas DevOps que configuram todos esses processos. Você só precisa saber que eles existem e entender do que se trata quando alguém menciona Jenkins, CI/CD ou “continuous integration”.

3.4 Entregando o projeto no servidor

Não basta escrever o projeto – ele precisa chegar ao seu servidor. Em geral, a implantação (deploy) do projeto no servidor é o processo de colocar e ativar um aplicativo web no servidor de forma que ele esteja disponível aos usuários pela internet.

Este processo inclui a transferência de arquivos do projeto para o servidor, configuração do ambiente do servidor, bancos de dados, dependências, assim como a configuração das definições de rede e segurança.

E você acha que seu código chega ao servidor como? Alguém vai enviá-lo para lá? Ou, talvez, você se conecte via SSH ao servidor remoto, envie alguns arquivos para lá e configure tudo? Relaxa: ninguém faz mais isso. Agora tem o Docker.

Docker é uma plataforma para desenvolvimento, entrega e execução de aplicativos com o uso de contêineres. Docker simplifica a criação, implementação e execução de aplicativos, empacotando-os junto com todas as dependências e ambiente em um único objeto compacto. Isso garante consistência do ambiente em todas as etapas: do desenvolvimento ao teste e produção.

Docker permite empacotar seu projeto ou projetos em um contêiner Docker. É tipo uma máquina virtual.

E embora em qualquer fórum sobre Docker você seja bombardeado se chamar de "máquina virtual", é possível pensar no contêiner do Docker justamente como uma máquina virtual. Só que muito mais leve.

Basicamente, um contêiner Docker é uma "máquina virtual" virtual. Máquinas virtuais incluem uma cópia completa do sistema operacional, kernel do SO e hardware virtual, enquanto contêineres Docker compartilham o kernel do host e podem ser mais leves e rápidos.

Implementar um projeto com Docker simplifica muito o processo, proporcionando rapidez e confiabilidade. O projeto é empacotado em contêineres Docker, que podem ser facilmente movidos e executados em qualquer sistema que suporte Docker.

Isso elimina problemas relacionados a diferenças nos ambientes de servidor e permite facilmente escalar o aplicativo, adicionando ou removendo contêineres de acordo com a carga. Todo mundo mudou para Docker – é muito conveniente e muito simples.

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION