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
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

HTML over WebSockets vs SPA — Pacote Multi-Arquivo para ADR de Adoção de Server-Driven UI (Event-Driven) — 5 Arquivos

por João Gabriel

gpt-4GPT-4oClaude+3
(0)
0 vendas
R$ 54,90
Pipeline de Desenvolvimento Seguro na Era da IA: estágios planejamento→implementação→verificação→entrega com feedback loop e papéis IA/humano.
Segurança
01 / 02

SSDLC na Era da IA: ADR + pipeline seguro para times que adotam copilotos e agentes de código (pacote de 5 arquivos)

por João Gabriel

gpt-4ClaudeGemini+1
(0)
0 vendas
R$ 49,90
Arquitetura de isolamento KVM antes do patch — o caminho do escape guest→host via Januscape (CVE-2026-53359)
ADR
01 / 03

Mitigação de Escape KVM Guest-to-Host — CVE-2026-53359 (Januscape)

por João Gabriel

gpt-4GPT-4oclaude-3-opus+3
(0)
0 vendas
R$ 23,94
Cadeia de ataque: entrada não confiável → Marshal.load → gadget chain universal → RCE, com o caminho de mitigação por ADR.
Segurança
01 / 03

ADR de Mitigação de RCE por Deserialização no Ruby 4.x — pacote multi-arquivo (prompt principal + regras + exemplos few-shot + harness de verificação + variações de stack)

por João Gabriel

gpt-4GPT-4oclaude-3-5-sonnet+3
(0)
0 vendas
R$ 59,90
Fluxo de adoção: desenvolvedor → agente → guardrails → aprovação humana → deploy
Agentes
01 / 02

Adoção de Agentes de Código: Pacote Completo para Decisão Arquitetural com Guardrails

por João Gabriel

gpt-4GPT-4oclaude-3-opus+3
(0)
0 vendas
R$ 29,94
Árvore de Decisão ADR — Três opções de mitigação (A: aceitar risco, B: mitigação em camadas, C: rewrite do subsistema) com consequências e critérios de aceite.
Segurança
01 / 02

Mitigação de GhostLock (Stack Use-After-Free) em Infraestrutura Linux

por João Gabriel

gpt-4gpt-5claude-4+3
(0)
0 vendas
R$ 29,94
Cadeia de ataque da CVE-2026-3854 — de um git push com push options maliciosas até RCE no servidor GitHub.
Segurança
01 / 02

Mitigação de Injeção em Protocolos Internos — Pacote Multi-arquivo para Engenheiros de Arquitetura

por João Gabriel

gpt-4ClaudeGemini
(0)
0 vendas
R$ 29,94
Fluxo de Decisão do ADR: do gatilho (lançamento TS 7.0) até a decisão registrada e implementação, passando por avaliação técnica, análise de riscos e estratégia de migração.
ADR
01 / 03

Adoção do TypeScript 7.0: Pacote Completo para Decisões Arquiteturais de Migração de Compilador

por João Gabriel

gpt-4ClaudeGemini+1
(0)
0 vendas
R$ 29,94
Cadeia do ataque de supply-chain ao LiteLLM: comprometimento em cascata via PyPI, scraping de memória, exfiltração de 195 TB e a lição do caso Trivy (rotacionar ≠ revogar).
Segurança
01 / 02

ADR de Segurança de Supply-Chain: documentando decisões de gestão de segredos e mitigando vazamentos de credenciais em CI/CD (pacote multi-arquivo)

por João Gabriel

gpt-4ClaudeGemini+1
(0)
0 vendas
R$ 49,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 Workflows GitHub Actions Orientados a Eventos: endureça CI/CD contra injeção de script e exfiltração de segredos

por João Gabriel

GPT-4oclaude-3-7-sonnetgemini-2.0-flash
(0)
0 vendas
R$ 49,90
Comparação visual entre o custo de mudanças no modelo tradicional vs. modelo com agentes de IA. À esquerda escrever e manter estão atrelados. À direita, escrever é barato mas ownership continua caro.
Agentes
01 / 03

Agente de Decisão Arquitetural: Framework Multi-Arquivo para Governança de Mudanças com IA

por João Gabriel

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

ADR de Simplificacao de Stack: Consolidar Reservas de Inventario no Banco Relacional (ACID) - Pacote Multi-Arquivo com Few-shot e Harness

por João Gabriel

GPT-4oclaude-3-5-sonnetgemini-1.5-pro
(0)
0 vendas
R$ 49,90