Ir para o conteúdo principal
ArchPrompts
Voltar ao blog
Caderno técnico / Nota de campo

Radar Tech: Shopify trocou Redis por MySQL nas reservas de inventario e descobriu que o gargalo nem era a query

Um caso-classico de simplificacao de stack: consolidar reservas em um unico banco com transacoes ACID e, na hora de escalar, perceber que o problema era o uso de conexoes, nao a consulta.

João Gabriel
2 min de leitura
Radar Tech: Shopify trocou Redis por MySQL nas reservas de inventario e descobriu que o gargalo nem era a query
AP / Prancha visual 01
Leitura principal

Em pleno pico de Black Friday, com um recorde de vendas por minuto, a plataforma de e-commerce precisava decidir: manter um armazenamento separado para as reservas de inventario ou consolidar tudo em um unico banco relacional.

O sistema de protecao contra oversell funciona assim: no checkout, uma unidade de estoque fica reservada por alguns minutos (hold), e quando o pagamento e processado, a reserva vira uma deducao permanente (claim). O problema e que, com as reservas num cache (Redis) e o saldo no banco (MySQL), esses dois passos nao podiam ser envolvidos em UMA transacao atomica.

O problema da falta de atomicidade

Quando a atualizacao do saldo e a limpeza da reserva acontecem em sistemas separados, o fallback pode gerar dois modos de falha:

  • Oversell: a venda e confirmada mas a unidade nunca e deduzida do ledger.
  • Undersell: a unidade e deduzida mas continua marcada como reservada.

Alem disso, o Redis nao tinha consciencia multi-location e exigia operar um cluster separado. A resposta foi corajosa e simples: mover as reservas para o mesmo MySQL do ledger e envolver tudo em transacoes ACID.

Pool de reservas em vez de uma linha por unidade

Uma linha por unidade nao escava em escala (um item com 50 mil unidades em 10 locations geraria 500 mil linhas). A solucao foi manter um pool limitado de linhas de reserva (cap de 1.000 por item/location), consumidas pela reserva e recarregadas por um processo de replenishment a partir do ledger.

A licao mais importante: o gargalo nao estava onde parecia

Depois da migracao, a equipe ainda batia num teto de throughput abaixo da meta. A latencia P90 da query estava aceitavel, a CPU nao estava no limite e as queries ja estavam otimizadas. O que nao estava claro era quem segurava as conexoes do banco.

Ao adicionar atribuicao por-caller (marcando cada conexao com o processo de negocio e agregando no proxy), descobriram que processos mantinham transacoes longas e consumiam o pool de conexoes. Limpar esses locks e ajustar a configuracao removeu o teto - sem mudar o modelo de dados.

O que a arquitetura moderna deveria aprender

  • Se voce esta recorrendo a Redis, Kafka ou uma camada de coordenacao so para exclusao mutua de alto throughput, talvez seu banco relacional ja resolva.
  • Quando os numeros nao batem (CPU baixa, pool esgotado), instrumente o caminho completo: a resposta costuma estar no plumbing, nao no mecanismo.
  • Rollout gradual com kill switch preserva a capacidade de reverter em caso de erro.

Quer reproduzir esse raciocinio na sua equipe? Publicamos um pacote de prompt (ADR) que ensina um agente a escrever decisoes de arquitetura com esse mesmo rigor, com few-shot e harness de verificacao, para consolidar stack e investigar gargalos sem pular para conclusoes.

Do conceito à execução

Ferramentas práticas para levar as decisões desta nota ao seu próximo projeto.

12 / selecionados
Os dois caminhos da adoção de código gerado por IA: copy-paste cego (dívida cognitiva) versus autoria humana governada (entendimento).
ADR
01 / 03

ADR de Governança de Código Gerado por IA (sem acumular dívida cognitiva)

por João Gabriel

gpt-4ClaudeGemini
—(0)
0 vendas
R$ 14,90
Antes: reservas em Redis + ledger em MySQL sem atomicidade entre o claim (UPDATE + DEL) - origem do oversell/undersell.
ADR
01 / 03

