Pular para o conteúdo
fernando.moretes.com
BlogEstudosCursosE-booksOpen SourcePodcasts
Loading…
Fernando Azevedo

Arquiteto de TI Especialista

Arquitetura, AWS, IA em produção, sistemas financeiros e FinOps, escritos a partir do que foi operado, com os números.

  • LinkedIn
  • GitHub
  • E-mail

Conteúdo

  • Blog
  • Estudos de arquitetura
  • Cursos
  • E-books
  • Open Source
  • Podcasts
  • Assuntos
  • Trilhas

Ferramentas

  • Well-Architected self-check
  • Arquitetura deste site
  • Números públicos
  • Histórico de estudo

Sobre

  • Comunidade
  • IA Builder
  • Perfil
  • Currículo (CV)
  • Trabalhe comigo
  • Media kit
  • RSS do blog
  • RSS dos estudos
  • Artigos narrados (podcast)
  • llms.txt
  • Termos, privacidade e uso de IA

(c) 2026 Fernando Francisco Azevedo

Estudos/Post-mortem
RSSMarkdownLLMs
Post-mortemCoinbaseDados/Resiliência

Coinbase (2026): o control plane do AWS MSK que travou o trading

7 de mai. de 2026 11 min Com apoio de IA000 visualizações00 reproduções

Em 7 de maio de 2026, um defeito no control plane do Amazon MSK impediu a reeleição automática de líderes de partição em dois clusters Kafka gerenciados da Coinbase, bloqueando silenciosamente os serviços de fee, quoting e execução de trades por horas. O incidente expõe os riscos ocultos de depender de serviços gerenciados como ponto único de coordenação, e a necessidade crítica de observabilidade profunda em infraestrutura que você não opera.

Ouvir estudo

cerca de 11 min · áudio gerado ao tocar

Ficha do Incidente

Empresa
Coinbase
Data
7 de maio de 2026
Duração total do impacto
Várias horas (degradação severa seguida de recuperação gradual)
Serviço afetado
Amazon MSK (Kafka gerenciado), dois clusters de produção
Impacto no negócio
Quase todo o trading da Coinbase interrompido: serviços de fee, quoting e execução de ordens bloqueados
Modo de falha
Falha silenciosa, clusters presos em estado 'healing', sem reeleição automática de líder de partição
Causa raiz
Defeito no control plane do AWS MSK que bloqueou a reeleição de líderes Kafka
Stack relevante
AWS MSK (Kafka gerenciado), serviços internos de fee/quoting/trades, AWS (região não divulgada)
Classificação
Incidente de Severidade 1, impacto crítico em receita e clientes

Kafka não caiu. Os brokers estavam de pé. As métricas de saúde do cluster pareciam razoáveis. E ainda assim, quase todo o trading da Coinbase parou, porque o control plane do Amazon MSK, a camada que a Coinbase não opera e não pode depurar diretamente, entrou em um estado defeituoso que impediu silenciosamente a reeleição de líderes de partição. Este é o tipo de falha que não aparece nos seus dashboards de aplicação até que seja tarde demais: infraestrutura gerenciada que para de funcionar sem dizer por quê.

O que aconteceu

Na manhã de 7 de maio de 2026, a Coinbase começou a observar degradação severa em seus serviços de trading. Não foi uma queda abrupta, foi uma erosão progressiva que tornou o diagnóstico inicial confuso. Os serviços de fee calculation, quoting e execução de ordens começaram a falhar ou a travar em espera por respostas que nunca chegavam. A causa não era óbvia: os brokers Kafka estavam respondendo, as conexões de rede estavam ativas, e os produtores conseguiam publicar mensagens em algumas partições.

O problema estava em um nível abaixo do que as equipes de engenharia da Coinbase podiam observar diretamente: o control plane do Amazon MSK. Esse componente, operado exclusivamente pela AWS, é responsável por orquestrar operações de manutenção, rebalanceamento de partições, e, criticamente, a reeleição de líderes de partição quando um broker líder fica indisponível ou precisa ser substituído.

Um defeito nesse control plane colocou dois clusters MSK de produção em um estado chamado internamente de 'healing': um estado de manutenção do qual eles não conseguiam sair. Nesse estado, o MSK não conseguia completar a reeleição de líderes para as partições afetadas. O resultado prático: partições sem líder ativo. Produtores que tentavam escrever nessas partições recebiam erros ou ficavam bloqueados. Consumidores não conseguiam avançar seus offsets. Os serviços downstream, que dependem de mensagens nesses tópicos para calcular fees, gerar quotes e processar ordens, pararam de funcionar de forma coerente.

