Nesse artigo vamos falar um pouco sobre o histórico do versionamento, e como a criação do git pela comunidade Linux ajudou em muito a propagar esse conceito que hoje trabalha desde códigos até projetos de criptomoedas.

O pai ta on!!
O versionamento é um conceito old-school, que engloba desde atualização de kernels (como veremos hoje) até a forma com que estamos mais habituados hoje, com versionamento de códigos.

Nesse artigo vamos falar um pouco sobre o histórico do versionamento, e como a criação do git pela comunidade Linux ajudou em muito a propagar esse conceito que hoje trabalha desde códigos até projetos de criptomoedas.


Histórico

Não é segredo para ninguém que o kernel do Linux é ‘opensource’ ou ‘código aberto’. Isso significa que qualquer pessoa pode abrir o código e fazer alterações nele, e até sugerir na comunidade melhorias nos códigos já existentes. Para isso é utilizado um sistema de versionamento de códigos.

Durante muito tempo (mais de 10 anos) as mudanças do código fonte do kernel eram compartilhadas via comunidade em forma de correção, contudo em 2002 o Linux iniciou a entrada em versionamento distribuído com a solução BitKeeper. A solução permaneceu no kernel por pouco tempo (até 2005), quando a empresa decidiu torná-la paga, o que a inviabilizou para o projeto.

Assim Linux Torvalds e a comunidade iniciaram o desenvolvimento da sua própria solução de versionamento distribuído, com o foco em tudo que estavam precisando: velocidade, simplicidade, e sobretudo desenvolvimento paralelo. Foi então que nasceu o GIT.


A importância do GIT

Note que versionamento como o CVS, SVN e etc já existiu muito antes do git, contudo o fato dele ser o padrão dentro de sistemas Linux, o fez ganhar uma força de aderência/aceitação da comunidade muito grande.

Adicione isso ao fato de que agora desenvolvedores e usuários do mundo todo poderiam sugerir de maneira rápida e simples alterações dentro do código, e que os contribuidores (moderadores) poderiam aceitar ou não essa alteração, só fez a ferramenta ganhar mais aceitação e admiração.

Limitações de velocidade e gerenciamento que o SVN possuía, (e nem vou entrar nos contras do CVS…) foram sanadas no GIT, e os benefícios ainda incluíam suporte a outros sistemas como Unix e Windows.

O ponto mais importante do GIT é o fato dele não possuir um ‘servidor centralizado’, ou seja, não há necessidade de se trabalhar com sincronia total com um servidor. Você simplesmente ‘baixa’ a versão atual do desenvolvimento principal, e inicia a sua própria linha de desenvolvimento. Quando todas as suas alterações estiverem concluídas, simplesmente envia essas alterações para fazer a junção (merge) com a linha principal:


Git e a comunidade Cripto

Percebeu que o git tem uma semelhança grande com a base de todas as criptomoedas: a blockchain.

Conceitualmente, uma blockchain é uma cadeia de blocos, onde cada bloco tem um dado, um hash, e o hash anterior, e para um bloco ser aceito dentro da cadeia é necessário que no mínimo 51% de toda a rede o aceite utilizando algoritmos de consenso (assunto para outro post).

Já no Git, não existe essa necessidade de verificação, qualquer pessoa que alterar o projeto pode dar um commit na linha master. Adicionado a isso é totalmente possível você reescrever o histórico no git com um –force, o que dentro de uma blockchain (séria) é praticamente impossível.

Contudo o importante aqui não é falar sobre as diferenças entre eles, e sim como um ajudou (e muito) o outro a crescer. Mesmo em cripto com poucas alterações como o bitcoin, sem um sistema distribuído de compartilhamento de códigos, seria muito difícil chegar aonde chegou, uma vez que as interações se limitariam os desenvolvedores.

Agora em criptos onde as alterações são mais frequentes como no ethereum, sobretudo agora com o advento do The Merge, as interações de códigos, e até os forks para testes em ‘cópias’ dos projetos seria impossível.

That’s all folks! Be Happy!!!

foto-thiago-marques

Thiago Marques
Technical Account Manager
thiago.marques@darede.com.br

