- O Microsoft Office usou por muito tempo o seu sistema interno de controle de código-fonte, o Source Depot, e depois realizou uma migração em grande escala para o Git para melhorar a experiência dos desenvolvedores e impulsionar a inovação tecnológica
- O Source Depot tinha limitações de produtividade por ser centralizado, ter branching lento e um fluxo de trabalho pouco prático, e a migração para o Git exigiu vários anos de trabalho e centenas de engenheiros
- Durante a migração, a equipe superou grandes desafios técnicos e organizacionais, como o desenvolvimento de novas tecnologias, como o VFS for Git, a adaptação da infraestrutura existente de build/testes e a operação paralela dos dois sistemas
- Para que a transição fosse bem-sucedida, destacou-se uma abordagem colaborativa e centrada nas pessoas, com um sistema de comunicação baseado em "champions", transparência ousada, treinamento prático e estratégia de rollback imediato
- Após a migração, houve resultados positivos como redução no tempo de onboarding, aumento da preferência pelo Git (89%), ganhos de produtividade e importantes lições sobre mudanças tecnológicas em grande escala
Do Source Depot para o Git: a experiência de migração em grande escala do Microsoft Office
Um novo desafio: maximizar a produtividade dos desenvolvedores
- Melhorar a produtividade dos desenvolvedores é um tipo de 'Multiplier work', cujo valor cresce ainda mais em organizações grandes
- O projeto de migração do Microsoft Office do Source Depot para o Git foi um exemplo representativo disso
- Esse trabalho não foi apenas uma troca de ferramenta, mas um grande projeto de longa duração, envolvendo centenas de engenheiros e sistemas complexos
Source Depot: como era o controle de código-fonte naquela época
- No início dos anos 2000, a Microsoft operava o Source Depot, seu sistema próprio de controle de versão baseado na tecnologia Perforce
- O Source Depot tinha limitações de eficiência por conta de branching lento, arquitetura centralizada, longos tempos de checkout de código e um modelo incômodo de merge (Reverse/Forward Integrate)
- Como ele era fortemente acoplado a toda a infraestrutura de desenvolvimento (build, release e workflow), não era possível simplesmente substituí-lo
- A migração do Office para o Git exigiu anos de trabalho e o esforço de centenas de engenheiros
Começando pelo OneNote: o início da migração
- Na organização de engenharia do Office, decidiu-se por uma grande migração para o Git devido ao custo de manutenção e patching do Source Depot e à necessidade de “tecnologia competitiva”
- Como a suíte Office tinha cronogramas de desenvolvimento diferentes conforme o ciclo de lançamento (alguns meses, semestral, mensal e Insider), foi necessário manter por muito tempo uma operação paralela entre Source Depot e Git
- Também surgiram como tarefas essenciais a consistência do controle de versão do Office, a validação dos builds e a adaptação da infraestrutura legada de testes
A escala do Office e a estratégia de comunicação
- Na época, o Office era uma organização gigantesca, com 4.000 engenheiros colaborando
- Cada equipe designou um 'Developer Satisfaction Champion', e foi criado um modelo hub-and-spoke para conectar os times e garantir uma estrutura eficiente de feedback e comunicação
- O autor atuou como champion do OneNote e teve um papel central no campo dessa grande migração
VFS for Git: superando os limites de um codebase gigantesco
- O codebase era tão grande que um único
git clone exigiria mais de 200 GB, então o problema foi resolvido com o Virtual File System for Git (VFS for Git), desenvolvido em conjunto com o GitHub
- O VFS for Git superou as limitações do Git tradicional ao baixar apenas os arquivos realmente usados
- Em colaboração com o Microsoft Windows, foi uma experiência de romper os limites de um dos maiores sistemas de controle de versão da indústria
Abordagem da migração por etapas
Etapa 1: universo paralelo (Parallel Universe)
- Foi criado um serviço de ponte que sincronizava Source Depot e Git em tempo real, e os problemas de inconsistência entre os dois sistemas e de diferenças de modelo (estrutura de branches, changelist etc.) foram sendo melhorados repetidamente
- O processo de sincronização e build dos branches principal/privado do Office foi operado por um sistema automatizado 24/7
- Depois de três tentativas, conseguiu-se implementar um sistema paralelo estável
Etapa 2: validação de equivalência
- Todos os test suites foram executados repetidamente nos dois sistemas para provar que os resultados dos builds eram exatamente iguais
- Diferenças sutis, como estilo de quebra de linha, maiúsculas/minúsculas e formato dos resultados de teste, foram depuradas e resolvidas ao longo de vários meses
- Com o resultado 'Green across the board' (testes aprovados em ambos os sistemas), a equipe ficou pronta para entrar na fase de transição real
Uma abordagem centrada nas pessoas
Comunicação multicanal e repetida
- Para alinhar os cronogramas de mais de 4.000 engenheiros e dezenas de equipes, foi montado um sistema intenso de comunicação com champions em cada time
- Avisos importantes eram repetidos pelo menos 3 vezes (e-mail, Teams, wiki, reuniões etc.) para minimizar confusões
- Quando surgiam problemas, a confiança era mantida por meio de divulgação imediata e transparente das informações
Treinamento e adaptação ao Git
- Para engenheiros acostumados há 10 anos com o Source Depot, foi preparada uma estrutura gradual de aprendizado com ambiente de treinamento prático e guia de comandos para a transição
- Também foi oferecido aprendizado baseado em cenários reais por meio de recursos como uma biblioteca de vídeos voltada à prática
- A iniciativa foi além de reduzir a ansiedade e fortalecer capacidades, apoiando também a adaptação ao workflow existente
Estratégia de rollback e mecanismos de segurança
- Na transição real, foi dado ao Diretor um 'botão vermelho', permitindo rollback imediato a qualquer momento em caso de problema grave
- Parte do histórico antigo do Source Depot foi preservada por muito tempo, mantendo com segurança o histórico de desenvolvimento anterior
Resultados e principais conquistas
- Após a migração, apareceram ganhos de produtividade como redução de 50% no tempo de onboarding, confirmação de 89% de preferência pelo Git, melhora no desempenho de build, maior eficiência em code review e aumento da colaboração
- Os engenheiros avaliaram positivamente o fato de terem adquirido habilidades transferíveis para o restante da indústria
- Também aumentou a capacidade de colocar novos profissionais em atividade mais rapidamente
Lições centrais de uma migração em grande escala
- Para ter sucesso, é preciso investir mais do que o esperado não só nos aspectos técnicos, mas também em comunicação centrada nas pessoas
- Construção de sistema paralelo, prova de equivalência perfeita, desenho claro de rollback desde o início e valorização de pessoas-chave (champions) foram pontos essenciais
- Também é indispensável medir em paralelo indicadores qualitativos, como satisfação, e o senso de estabilidade organizacional e segurança psicológica é importante durante o processo de mudança
- A essência de uma grande transformação é a gestão de mudanças flexível e sistemática em toda a organização
Conclusão e aplicações futuras
- A migração do Office para o Git foi um projeto histórico, realizado com anos de preparação e meses de execução
- No fim, ficou como um caso de mudança organizacional bem-sucedida, garantindo a continuidade do trabalho de milhares de pessoas
- Em outras grandes transformações, como migração para a nuvem, decomposição de arquitetura monolítica e upgrade de frameworks, os mesmos princípios de validação paralela, comunicação repetitiva e rollback rápido também podem ser aplicados
- Embora detalhes técnicos (infraestrutura de build, questões offline/contratuais etc.) não tenham sido abordados adicionalmente, a lição mais importante é a abordagem estratégica e organizacional para mudanças tecnológicas em larga escala
3 comentários
Se você lida muito com arquivos binários, talvez o Git não seja a melhor opção, mas para repositórios centrados em código parece que o Git é suficiente.
Deve ter sido uma grande mudança também internamente na MS, mas acho positivo que, graças a isso, recursos como
partial cloneesparse checkout, além de ferramentas como o Scalar, também tenham sido disponibilizados publicamente para uso rsComentários do Hacker News
stash, stage por hunk e rebase interativo.