O que torna esse incidente particularmente insidioso é o modo de falha silencioso. Não houve um crash explícito, nenhum erro de conexão óbvio, nenhum alerta de 'cluster down'. Os clusters tecnicamente existiam e respondiam a algumas operações. A falha estava em uma operação específica de coordenação, reeleição de líder, que o sistema gerenciado deveria executar automaticamente e não executou. Esse tipo de falha parcial é o mais difícil de detectar e diagnosticar, especialmente quando a camada defeituosa está fora do seu controle operacional.

Linha do Tempo

  1. 1

    T+0: Início do evento no MSK

    Um defeito no control plane do Amazon MSK começa a afetar dois clusters Kafka de produção da Coinbase. Os clusters entram no estado 'healing'. Reeleição de líderes de partição é bloqueada silenciosamente.

  2. 2

    T+alguns minutos: Primeiros sintomas nos serviços

    Serviços de fee calculation, quoting e execução de trades começam a apresentar latência elevada e timeouts. Produtores Kafka em partições sem líder começam a falhar ou bloquear. Os alertas iniciais são ambíguos, parecem problemas de aplicação ou latência de rede.

  3. 3

    T+X: Diagnóstico inicial incorreto

    As equipes investigam os serviços de aplicação e a infraestrutura de rede. Os brokers Kafka aparecem como saudáveis nas métricas padrão. A ausência de líderes em partições específicas não é imediatamente visível nos dashboards existentes. O tempo de diagnóstico é prolongado pela falta de observabilidade granular sobre o estado de líderes de partição.

  4. 4

    T+Y: Identificação do MSK como causa raiz

    A equipe identifica que as partições afetadas estão sem líderes ativos e que os clusters estão presos no estado 'healing'. O problema é escalado para a AWS. Confirma-se que o defeito está no control plane do MSK, fora do controle da Coinbase.

  5. 5

    T+Z: Intervenção da AWS e início da recuperação

    A AWS intervém no control plane para remediar o defeito. Os clusters começam a sair do estado 'healing'. A reeleição de líderes de partição é retomada. Os serviços da Coinbase começam a recuperar gradualmente à medida que os tópicos voltam a ter líderes ativos.

  6. 6

    T+horas: Recuperação completa

    Todos os serviços de trading são restaurados. A equipe inicia a análise post-mortem. O incidente é classificado como Severidade 1 com impacto crítico em receita e experiência do cliente.

Fluxo de Falha: MSK Control Plane e Serviços de Trading

Este diagrama reconstrói o fluxo de falha do incidente de 7 de maio de 2026. O control plane do MSK (operado pela AWS, fora do controle da Coinbase) entrou em estado defeituoso, bloqueando a reeleição de líderes de partição nos dois clusters afetados. Os serviços de trading que dependiam dessas partições ficaram sem capacidade de produzir ou consumir mensagens de forma confiável.

☁️ AWS MSK: Control Plane (AWS-operated)
  • MSK Control Plane · (AWS-managed)
  • MSK Cluster A · state: HEALING 🔴
  • MSK Cluster B · state: HEALING 🔴
  • Partições sem líder · (leader re-election bloqueada)
🏦 Coinbase: Serviços de Trading
  • Fee Service · ❌ bloqueado
  • Quoting Service · ❌ bloqueado
  • Trade Execution · ❌ bloqueado
  • Kafka Producers · timeout / error
  • Kafka Consumers · offset stalled
👤 Usuários Finais
  • Clientes Coinbase · trading indisponível

Causa Raiz: Defeito no Control Plane do AWS MSK

Um defeito no control plane do Amazon MSK, a camada de orquestração operada exclusivamente pela AWS, impediu que dois clusters Kafka de produção completassem a reeleição automática de líderes de partição. Os clusters ficaram presos no estado interno 'healing', um estado de manutenção do qual não conseguiam sair sem intervenção externa da AWS. O resultado foi que múltiplas partições ficaram sem líder ativo, bloqueando produtores e consumidores de forma silenciosa, sem crash explícito, sem alerta de 'cluster down', sem erro de conectividade óbvio. A falha estava em uma operação de coordenação que deveria ser transparente e automática, mas que falhou de forma parcial e opaca.

