Como a equipe de bancos de dados da Figma viveu para contar a escala
DB distribuído vs. Postgres particionado
- Muitos argumentam que esta é a história clássica: começar com uma única instância RDS, atingir os limites de escala, passar anos fazendo sharding; alguns dizem “é só usar um banco de dados distribuído” desde o primeiro dia.
- Outros contrapõem que, em 2012–2016, as opções maduras de SQL distribuído eram limitadas, especialmente para workloads altamente relacionais com muitas junções.
- Vários observam que não existe almoço grátis: sistemas distribuídos acrescentam complexidade, custo e exigem decisões precoces, às vezes frágeis, sobre a chave de partição.
Cloud Spanner e aprisionamento à nuvem
- O Spanner é elogiado como tecnologia interna “mágica” do Google, com fortes garantias, mas visto como:
- Caro.
- Um aprisionamento profundo ao GCP, em que muitos não confiam por causa da percepção de rotatividade de produtos e de problemas passados de descontinuação/preços.
- Alguns prefeririam tecnologia inferior sob seu controle a tecnologia superior, mas presa a um fornecedor; outros dizem que a consistência/replicação gerenciadas do Spanner podem valer o prêmio.
Bancos de dados por locatário vs sharding lógico
- Muitos se perguntam por que não um banco de dados (ou schema) por cliente, evitando transações entre locatários.
- Prós relatados: modelo mental mais simples, isolamento, backups mais fáceis, movimentação de grandes locatários entre nós.
- Contras relatados: migração/schemas viram um problema em milhares de locatários; vizinhos barulhentos ainda existem se os locatários compartilham uma instância física; metadados do Postgres e migrações podem se tornar gargalos.
- Algumas equipes relatam grande sucesso com milhares de schemas por locatário; outras relatam ter abandonado a abordagem por se tornar inadministrável.
Opções existentes de Postgres / NewSQL
- Comentadores observam semelhanças com Citus ou Vitess e especulam por que eles não foram usados:
- O RDS não suporta extensões como Citus.
- Limitações anteriores do Citus (gargalos no coordinator, restrições de junção).
- Risco e esforço de uma migração completa versus sharding incremental em um Postgres RDS conhecido.
- Sistemas NewSQL (CockroachDB, Yugabyte, TiDB) são vistos como atraentes para greenfield, mas:
- Introduzem novas curvas de aprendizado operacional.
- Podem ter latência/throughput piores para بعض workloads.
- Ainda exigem migrações de dados complexas e de alto risco na escala da Figma.
Custos, risco e trade-offs de engenharia
- Um cálculo sugere que o custo de engenharia do sharding interno poderia ser de vários milhões de dólares e levar anos para “se pagar” em comparação com soluções distribuídas gerenciadas.
- Outros respondem que, para um produto de alto valor e crescimento rápido, minimizar o risco de migração e aproveitar a experiência existente com Postgres/RDS pesa mais do que a otimização pura de custo.
Outros temas
- NoSQL é geralmente visto como um mau encaixe para o modelo altamente relacional da Figma.
- Alguns veem a solução como engenhosa, mas excessivamente complexa, e se preocupam com a manutenção de longo prazo e o risco de “pessoa-chave”.
- Aurora Limitless é mencionado, mas visto como novo demais e provavelmente muito caro.