Keep Storing and Carry On
summary
Grafana’s monolithic storage starts as a 140+ method SQL store in Go using sqlx and global state; the team proves a service/store split with a preference POC of five methods and fakes for tests. The hard limits are real: create user called 100+ times and delete touches about 10 tables in a transaction, forcing layered, iterative refactors—first a wrapper layer, then copy-and-remove steps. Outcome: feature-scoped services, easier ownership, remaining work on transactions and DB wiring.
AI-written summary · about
chapters (15)
- 0:00Introduction
- 1:05Talk structure and Grafana history
- 3:17Storage challenges with global variables
- 4:43Grafana 6 storage shift
- 5:26Storage refactor problem
- 7:14New service and store layers
- 8:57Preference service proof
- 10:00Refactor approach and pitfalls
- 11:26Scope adjustment with one method
- 12:29User store refactoring challenges
- 13:33Layered iterations refine scope
- 14:38First iteration success
- 15:20Second iteration results
- 16:44Current state and improvements
- 17:28Q&A
related talks
26mCache Me If You Can: How Grafana Labs Scaled Up Their...
53mGetting started with Grafana Loki, a modern logs database
52mTaking Storage for a Ride
01h 04mHow do you store your data?
59mSingleStore: Storage Metadata for Modern Cloud Databases
29mFrom Chaos To Control: Migrating Access Control To OpenFGA in a Multi-Tenant World
44mGrafana Labs Customers: What We've Learned Building Observability at Massive Scale
28mCortex 101: Horizontally Scalable Long Term Storage for Prometheus