Blast Radius e Por Que Foi Tão Amplo

O impacto desse incidente foi desproporcionalmente amplo para uma falha que, tecnicamente, afetou 'apenas' o mecanismo de reeleição de líderes de partição em dois clusters Kafka. Para entender por quê, é preciso entender o papel arquitetural que o Kafka desempenha na Coinbase.

Em arquiteturas event-driven financeiras, o Kafka não é apenas um sistema de mensageria, é o backbone de coordenação entre serviços. Os serviços de fee calculation precisam publicar e consumir eventos para calcular taxas em tempo real. O quoting service depende de streams de dados de mercado e de estado interno para gerar cotações precisas. A execução de ordens é um pipeline de eventos sequenciais onde cada etapa depende da anterior ter sido confirmada via Kafka. Quando as partições responsáveis por esses fluxos ficam sem líder, não há degradação gradual, há parada.

O segundo fator que amplificou o blast radius foi a ausência de circuit breakers e fallbacks efetivos nos serviços que dependiam dessas partições. Em vez de falhar rapidamente e comunicar o estado de indisponibilidade para os clientes, os serviços ficaram em estado de espera, produtores bloqueados aguardando confirmação de escrita, consumidores parados aguardando mensagens que não chegavam. Esse comportamento de hang em vez de fail-fast é particularmente danoso: ele consome recursos (threads, conexões, memória), propaga a indisponibilidade para serviços upstream que aguardam resposta, e torna o diagnóstico mais difícil porque o sistema parece 'ocupado' em vez de 'quebrado'.

O terceiro fator foi a concentração de dependência: dois clusters MSK, ambos afetados pelo mesmo defeito no control plane, cobrindo os tópicos críticos de trading. Não havia redundância de caminho, se os clusters estavam em estado 'healing', os serviços que dependiam deles simplesmente paravam. A arquitetura não tinha um mecanismo de degradação graciosa para o cenário específico de 'Kafka disponível mas sem líderes de partição'.

Remediação: O Que a Coinbase Fez e O Que Precisa Mudar

A remediação imediata foi necessariamente dependente da AWS: a Coinbase não tem acesso ao control plane do MSK, então a resolução exigiu que a AWS identificasse e corrigisse o defeito internamente. Isso por si só é uma lição arquitetural importante, quando seu plano de recuperação depende de um terceiro agir, seu MTTR está fora do seu controle.

No post-mortem, a Coinbase identificou várias linhas de ação para evitar que um incidente similar tenha o mesmo impacto:

Observabilidade de saúde de partição e líder. O incidente durou mais do que deveria em parte porque os dashboards existentes não tinham visibilidade granular sobre o estado de líderes de partição. Métricas como UnderReplicatedPartitions, OfflinePartitionsCount, e ActiveControllerCount são métricas padrão do Kafka que deveriam estar em alertas de primeiro nível. A ausência de líderes em partições específicas deveria gerar alerta imediato, não ser descoberta durante diagnóstico manual.

Timeouts e circuit breakers em produtores e consumidores Kafka. Produtores que ficam bloqueados indefinidamente esperando confirmação de escrita em uma partição sem líder são um anti-pattern. Configurações como request.timeout.ms, delivery.timeout.ms e max.block.ms precisam ser calibradas para garantir fail-fast. Do lado do consumidor, ausência de progresso de offset por um período definido deve disparar alertas e, idealmente, acionar lógica de circuit breaker nos serviços dependentes.

Estratégia de degradação graciosa para falhas de Kafka. Para serviços críticos como quoting e fee calculation, a questão 'o que fazemos quando o Kafka está indisponível?' precisa ter uma resposta arquitetural explícita. Isso pode incluir: fallback para cálculo síncrono direto, rejeição rápida com mensagem de erro clara para o cliente, ou modo de operação degradado com funcionalidade reduzida. O pior cenário, que é o que aconteceu, é não ter nenhuma dessas respostas e deixar os serviços em estado de hang.

Redução da dependência de serviço gerenciado como ponto único de coordenação. Isso é o mais difícil e o mais importante. Não estou dizendo para abandonar o MSK, serviços gerenciados têm valor real. Mas a arquitetura precisa reconhecer que qualquer serviço gerenciado pode falhar de formas que você não controla e não pode remediar diretamente. Isso significa: múltiplos clusters com tópicos críticos replicados, capacidade de roteamento entre clusters, e testes regulares de failover que incluam o cenário de 'cluster em estado de manutenção irrecuperável'.

