A palestra "Não é só um botão: a ciência por trás do Adicionar ao Carrinho no maior ecommerce da América Latina", na trilha Stadium do TDC São Paulo, partiu de uma pergunta aparentemente boba: quanto custa para o usuário colocar um produto no carrinho? A resposta, segundo a apresentação, virou "um projeto de centenas de pessoas e bilhões e bilhões de requisições em microserviços".
O carrinho não é uma tabela
Um dos pontos técnicos centrais foi a modelagem do carrinho como um key-value store versionado, e não como linha em banco relacional. Conforme mostrado na tela, a entidade é resolvida com optimistic locking — "toda escrita carrega uma versão" e conflito "não é exceção rara: é caso esperado" — combinado a uma estratégia de read-modify-retry, descrita como reconciliação explícita, não retry cego. Cada carrinho também tem TTL diferente conforme o contexto (visitante ou autenticado), sincronizado por eventos.
Você não escala um botão, escala um contrato
Com o botão precisando aparecer em home, busca, feed, páginas de oferta e apps diferentes (nativo, webview, iOS, Android, desktop), a decisão foi não distribuir a lógica de negócio, mas um contrato consumido por dezenas de equipes via SDK. "A gente não escalou esse botão, a gente escalou um contrato", resumiu a apresentação.
A decisão mais contraintuitiva veio em seguida: o SDK do botão não faz nenhuma chamada de rede. "Não faria nenhuma chamada HTTP, não tinha banco, não tinha fila. Era uma função pública [...] onde ia entrar estado e ia sair um componente de botão." Toda a elegibilidade é resolvida antes, no backend, e os dados chegam prontos quando a tela já carregou o produto — só o clique real dispara uma chamada de rede.
Degradar é decisão de produto
O trecho sobre graceful degradation contrapôs dois modelos, exibidos no slide: o "reflexo" (dependência caiu, falhe, e a decisão é tomada "às 3 da manhã") versus o "desenho" (dependência caiu, reduza — sintetiza usuário mínimo, entrega carrinho simplificado, devolve valor seguro). Um exemplo citado: se a troca de cor de uma camiseta falhar ao carregar a nova imagem, o sistema mantém a última imagem em cache em vez de travar o fluxo.
Em resposta a uma pergunta da plateia sobre como validar essa degradação com áreas de negócio, a apresentação foi direta: "a degradação é justamente para não perder dinheiro [...] se mostrar a tela de 500 é zero" — ou seja, a métrica de conversão, não só a estética, embasa a decisão técnica.
Specs para IA, não só para humanos
Por fim, o palestrante tratou da documentação como parte do sistema: "se a sua arquitetura não está escrita, o agente vai inventar uma para você". A recomendação foi trocar RFCs extensas por specs versionadas no repositório, usadas tanto em code review quanto como insumo para agentes de IA.
Os números públicos citados (do blog de tecnologia do Mercado Livre): mais de 2 bilhões de requisições por dia no fluxo de adicionar ao carrinho, 20 milhões de produtos adicionados pelo novo botão nas primeiras 24h do rollout, e cerca de 3 milhões de requisições por minuto em dia normal — sem contar picos de datas promocionais.



