01
Cache não é otimização, é uma segunda fonte de verdade
A forma como o cache costuma entrar no projeto esconde o que ele realmente é. Alguém mede uma consulta lenta, coloca uma leitura de Redis na frente dela, o gráfico de latência melhora e o pull request é aprovado como otimização de performance. O que acabou de acontecer, porém, é que o sistema passou a ter duas cópias do mesmo dado, mantidas por caminhos diferentes, com garantias diferentes e sem nenhum mecanismo que force as duas a concordarem. Isso não é uma otimização, é uma decisão de arquitetura de dados, e ela deveria ser revisada com o mesmo rigor de uma replicação.
A consequência prática é que a pergunta certa nunca é se o cache está rápido, e sim quanto tempo o sistema tolera servir uma resposta errada. Essa tolerância varia de forma brutal dentro da mesma aplicação. Uma listagem de produtos aguenta trinta segundos de defasagem sem que ninguém perceba. Um saldo disponível não aguenta dois segundos, porque o usuário acabou de fazer a transferência e está olhando para a tela. Uma lista de números bloqueados não aguenta defasagem nenhuma, porque a consequência de errar é mandar mensagem para quem pediu para não receber, o que é problema jurídico e não problema de UX.
| Dado em cache | Tolerância a defasagem | Custo de servir o valor velho | Política adequada |
|---|---|---|---|
| Catálogo de produtos | Minutos | Baixo: usuário vê preço antigo por pouco tempo | TTL simples, revalidação em segundo plano |
| Estoque disponível | Segundos | Médio: venda de item inexistente, estorno manual | TTL curto mais invalidação na escrita |
| Saldo de conta | Zero em leitura do próprio dono | Alto: perda de confiança imediata | Leitura consistente para o autor da escrita, cache para terceiros |
| Permissões e papéis | Segundos, mas só para conceder | Crítico: acesso após revogação | Invalidação na escrita, TTL curto como rede de segurança |
| Lista de bloqueio (opt-out) | Zero | Crítico: risco jurídico e multa | Nunca cachear negativa, ou invalidar de forma síncrona |
A tabela não é um detalhe de documentação, ela é o artefato que decide o desenho. Quando essa classificação não existe, todos os dados acabam recebendo a mesma política, e a política escolhida é sempre a mais conveniente para o caso mais comum. É assim que uma lista de opt-out termina com o mesmo TTL de cinco minutos que o catálogo, e ninguém percebe até o dia em que uma campanha dispara para dez mil números que haviam saído na hora anterior.