Lições do Incidente

Serviços gerenciados têm control planes opacos. O MSK é Kafka, mas não é seu Kafka. O control plane que gerencia reeleição de líderes, rebalanceamento e manutenção é operado pela AWS. Defeitos nessa camada são invisíveis para você e irremediáveis sem intervenção da AWS. Sua arquitetura precisa ser resiliente a essa opacidade.
Falha silenciosa é pior que crash explícito. Um cluster 'healing' que não progride é mais difícil de diagnosticar do que um cluster que recusa conexões. Invista em observabilidade que detecta ausência de progresso, não apenas presença de erros.
UnderReplicatedPartitions e OfflinePartitionsCount são métricas de alerta de primeiro nível. Se você usa Kafka em produção para fluxos críticos e essas métricas não estão em seu runbook de on-call, corrija isso agora.
Produtores Kafka sem timeout configurado são bombas-relógio. max.block.ms, request.timeout.ms e delivery.timeout.ms devem ser configurados explicitamente em todos os produtores de serviços críticos. O padrão do Kafka é permissivo demais para sistemas financeiros.
Circuit breakers precisam cobrir o cenário de 'Kafka lento/preso', não apenas 'Kafka down'. A maioria das implementações de circuit breaker detecta erros de conexão. Poucos detectam 'produtor bloqueado por mais de N segundos'. Esse segundo cenário é o que aconteceu aqui.
Dependência de dois clusters no mesmo control plane é um ponto único de falha lógico. Mesmo que sejam clusters 'diferentes', se ambos são MSK na mesma conta/região e o control plane falha, ambos são afetados simultaneamente. Diversificação real requer isolamento de control plane.
FA
Minha Leitura Sênior
Arquiteto de TI Especialista

Esse incidente me incomoda de uma forma específica: ele é exatamente o tipo de falha que equipes experientes com Kafka não antecipam, porque o Kafka auto-gerenciado raramente falha dessa forma. Quando você opera seu próprio Kafka, você tem visibilidade sobre o ZooKeeper ou o KRaft controller, você pode intervir diretamente, você pode forçar uma reeleição de líder. Com o MSK, você terceirizou essa camada, e com ela, a capacidade de agir quando ela falha. O que eu faria diferente na arquitetura? Três coisas concretas. Primeiro, nunca deixaria serviços de trading críticos com dependência direta e síncrona de um único path Kafka sem um mecanismo de fallback explícito. Para fee e quoting, existe quase sempre um caminho de cálculo síncrono mais lento mas funcional, esse caminho precisa existir e ser testado regularmente. Segundo, implementaria um 'Kafka health watchdog' dedicado: um processo simples que tenta produzir e consumir em um tópico de heartbeat a cada 30 segundos e alerta se o round-trip exceder um threshold. Não confio em métricas de infraestrutura para detectar falhas parciais, quero uma prova de liveness end-to-end. Terceiro, e mais importante: testaria o cenário de 'MSK em estado de manutenção irrecuperável' no meu game day anual. Não 'MSK down', isso é fácil. 'MSK respondendo mas sem líderes em partições críticas'. Esse cenário específico é o que pegou a Coinbase de surpresa, e é o que vai pegar a próxima empresa também se ela não testar explicitamente. Sobre a decisão de usar MSK: não acho que foi um erro. Kafka auto-gerenciado em escala da Coinbase tem seus próprios riscos operacionais significativos. O erro foi não ter modelado explicitamente o risco de falha opaca do control plane e não ter construído as defesas correspondentes. Serviços gerenciados não eliminam risco, eles trocam um conjunto de riscos por outro. Sua arquitetura precisa refletir essa troca.

Veredicto