Escriba de ADR com evidência: simplificação de stack e transações ACID

por João Gabriel

GPT-4oclaude-3-5-sonnetgemini-1.5-pro
—(0)
0 vendas
R$ 14,90
Da intenção declarada à decisão registrada: o desvio entre o que o time quis e o que o código faz é o achado central.
ADR
01 / 03

Auditor de Intenção Arquitetural: laudo rastreável do código que a IA escreveu

por João Gabriel

gpt-4ClaudeGemini
—(0)
0 vendas
R$ 19,90
Arquitetura geral: Stripe e PayPal conectados via barramento de eventos, com microsserviços downstream, Event Store (Kafka + Schema Registry) e CQRS Read Models.
Event-Driven
01 / 03

ADR de Integração de Plataformas de Pagamento: Event-Driven + Strangler Fig

por João Gabriel

gpt-4gpt-4-turboclaude-3-opus+3
—(0)
0 vendas
R$ 19,90
Cadeia do ataque: evento não confiável interpolado em run: expõe segredo interno via gate 'sempre verdadeiro'.
Segurança
01 / 02

ADR de Hardening de GitHub Actions contra injeção de script

por João Gabriel

GPT-4oclaude-3-7-sonnetgemini-2.0-flash
—(0)
0 vendas
R$ 14,90
Modelo de ameaças: as 4 superfícies de ataque em agentes de codificação com IA, inspiradas pelo Cursor 0day e Memory Heist.
ADR
01 / 02

ADR de Adoção de Agentes de Código com Guardrails de Segurança

por João Gabriel

gpt-4claude-3.5-sonnetclaude-4+2
—(0)
0 vendas
R$ 19,90
Fluxo de Decisão do ADR — 5 etapas do processo de documentação de decisão arquitetural, desde o contexto até os artefatos de saída.
ADR
01 / 03

ADR de Adoção de Framework: matriz de pesos e plano de migração

por João Gabriel

gpt-4claude-3-opusclaude-3.5-sonnet+2
—(0)
0 vendas
R$ 14,90
O antipadrão: uma chave de plataforma única no gateway multi-tenant gera blast radius global.
Segurança
01 / 03

ADR de Segredos em Multi-Tenant: elimine chaves compartilhadas e reduza o blast radius

por João Gabriel

gpt-4ClaudeGemini
—(0)
0 vendas
R$ 29,90
O Locksmith Loop: Witness Search → execução paralela → oráculo de paridade → mutação/desbloqueio.
Agentes
01 / 03

Migração COBOL → Java com agentes de IA e validação por paridade

por João Gabriel

gpt-4ClaudeGemini
—(0)
0 vendas
R$ 29,90
Quatro superfícies de criptografia legada (TLS na borda, PKI/mTLS, assinatura de código, CMS/chaves) com o que é risco hoje e o padrão-alvo em cada uma — convergindo para um ADR consolidado e um roteiro em 3 fases (inventário, nova CA/HSM+rotação, desligar legado).
Segurança
01 / 03

Kit Crypto-Agility: ADR e roteiro para aposentar criptografia legada

por João Gabriel

gpt-4ClaudeGemini
—(0)
0 vendas
R$ 19,90
Camadas de controle de um agente LLM conectado: o usuário instrui um orquestrador que, para qualquer efeito colateral, passa por um gateway de política zero-confiança antes de tocar sistemas OAuth/dados sensíveis (e-mail, cloud, repositórios).
Segurança
01 / 03

Agente LLM Conectado e Seguro: ADR, modelo de ameaças e gates de tool-call

por João Gabriel

gpt-4ClaudeGemini
—(0)
0 vendas
R$ 19,90
SPA tradicional (REST + JSON) vs HTML over WebSockets: quem renderiza, quem guarda o estado e onde mora a latência em cada abordagem.
Event-Driven
01 / 03

ADR: HTML over WebSockets vs SPA — decisão de UI dirigida pelo servidor

por João Gabriel

gpt-4GPT-4oClaude+3
—(0)
0 vendas
R$ 14,90