Incidente · Staff
Google Cloud jun/2025: ponteiro nulo replicado globalmente via Spanner
Incidente real. Pontos centrais: deploy progressivo e controle de sobrecarga.
Resposta curta
Incidente real. Pontos centrais: deploy progressivo e controle de sobrecarga. As APIs do Google e do Google Cloud são servidas por planos de gerenciamento e controle distribuídos por região. Eles garantem que cada requisição seja autorizada e passe pelas checagens de política e cota. O binário central desse sistema de verificação chama-se Service Control.
01 · CONTEXTO
Uma checagem no caminho de toda requisição
As APIs do Google e do Google Cloud são servidas por planos de gerenciamento e controle distribuídos por região. Eles garantem que cada requisição seja autorizada e passe pelas checagens de política e cota. O binário central desse sistema de verificação chama-se Service Control.
O Service Control é um serviço regional e lê informações de cota e política de um datastore regional. Os metadados desse datastore são replicados quase instantaneamente pelo mundo para gerenciar as políticas de cota do Google Cloud e dos clientes.
A requisição de API passa pelo plano de gerenciamento, que a submete às checagens de política e cota do Service Control.
O Service Control é regional e lê as informações de cota e política do datastore regional.
Os metadados do datastore são replicados quase instantaneamente para as outras regiões.
02 · A MUDANÇA LATENTE
Um caminho de código que ninguém exercitou
Em 29 de maio de 2025, uma nova funcionalidade foi adicionada ao Service Control para checagens adicionais de política de cota.
A mudança passou pelo lançamento região a região, mas o caminho de código que falhou nunca foi exercitado nesse lançamento, porque exigia uma mudança de política para acioná-lo.
Como precaução, a mudança veio com um botão vermelho para desligar aquele caminho de serviço de política. Mas ela não tinha tratamento de erro adequado nem proteção por feature flag, e, sem o tratamento de erro, o ponteiro nulo derrubou o binário.
Segundo o relatório, feature flags servem para habilitar a funcionalidade gradualmente, região por região e projeto por projeto, começando por projetos internos, para pegar problemas. Com proteção por flag, o problema teria sido pego em staging.
| O que existia | O que o relatório diz | |
|---|---|---|
| Lançamento região a região | A mudança passou por ele | O caminho que falhou nunca foi exercitado nesse lançamento |
| Feature flag | A mudança não estava protegida por flag | Com proteção por flag, o problema teria sido pego em staging |
| Tratamento de erro | Não era adequado | O ponteiro nulo derrubou o binário |
| Botão vermelho | Veio junto com a mudança | Servia para desligar aquele caminho de serviço de política |
03 · 12 DE JUNHO
Dados em branco, replicados para o mundo
Em 12 de junho de 2025, por volta das 10h45 PDT, uma mudança de política foi inserida nas tabelas Spanner regionais que o Service Control usa para políticas. Pela natureza global da gestão de cota, esses metadados foram replicados globalmente em segundos. Os dados da política continham campos em branco não intencionais.
O Service Control puxou os campos em branco e exercitou o caminho de código com o ponteiro nulo, o que levou os binários a um crash loop. Isso ocorreu globalmente, porque cada implantação regional foi afetada.
O resultado foi um aumento de erros 503 em requisições externas de API de produtos do Google Cloud, do Google Workspace e do Google Security Operations.
Uma mudança de política é inserida nas tabelas Spanner regionais. Os dados da política trazem campos em branco não intencionais.
Como a gestão de cota é global, os metadados são replicados para as demais regiões em segundos.
Em cada região, o Service Control puxa os campos em branco e aciona o caminho de código com o ponteiro nulo; os binários entram em crash loop.
As requisições externas de API passam a receber mais erros de servidor.
04 · RESPOSTA E RECUPERAÇÃO
O botão vermelho e o efeito manada
| Marco descrito no relatório | Prazo |
|---|---|
| Equipe de SRE fazendo a triagem | Em até 2 minutos |
| Causa raiz identificada e botão vermelho sendo posto em prática | Em até 10 minutos |
| Botão vermelho pronto para implantação | Cerca de 25 minutos após o início |
| Implantação do botão vermelho concluída e recuperação começando pelas regiões menores | Em até 40 minutos |
| Resolução completa em us-central-1 | Até cerca de 2h40 |
Em algumas das regiões maiores, como us-central-1, o reinício das tarefas do Service Control criou um efeito manada sobre a infraestrutura de que elas dependem, a tabela Spanner, e a sobrecarregou. O Service Control não tinha backoff exponencial randomizado para evitar isso.
A resolução completa em us-central-1 levou até cerca de 2h40, com limitação da criação de tarefas e roteamento de tráfego para bancos multirregionais para reduzir a carga.
O botão vermelho desliga o caminho de serviço de política, e a recuperação começa pelas regiões menores.
Em algumas das regiões maiores, o reinício das tarefas cria um efeito manada sobre a tabela Spanner de que elas dependem, sobrecarregando-a.
O Service Control não tinha backoff exponencial randomizado para evitar o efeito manada.
O Google limitou a criação de tarefas e roteou tráfego para bancos multirregionais para reduzir a carga.
Logo após a recuperação, todas as mudanças na pilha do Service Control e os envios manuais de política foram congelados até a remediação completa do sistema.
05 · COMUNICAÇÃO E LIÇÕES
Quando o monitoramento cai junto
O primeiro relatório no Cloud Service Health saiu cerca de 1 hora após o início dos crashes, porque a própria infraestrutura do Cloud Service Health estava fora do ar por causa da falha. Para alguns clientes, o monitoramento que rodavam no Google Cloud também falhou, deixando-os sem sinal do incidente.
| Área | Remediação anunciada |
|---|---|
| Arquitetura | Modularizar o Service Control para que a funcionalidade seja isolada e falhe aberta, de modo que ele ainda atenda requisições se uma checagem falhar |
| Dados globais | Propagar a replicação de forma incremental, com tempo suficiente para validar e detectar problemas |
| Mudanças | Exigir que mudanças em binários críticos tenham proteção por feature flag e venham desabilitadas por padrão |
| Tratamento de erro | Melhorar análise estática e testes para tratar erros corretamente e, se preciso, falhar aberto |
| Sobrecarga | Auditar os sistemas para garantir backoff exponencial randomizado |
| Comunicação | Manter a infraestrutura de monitoramento e comunicação operacional mesmo com o Google Cloud e os produtos primários de monitoramento fora do ar |
Perguntas frequentes
O que é Google Cloud jun/2025: ponteiro nulo replicado globalmente via Spanner?
Incidente real. Pontos centrais: deploy progressivo e controle de sobrecarga.
O que o design de Google Cloud jun/2025: ponteiro nulo replicado globalmente via Spanner cobre?
Ele está organizado nestas seções: Uma checagem no caminho de toda requisição, Um caminho de código que ninguém exercitou, Dados em branco, replicados para o mundo, O botão vermelho e o efeito manada e Quando o monitoramento cai junto.
Quanto tempo leva Google Cloud jun/2025: ponteiro nulo replicado globalmente via Spanner e qual é o nível?
Leva cerca de 15 minutos para ler e tem nível Staff.
Agora projete você mesmo
Rode este caso como uma entrevista na escola de System Design: você toma as decisões, o tutor as questiona e você vê a nota do seu desenho.