← Latest Blog Posts

🎵 Spotify Podcast

A vasta escala de operação do Google – a empresa mais utilizada do mundo, responsável por produtos globais como Search, YouTube, Chrome e Android, usados por 3 a 4 bilhões de pessoas mensalmente – exigiu o desenvolvimento de uma cultura de engenharia e uma infraestrutura tecnológica sem paralelos. Diante de requisitos de velocidade, confiabilidade e volume de dados inéditos, o Google foi forçado a construir seu próprio ecossistema técnico, resultando no que é frequentemente chamado de uma "ilha tecnológica".

Essa verticalização é a característica mais definidora do ambiente de engenharia do Google. Diferentemente da maioria das empresas de tecnologia que adotam ferramentas open source ou soluções comerciais, o Google desenvolveu praticamente todo o seu stack internamente. A filosofia por trás disso era pragmática: na escala do Google, as ferramentas existentes não funcionavam. Eles precisavam de infraestrutura que fosse global desde o primeiro dia, capaz de gerenciar centenas de milhares de máquinas.

No cerne da computação em cluster do Google está o Borg, seu sistema operacional de orquestração interno, que gerencia recursos e aloca trabalhos em centros de dados. O Borg é notório por ser o precursor e inspiração direta para o Kubernetes, que o Google externalizou (adaptou para uso externo) para o Google Cloud Platform (GCP). Essa infraestrutura é executada em servidores de baixo custo, pois a engenharia do Google aceitou o princípio de que, em sua escala, a falha de hardware é inevitável, priorizando a substituição fácil e o tooling robusto sobre máquinas caríssimas.

O gerenciamento de dados e redes também é profundamente customizado. Para comunicação backbone de alta largura de banda entre seus centros de dados, o Google utiliza o B4. O endereçamento de serviços internos é feito pelo Borg Naming Service (BNS), que oferece uma camada de abstração para a alocação dinâmica de trabalhos, substituindo o DNS padrão. O armazenamento massivo é gerido pelo Colossus, que sucedeu o Google File System (GFS). Na camada de banco de dados, existem sistemas customizados como o Bigtable (NoSQL distribuído e esparso) e o Spanner (que oferece consistência transacional global).

O fluxo de trabalho do desenvolvedor é estruturado em torno de um monorepo colossal, que em 2015 já contava com cerca de dois bilhões de linhas de código. Para navegar e modificar esse código, os engenheiros utilizam o Piper (sistema de controle de versão) e o Critique (ferramenta de revisão de código interna, que lida com change lists em vez de pull requests). A compilação é otimizada pelo Blaze (antecessor do Bazel). Muitos engenheiros trabalham remotamente na nuvem (clients in the cloud ou citsy), utilizando o Cider, um fork interno do VS Code, mantendo o código fora das máquinas locais.

Essa excelência em tooling é complementada por uma abordagem sistemática à operação. O Google inventou o papel de Engenheiro de Confiabilidade de Sites (SRE), focado em tornar o on-call menos penoso e mais sustentável do que na maioria das outras empresas. Isso é alcançado, em parte, através do monitoramento de SLOs de Toil (Service Level Objectives para trabalho manual e repetitivo). Se o toil (trabalho de manutenção excessivo) de uma equipe ultrapassar o limite, a equipe é obrigada a parar o desenvolvimento de novas funcionalidades e dedicar tempo para consertar as raízes dos problemas.

Apesar da compensação de topo e dos benefícios lendários, o ambiente exige adaptabilidade extrema (googliness), pois as reorganizações (reorgs) e as migrações de código são frequentes. O ciclo de desempenho e promoção (L3 a L10) é formal e baseado em impacto (sistema Grad), com decisões tomadas por comitês de promoção imparciais. Projetos técnicos só avançam após a aprovação de design docs detalhados, uma prática rigorosa que impõe consenso técnico.

Em última análise, a ilha tecnológica do Google moldou tanto o setor (através de contribuições open source massivas como Kubernetes, TensorFlow e Go) quanto a carreira dos seus engenheiros. Embora forneça um ambiente de ponta para resolver problemas de escala inigualável, a dependência do stack customizado (Borg, Piper, Blaze) significa que as habilidades adquiridas são menos transferíveis para empresas que operam fora desse ecossistema. Trabalhar no Google é, portanto, ingressar em um universo tecnológico singular, com o trade-off de masterizar ferramentas que são, em grande parte, intransparentes para o resto da indústria.