Como o grupo de infraestrutura impele o futuro de tudo o que fazemos na Roblox

  • Nosso Grupo de Infraestrutura projeta, constrói e opera os sistemas subjacentes de armazenamento, computação, rede, segurança e produtividade de engenharia que sustentam a plataforma Roblox.

  • Os sistemas operam em grande escala, dando suporte a 77,7 milhões* de usuários ativos diários, exabytes de conteúdo entregue e mais de 250 milhões de conexões simultâneas, tudo ao longo de mais de 135 mil servidores.

  • Tudo o que o grupo faz é para maximizar a confiabilidade e a eficiência dos nossos sistemas e para ajudar nossos desenvolvedores a serem produtivos.

A cada segundo de cada dia, engenheiros de produtos na Roblox podem aproveitar mais de 2.000 serviços na nossa infraestrutura global interna de nuvem. Nossa plataforma dá suporte a milhões de gravação e leitura, lida com terabytes de fluxo de dados e processa dezenas de milhões de solicitações HTTP. Quando nossos 77,7 milhões* de usuários ativos diários acessam a Roblox, eles o fazem por mais de 250 milhões de conexões simultâneas.

Tudo isso é a escala dos sistemas tecnológicos da Roblox e o domínio do nosso Grupo de Infraestrutura. Conhecidos como Infra, eles projetam, constroem e operam os sistemas de armazenamento, computação, rede, segurança e produtividade de engenharia, além de nossas centrais de dados. O objetivo do Infra é fornecer sistemas escalonáveis, confiáveis e intuitivos. Acima de tudo, o grupo foca em três métricas fundamentais:

  • Disponibilidade: a confiabilidade dos sistemas

  • Custo de servir: a eficiência dos sistemas

  • Produtividade: quão produtivos eles permitem que sejam os engenheiros da Roblox que desenvolvem por cima da infraestrutura

Como diz o líder do grupo Infra, o vice-presidente de engenharia Max Ross: "Tudo o que fazemos busca melhorar uma ou uma combinação dessas três coisas: disponibilidade, custo de servir e produtividade."

Resolvendo novos problemas todos os dias

Quando mais de um milhão de usuários participa de uma experiência popular na Roblox depois de uma grande atualização, um fenômeno conhecido como o problema thundering herd no jargão de tecnologia, nossos criadores podem ficar tranquilos. É porque o trabalho do Infra é garantir que engenheiros de produtos na Roblox possam construir uma plataforma que ofereça uma experiência estável e excepcional. Para isso, o Infra lida com sistemas complexos e resolve problemas inéditos todos os dias.

Por quê? É porque não estamos conectando dezenas de milhões de usuários a um local centralizado de processamento de transações, que é um problema já bem conhecido. Não: estamos conectando-os uns aos outros em tempo real, globalmente. Dito tudo isso, os milhares de serviços do Infra rodam em mais de 135 mil servidores em duas centrais de dados principais, várias centrais de dados secundárias ao redor do mundo e alguns provedores públicos de serviços de nuvem.

Disponibilidade: a confiabilidade dos sistemas

Um dos principais fatores no sucesso do nosso negócio é o tempo gasto pelos usuários na Roblox, e sabemos que existe uma relação direta entre infraestrutura estável e o usuário ficar por mais tempo.

Queremos 99,99% de tempo de atividade todo mês, ou seja, nossos sistemas não podem obstruir mais do que 0,01% de horas de engajamento E os nossos engenheiros de produtos esperam que nossa infraestrutura interna da nuvem funcione pelo menos tão bem quanto qualquer nuvem pública. "Nossa infraestrutura deve rodar o mais suavemente possível", segundo o diretor técnico Danny Yuan, "para que outros engenheiros possam desenvolver produtos que agradem nossos usuários."

Uma das formas como estamos trabalhando nisso é implementando observabilidade e conectividade de rede a aplicações que suportam as experiências da Roblox. Estamos implementando Envoy proxy a cada instância de serviço e experimentando com eBPF para observar o estado subjacente das conexões entre proxies e serviços externos. Isso nos ajuda a entender e, mais importante, reduzir as perdas de pacotes, explica o diretor técnico Rob Cameron.

O apagão de Halloween

Muitos dos esforços de confiabilidade da Infraestrutura vêm do que aprendemos durante nosso grande apagão de 73 horas em 2021. Aquele momento, anos atrás, acabou sendo um momento determinante na nossa abordagem para construir infraestrutura resiliente e nossa necessidade de planejar tanto para o curto quanto para o longo prazo. "Foi um momento de 'parem as prensas'", diz Ross. "A única coisa em que podíamos pensar até garantir a todos na Roblox que isso jamais se repetiria."

De um único monólito de Infraestrutura a 34 células

Custo de servir (eficiência)

Ultimamente, empresas de tecnologia raramente constroem sua própria estrutura de nuvem, já que provedores públicos de nuvem oferecem ferramentas essenciais, como redes, gerenciamento de frota e por aí vai.