O incidente de 7 de maio de 2026 na Coinbase é um estudo de caso sobre o custo oculto da abstração em infraestrutura crítica. O Amazon MSK entregou o que prometeu na maior parte do tempo: Kafka gerenciado, sem a carga operacional de operar brokers. O que não estava no contrato implícito era: 'e quando o nosso control plane falhar de forma opaca, você não vai conseguir fazer nada até que a gente intervenha'. Não há vilão aqui. O MSK falhou de uma forma que a AWS provavelmente também não antecipava, defeitos em control planes de serviços gerenciados são raros e geralmente corrigidos rapidamente. O problema não é que o MSK falhou. O problema é que a arquitetura da Coinbase não estava preparada para o cenário de 'Kafka parcialmente disponível com partições sem líder', um cenário que é mais difícil de detectar, mais difícil de diagnosticar e mais difícil de remediar do que uma falha total. A lição central não é 'não use serviços gerenciados'. É: quando você usa um serviço gerenciado para uma função de coordenação crítica, você precisa construir observabilidade e resiliência para os modos de falha específicos desse serviço gerenciado: incluindo os modos de falha que são opacos para você. Isso significa métricas de saúde de partição em alertas de primeiro nível, timeouts agressivos em produtores e consumidores, circuit breakers que detectam lentidão além de erros, fallbacks para caminhos críticos, e game days que testam explicitamente o cenário de 'serviço gerenciado em estado de manutenção irrecuperável'. A Coinbase tem a maturidade de engenharia para implementar todas essas defesas, e o post-mortem público demonstra a cultura de responsabilidade necessária para fazê-lo. O custo foi alto. As lições são transferíveis para qualquer equipe que usa Kafka gerenciado, ou qualquer serviço gerenciado, em fluxos críticos de negócio.

Referências

Coinbase: A postmortem of our May 7, 2026 outage
#postmortem#kafka#aws-msk#resilience#coinbase#event-driven#observability#managed-services
Fontes do caso
Coinbase: A postmortem of our May 7, 2026 outage
Compartilhar:LinkedInWhatsAppXBaixar em Markdown
Escrito com apoio de IA a partir do caso público e da minha leitura como arquiteto.
Próximo passo
Trilha Arquiteto de IA, gratuitaFundamentos, LLMs, RAG, tools, MCP e arquitetura na AWS, em aulas curtas e interativas.Começar a trilhaAgentes de IA em produção na AWSComo eu desenho, oriento e audito agentes que vão ao ar, com os números e as fontes.Ver o IA Builder

Continue lendo

Post-mortemCloudflare (2026): quando uma dependência single-AZ derruba um cluster 'HA'Em 20 de fevereiro de 2026, a Cloudflare sofreu um outage no plano de controle e em analytics porque Kafka e ClickHouse, serviços críticos de ingestão e consulta de dados, existiam apenas na zona PDX-04, enquanto o cluster declarado como de alta disponibilidade dependia deles de forma implícita. O incidente expõe um padrão recorrente em sistemas distribuídos: a ilusão de HA criada por redundância parcial que não cobre todas as dependências da cadeia.Ler Post-mortemDatadog (2023): como um patch de segurança do systemd derrubou 5 regiões simultaneamenteEm março de 2023, uma atualização automática de segurança do systemd-networkd reiniciou o subsistema de rede em dezenas de milhares de nós Kubernetes do Datadog ao mesmo tempo, cortando a conectividade gerenciada pelo Cilium em múltiplas regiões. O incidente expôs os riscos de auto-updates de SO sem controle de blast radius, a dependência crítica de CNI plugins no plano de dados e a ausência de isolamento regional em pipelines de atualização.Ler Post-mortemAWS us-east-1 (2025): Evento Térmico em Datacenter Derruba EC2 e EBSUma falha no sistema de refrigeração de um datacenter em us-east-1 causou superaquecimento de servidores, acionando desligamentos de proteção térmica que degradaram EC2 e EBS na região. O incidente reacende debates críticos sobre concentração de workloads em us-east-1, o papel do isolamento físico por AZ e a necessidade de graceful degradation em arquiteturas de produção.Ler
AnteriorDENIC .de (2026): Assinaturas DNSSEC Quebradas e o Colapso da Cadeia de ConfiançaPróximoADR: Adotando Amazon Bedrock AgentCore em Produção
Gostou deste estudo? Receba o próximo.

Post-mortems, ADRs e deep dives de arquitetura no seu email, do jeito que um arquiteto lê.

Sem spam · cancele quando quiser

Pergunte ao Fernando sobre isto

Uma resposta focada sobre este estudo, do meu assistente de IA, baseada no meu trabalho.

Participe da conversa

Entre para comentar

Confirme seu e-mail para participar, você também recebe a newsletter. Sem senha.

Neste estudo
O que aconteceuLinha do TempoArquiteturaBlast Radius e Por Que Foi Tão AmploRemediação: O Que a Coinbase Fez e O Que Precisa MudarVeredictoReferências