Technical Account Manager da Darede, formato em Rede de Computadores, e pós graduado em Segurança da Informação. Possui ampla experiência em Datacenters e Service Providers, além de ser um entusiasta em DevOps e mercado financeiro.

OUTRAS PUBLICAÇÕES

Arquitetura Docker

Por Thiago Marques O pai ta on!! Até agora entendemos o que é um container, como o Docker funciona sob esse modelo e como utilizar o Docker Compose para auxiliar a criação de várias máquinas. Mas conforme vamos nos aprofundando surgem novas dúvidas, como: • Beleza, mas como tudo isso funciona? • Como o Docker controla e gerencia os containers? • Existe licenciamento para utilizar? Nesse post iremos detalhar um pouco mais sobre o conceito da plataforma para entender tudo isso. A Arquitetura Docker Fonte Docker Client / Remote API Quando estamos logados em um terminal e executamos comandos como docker ps, docker images e etc, utilizamos o command line interface (CLI) do docker, de forma que, nessas condições, podemos dizer que nosso terminal é um docker client. Assim conseguimos interagir com o daemon que está no host para nos trazer informações dos containers, das imagens e etc. Além do cliente, é possível interagir também via remote API. Quanto utilizamos o docker em uma máquina diferente do Jenkins, por exemplo, precisamos efetuar a configuração de um remote API para o deploy de um build funcionar. Note que para instalação do cliente/server em uma instância Amazon Linux 2, é necessário instalar via amazon-linux-extras. A AWS já possui uma excelente documentação de como fazer isso basta acessar o link: How-to-install-docker-Amazon-Linux Docker daemon / runtimes Depois da versão 1.11 do Docker (que até então era um grande monolítico), ele passou a segmentar em daemons as operações, sendo: • dockerd ficou responsável por receber e interpretar os comandos e APIs do cliente; • containerd ficou com o trabalho mais ‘pesado’ de controlar as imagens e containers, e executar os processos do runC; • runC que é quem de fato lida com o gerenciamento dos containers. Note que com a segmentação e a disponibilização dos códigos, podem existir outros runtimes para essas funções, como é o caso do CRI-O, que é uma alternativa ao containerd, ou o CRUN e o RAILCAR que são alternativas ao runC. NaAWS os runtimes utilizados pelo Fargate são o containerd e o runC. Fonte: Docker Docker Registry Finalizando a parte de arquitetura temos os Registries, que são os repositórios de onde é possível realizar o download/upload dos docker images. Veja na imagem inicial desse post que quando fazemos o primeiro pull (docker pull ) o processo seguido é: Nesse caso (apenas o pull) o containerd se registra no repositório, procura a imagem, e faz seu download para o repositório local. O runC não entra no processo ainda, pois não estamos de fato criando um container, apenas baixando a imagem. A vantagem de ter um repositório central, além de te poupar espaço, é que ele pode garantir outras características como: • Ter um repositório privado; • Possibilidade de utilizar SSO e colaboração; • Acesso a imagens oficiais; • Scan de vulnerabilidades para as imagens; • Integração com CI/CDs. Atualmente o Docker Hub, é o repositório mais utilizado, no qual você pode realizar o push (enviar) ou o pull (receber) as imagens, e possui a versão paga e gratuita. Obviamente na versão gratuita você tem alguns limites, como o bloqueio de 100 pulls por 6horas (veja os limites aqui) A AWS possui a sua própria solução de registry chamada ECR, o que se mostra ser eficiente para integração de serviços como o ECS e o Fargate. Contudo soluções como o Harbor, para IaaS também pode ser uma saída interessante caso você utiliza pull de forma constante. That’s all folks! Be Happy!!! Veja os outros artigos sobre Docker! Entendendo Docker Docker Compose

Amazon Q

Amazon Q

A tecnologia de inteligência artificial está evoluindo e o Amazon Q Service é uma resposta a essa revolução que impacta a tecnologia e aprimora seu nível. Quer descobrir como funciona? Conheça as contribuições incríveis da inteligência artificial com o Amazon Q neste artigo!

Entendendo Docker

O Docker é uma das melhores plataformas para o deploy de uma aplicação. Para entender sua funcionalidade, confira esse artigo em nosso blog!

Nós usamos cookies para garantir e oferecer a melhor experiência de navegação em nosso site! Mais informações