Mas, com as nossas dimensões e nossa natureza descentralizada, é mais eficiente para nós manter uma nuvem particular. Estamos sempre identificando e superando os desafios resultantes de manter sistemas complexos assim por conta própria.

Para garantir a economia de custo, temos que pensar bem no design do nosso sistema. Nossa nuvem particular global exige atenção constante em relação a eficiência, para que possamos investir mais em apoiar nossa comunidade de criadores e usuários.

Estamos trabalhando para facilitar que nossos engenheiros de produtos construam funcionalidades que sirvam em grande escala. Ao mesmo tempo, estamos inventando aparatos de produção simplificada que permitem a uma equipe pequena operar infraestrutura colossal. "Gente fora da Infra pode nem sempre saber", diz o diretor técnico Michael Wolf, "que estamos reinventando quase toda parte da nossa infraestrutura."

Ou seja, evoluir de uma configuração bare-metal para uma arquitetura baseada em Linux, em contêineres, com um plano de controle comum a centrais de dados essenciais e marginais. Como resultado, engenheiros da Roblox sempre poderão utilizar um repositório enorme e inédito de ferramentas de software com código aberto. E assim será mais fácil rodar simultaneamente várias cargas de trabalho nas mesmas máquinas.

"Não temos medo de enfrentar grandes desafios", segundo o diretor técnico Andy Wilcox, referindo-se à transição recente da Infra para novas pilhas de telemetria, computação e implementação. "São coisas fundamentais que pudemos resolver como uma organização de engenharia com um apetite por desafios."

Não vai acontecer de uma hora para a outra. Levará anos, já que não dá só para reiniciar a Roblox. As máquinas têm que continuar funcionando. Isso exige um processo manual de reescrever software e adaptá-lo a novas ferramentas. "É como trocar os pneus de um carro", diz Wolf, "enquanto você dirige na rodovia."

Produtividade

Todos os dias, nossa equipe de engenharia enfrenta grandes problemas em grande escala, com eficiência, e aproveita ao máximo os nossos sistemas.

Por isso, estamos sempre coletando dados quantitativos e qualitativos sobre a produtividade dos engenheiros. Isso ajuda a identificar gargalos que podemos melhorar com soluções de terceiros ou nossas ferramentas feitas sob medida.

Por exemplo, temos o painel lançado em março que resolve alguns problemas dos engenheiros com o nosso processo de análise de código. A ferramenta ajuda engenheiros a acompanhar PRs que exigem sua análise com base em vários critérios que nós definimos. Ela também unifica tarefas de análise de código e permite notificações de cronograma. Desde que o painel foi adotado, o tempo de P75 PR a mesclagem diminuiu em 30%.

E, claro, a principal vantagem de produtividade da engenharia é uma infraestrutura estável e escalonável na qual podemos construir, então estamos sempre investindo nos nossos sistemas de baixo nível.

Isso reflete dois dos principais valores da Roblox: Pensar no longo prazo e fazer acontecer. Como um grupo de infraestrutura com foco no cliente, somos pragmáticos quando o assunto é fazer nossos clientes terem mais sucesso e potencial de produção. Se eles precisarem de algo que não oferecemos como serviço, podemos pensar em integrar soluções de terceiros junto com as nossas ferramentas internas em nossa nuvem particular.

Mas, embora soluções de curto prazo sejam tentadoras, elas devem ser equilibradas com uma engenharia que foca no longo prazo.

Assim, maximizar a produtividade ajuda a empresa enquanto nos permite executar projetos para atingir fins comerciais.

Uma cultura que encoraja exploração

Como planejamos conectar um bilhão de pessoas com civilidade e segurança, sempre haverá desafios técnicos importantes a resolver. Já resolvemos vários e aprendemos muita coisa. Mas estamos sempre pensando na infraestrutura escalonável enquanto trabalhamos para diminuir nossa complexidade.

Essas duas metas sem dúvida nos darão inúmeras novas lições nos anos futuros, ainda mais conforme aumentamos o trabalho com IA. E temos certeza de que conquistar nossas metas quer dizer que os sistemas de infraestrutura precisarão evoluir consideravelmente ao longo do tempo

Para engenheiros do Infra, cada projeto é um potencial ponto de transformação para a empresa, e o trabalho de todos é importante. "O Infra é uma organização onde se pode fazer um ótimo trabalho que faz toda a diferença para a Roblox e nossos usuários", diz Wolf, "e nada está fora de cogitação."

Mentalidade focada no cliente

No fim das contas, nosso trabalho é ajudar outros engenheiros a serem mais eficazes, hoje no futuro, focando em aprender lições rápidas entregando soluções derivadas delas.

Estamos encarando esse desafio de frente. "Quero garantir que estejamos sempre entregando algo de valor para a empresa, hoje, no trimestre e no ano", diz Ross. "Também quero garantir que estejamos construindo um alicerce que vai nos deixar em uma boa situação pelos próximos 5 a 10 anos."

* Contando 3 meses terminando em 31 de março de 2024