Sistemas para controle de versões – centralizado versus distribuído

Neste artigo serão apresentados e comparados os dois principais tipos de sistemas para controle de versões. Caso você não saiba o que é um sistema para controle de versões, veja neste artigo.
Sistemas para controle de versões podem ser classificados em dois tipos – centralizado e distribuído. Ambos possuem repositórios e áreas de trabalho, a principal diferença está em como cada um é arranjado.
 
graphicImagemSoly
 
Figura 1- Exemplo de trabalho colaborativo.
 

Sistema centralizado (SC)

 
Este tipo de sistema trabalha apenas com um servidor central e diversas áreas de trabalho, uma para cada desenvolvedor. Para que um desenvolvedor consiga visualizar ou compartilhar seu trabalho com um colega, o fluxo de dados precisa passar obrigatoriamente pelo repositório central.
 
O sistema centralizado oferece muitas vantagens, principalmente quando comparado a um sistema manual para controle do projeto. Além de possuir controle total sobre as contribuições realizadas, o responsável por este tipo de sistema consegue administrá-lo mais facilmente do que controlar manualmente cada atualização feita por cada desenvolvedor presente na equipe do projeto.
 
Todavia, esta configuração possui desvantagens. A mais crítica é o ponto único de falha que o servidor centralizado representa para todo o sistema. Se o servidor que abriga o repositório ficar indisponível durante um período, ninguém poderá acessar as alterações feitas nos períodos anteriores. Ou seja, não será possível acessar prováveis incrementos no projeto realizados por outros colaboradores. Em contrapartida, é um sistema de controle de versões de fácil aprendizado em relação a outros sistemas.
 
graphicmodelo centralizado
Figura 2 – Diagrama de blocos de um sistema de controle de versões centralizado.
 

Sistema Distribuído (SD)

 
Com o sistema distribuído, os desenvolvedores do projeto não dependem primordialmente do repositório remoto, pois não fazem apenas cópias das últimas versões dos arquivos, e sim cópias completas do repositório! Assim, qualquer um dos desenvolvedores poderá possuir uma cópia completa do repositório e/ou ramificação do projeto em sua máquina local, aumentando a redundância do sistema ao eliminar o ponto singular de falha presente no sistema centralizado e possibilitando a colaboração e manutenção do fluxo de projeto.
 
Uma das diferenças destaque do sistema distribuído é a possibilidade de as áreas de trabalho poderem se comunicar entre si. Pode-se utilizar um servidor remoto para centralizar o fluxo. É um sistema interessante para equipes grandes, melhorando o trabalho com grandes grupos de pessoas simultaneamente no mesmo projeto. Embora vantajosos e flexíveis, sistemas distribuídos são mais complexos e não são imunes a falhas.
graphicModeloDistribuida
Figura 3 – Diagrama de blocos de um sistema de controle de versões .
 

Conclusão

 
Ambos os tipos de sistemas para controle de versões são úteis e se destacam quando comparados a um controle manual do projeto. O sistema centralizado conta com um servidor e vários clientes, compondo um modelo de rede conhecido como estrela. Já o sistema distribuído permite que os usuários tenham múltiplos repositórios locais ao invés de apenas um repositório remoto central. Neste sistema, o acesso a rede só é necessário quando deseja-se publicar as alterações ou verificar mudanças realizadas por outros usuários. A tabela abaixo resume as principais diferenças entre os tipos de sistemas de controle de versões mostrados neste artigo.
 
Tabela 1. Síntese comparativa entre SC e SD.
Tabela
 
 

Referências:

[5] SC x SD