Já foi falado em artigos anteriores como “a importância do aprendizado organizacional”, ou seja, a disseminação do conhecimento entre os colaboradores, é uma tarefa chave para a evolução da organização. Tendo isso em vista, é lógico inferir que ter um repositório único de código fonte é uma poderosa ferramenta alavancadora de aprendizagem para que novos aprendizados e melhorias descobertas sejam capturados e compartilhados globalmente em toda a organização, multiplicando o efeito do conhecimento e aprimoramento globais.
Portanto, essa ferramenta, compartilhada com toda a empresa, é um dos mecanismos mais poderosos usados para integrar descobertas locais em toda a organização.
Repositório único de código fonte
Repositório único de código fonte

Quando algo no repositório único de código fonte é atualizado, (por exemplo, uma biblioteca compartilhada), a atualização se propaga rápida e automaticamente para todos os outros serviços que usam desse código fonte, integrando-se ao pipeline de implantação de cada equipe. Um dos resultados valiosos disso é que os engenheiros podem aproveitar a experiência diversificada de todos na organização. Outra vantagem é que os usuários podem acessar facilmente todo o código em sua forma mais atualizada, sem a necessidade de coordenação.
Exemplo
Um dos maiores exemplos de uso de um repositório único de código fonte compartilhado em toda a organizaçãoé o Google. Em 2015, a empresa tinha um único repositório de código-fonte compartilhado com mais de um bilhão de arquivos e mais de dois bilhões de linhas de código. Este repositório era usado por todos os seus 25 mil engenheiros e abrangia todas as propriedades do Google, incluindo Pesquisa no Google, Google Maps, Google Docs, Google+, Google Agenda, Gmail e YouTube.
Coloca-se no repositório único de código-fonte compartilhado não apenas o código fonte, mas também outros artefatos que codificam conhecimento e aprendizado, incluindo:
- Padrões de configuração para bibliotecas, infraestrutura e ambientes (receitas de chefs, manifestos de Puppet, e etc.)
- Ferramentas de implantação.
- Testes padrões e ferramentas, incluindo segurança.
- Ferramentas de pipeline de implantação.
- Ferramentas de monitoramento e análise.
- Tutoriais e padrões.
Importância do repositório único de código
Codificar o conhecimento e compartilhá-lo através deste repositório único de código fonte é um dos mecanismos mais poderosos que temos para propagar o conhecimento.
Como Randy Shoup descreve: “O mecanismo mais poderoso para evitar falhas no Google é o repositório de código único. Sempre que alguém faz check-in de alguma coisa no repositório, isso resulta em uma nova compilação, que sempre usa a versão mais recente de tudo.
Tudo é construído a partir da fonte em vez de vinculado dinamicamente no tempo de execução – sempre há uma versão única de uma biblioteca que é a atual em uso, que é a que fica vinculada estaticamente durante o processo de construção.”
Em um exemplo prático, todas as bibliotecas do Google (por exemplo, libc, OpenSSL, bem como bibliotecas desenvolvidas internamente, como bibliotecas Java threading) têm um proprietário responsável por garantir que a biblioteca não apenas compile, mas que também passe com êxito nos testes de todos os projetos que dependem de um bibliotecário do mundo real.
Esse proprietário também é responsável pela migração de cada projeto de uma versão para a próxima.
Em suma, se não formos capazes de criar tudo a partir de uma única árvore de código-fonte, precisamos encontrar outro meio de manter boas versões conhecidas das bibliotecas e suas dependências. Por exemplo, podemos ter um repositório para toda a organização, como Nexus, Artifactory, ou um repositório Debian ou RPM, que devemos atualizar em partes que houver vulnerabilidades conhecidas, nesses repositórios e nos sistemas de produção.
“Você pode escrever uma ferramenta exatamente uma vez e usá-la em todos os projetos. Você tem um conhecimento 100% preciso de quem depende de uma biblioteca; portanto, você pode refatorá-lo e ter 100% de certeza de quem será afetado e quem precisa testar a quebra. Eu provavelmente poderia listar mais cem exemplos. Não consigo expressar em palavras qual é a vantagem competitiva para o Google.” Tom Limoncelli
Tendo em base essa citação, infere-se que quando compartilha-se bibliotecas que serão usadas em toda a organização, deve-se permitir a rápida propagação de conhecimentos e melhorias.
Newsletter HNZ
Quer receber TODOS os artigos e vídeos que a HNZ posta sobre o tema? Não perca tempo, se cadastre na nossa newsletter! Clique aqui, faça a sua inscrição e tenha acesso a conteúdos ricos toda semana