Cómo el equipo de bases de datos de Figma sobrevivió para contarlo a escala
DB distribuida vs. Postgres fragmentado
- Muchos sostienen que esta es la historia clásica: empezar con una sola instancia de RDS, alcanzar los límites de escala, pasar años fragmentando; algunos dicen “simplemente usa una base de datos distribuida” desde el primer día.
- Otros replican que, entre 2012 y 2016, las opciones maduras de SQL distribuido eran limitadas, especialmente para cargas de trabajo altamente relacionales con muchas joins.
- Varios señalan que no hay comida gratis: los sistemas distribuidos añaden complejidad, coste y requieren decisiones tempranas, a veces frágiles, sobre la clave de partición.
Cloud Spanner y el bloqueo con la nube
- Spanner es elogiado como tecnología interna “mágica” de Google con garantías sólidas, pero se ve como:
- Caro.
- Un bloqueo profundo con GCP, del que muchos desconfían por la supuesta rotación de productos y problemas pasados de retirada/precios.
- Algunos preferirían tecnología inferior que controlan antes que tecnología superior pero atada a un proveedor; otros dicen que la consistencia y la replicación gestionadas de Spanner pueden valer la prima.
Bases de datos por inquilino vs. fragmentación lógica
- Muchos se preguntan por qué no una BD (o esquema) por cliente, evitando transacciones entre inquilinos.
- Ventajas señaladas: modelo mental más simple, aislamiento, copias de seguridad más fáciles, mover inquilinos grandes entre nodos.
- Desventajas señaladas: la migración y los esquemas se vuelven dolorosos con miles de inquilinos; los vecinos ruidosos siguen existiendo si los inquilinos comparten una instancia física; los metadatos y las migraciones de Postgres pueden convertirse en cuellos de botella.
- Algunos equipos informan de gran éxito con miles de esquemas de inquilino; otros informan haber abandonado el enfoque por ser inmanejable.
Opciones existentes de Postgres / NewSQL
- Los comentaristas señalan similitudes con Citus o Vitess y especulan por qué no se usaron:
- RDS no admite extensiones como Citus.
- Limitaciones anteriores de Citus (cuellos de botella del coordinador, restricciones en joins).
- Riesgo y esfuerzo de una migración completa frente a una fragmentación incremental sobre el conocido RDS Postgres.
- Los sistemas NewSQL (CockroachDB, Yugabyte, TiDB) se ven como atractivos para proyectos greenfield, pero:
- Introducen nuevas curvas de aprendizaje operativas.
- Pueden tener peor latencia/throughput para algunas cargas de trabajo.
- Aun así requieren migraciones de datos complejas y de alto riesgo a la escala de Figma.
Coste, riesgo y compromisos de ingeniería
- Un cálculo sugiere que el coste de ingeniería de la fragmentación interna podría ser de varios millones de dólares y tardar años en “amortizarse” frente a soluciones distribuidas gestionadas.
- Otros responden que, para un producto de alto valor y crecimiento rápido, minimizar el riesgo de migración y aprovechar la experiencia existente en Postgres/RDS pesa más que la optimización pura del coste.
Otros temas
- En general, se considera que NoSQL encaja mal con el modelo altamente relacional de Figma.
- Algunos ven la solución como ingeniosa pero demasiado elaborada y se preocupan por el mantenimiento a largo plazo y el riesgo de “persona clave”.
- Se menciona Aurora Limitless, pero se considera demasiado nuevo y probablemente muy caro.