Pular para o conteúdo

A borda nao resolve nada — e e por isso que ela e rapida.

O que significa achatar toda heranca no momento da sincronizacao, e por que uma pagina multi-inquilino precisa ser uma busca direta de chave.

Neste artigo

O problema: heranca resolvida na hora errada

A regra: quem decide e o sync, nao a requisicao

O custo que essa escolha cobra

Quando nao vale a pena

O problema: heranca resolvida na hora errada

Uma plataforma multi-inquilino e feita de heranca. O tema do cliente sobrescreve o tema padrao, a pagina sobrescreve o tema do cliente, o idioma escolhe um conjunto de textos, o tipo de rota decide qual dado estruturado sai no HTML. Escrito do jeito natural, isso vira uma sequencia de consultas com JOIN toda vez que alguem abre a pagina — e cada uma dessas consultas acontece enquanto o visitante espera. O trabalho e o mesmo em toda visita, e a resposta quase nunca muda entre uma visita e a seguinte. Voce esta pagando latencia por um calculo repetido.

A regra: quem decide e o sync, nao a requisicao

A inversao e simples de enunciar e dificil de sustentar: nenhuma cadeia de heranca e resolvida no momento da requisicao. Quando o dado muda no Postgres, um gatilho empurra a mudanca para a borda, e e nesse momento — fora do caminho do visitante — que tema, SEO, idioma e rota sao achatados numa unica linha pronta. A borda entao faz o que ela faz bem: uma busca direta de chave, sem JOIN, sem plano de consulta, sem surpresa de latencia. O visitante recebe uma decisao que ja estava tomada.

O custo que essa escolha cobra

Nada disso e de graca. Primeiro, a entrega passa a ser eventual: existe uma janela entre escrever no banco e a pagina mudar no ar, e voce precisa saber o tamanho dela em vez de supor. Segundo, fila garante ao-menos-uma-vez e nao garante ordem, entao toda linha carrega carimbo de tempo e uma entrega atrasada e descartada em vez de sobrescrever um dado mais novo. Terceiro, o dado fica duplicado de proposito, e duplicacao sem dono vira divergencia silenciosa — a fonte da verdade continua sendo uma so, e a borda e sempre copia descartavel e reconstruivel.

Quando nao vale a pena

Se o seu conteudo muda a cada segundo e precisa aparecer no mesmo segundo, nada disso serve — voce quer consistencia forte e deve pagar a ida ao banco. O mesmo vale para carrinho, estoque e pagamento, que nao cabem num modelo de leitura eventualmente consistente e precisam de outro desenho. A tecnica vale quando a leitura domina a escrita por ordens de grandeza, que e o caso de praticamente todo site institucional, landing page e blog do mundo.

Paulo Felipe

Projeta e opera plataformas de borda em Rust e WebAssembly. Escreve sobre arquitetura com o numero na frente, inclusive quando o numero contraria a tese.

Quer saber onde a sua pagina perde tempo?

O diagnostico e gratuito e vem com medicao em condicao real de rede movel.

Pedir o diagnostico