This episode traces Vitess's journey from an internal MySQL sharding solution at YouTube to a CNCF-accredited open source project, then compares it with traditional MySQL, Galera Cluster, and managed cloud databases to find the use cases where it fits best.

In episode 0 you set up your environment. Now the question shifts from "how" to "why": why does Vitess exist, what problem does it solve, and when should you choose it over other solutions. Episode 1 is the origin story — and origin stories always matter because they explain why Vitess is designed the way it is.
Episode 1 roadmap: first we trace Vitess's birth inside YouTube, then its journey to becoming an open source project accredited by the CNCF, third an honest comparison with traditional MySQL, Galera, and managed cloud databases, and finally the use cases where Vitess truly shines. By the end of the episode, you'll be able to answer with confidence: "when do I need Vitess?"
The Vitess story begins around 2010, when YouTube faced a very real problem: a single MySQL instance could no longer handle the scale of their video traffic. The engineers' solution at the time was manual sharding — splitting the database into many instances, then writing routing logic into the application code.
The problem was that manual sharding is painful. Every new schema had to be designed around how it would be split, every query had to know which instance to go to, and operations like resharding were a nightmare that took months. Applications and databases became inseparable — moving instances meant changing code.
Out of this pain, Sugu Sougoumarane and the team at YouTube built the solution that would come to be called Vitess: a layer in front of MySQL that absorbs all the complexity of sharding, replication, and routing, so the application keeps writing plain SQL as if it were facing one big database.
In 2015, Vitess was released as an open source project. That was a significant step: it wasn't just YouTube that needed a scalable database, but the entire industry. Vitess passed the litmus test in 2017 when it became a CNCF (Cloud Native Computing Foundation) project — the same organization that hosts Kubernetes — and reached graduated status in 2018.
What does graduated status mean? It means the project has proven stable, has healthy governance, and is used in production by many large companies. Some well-known Vitess users include Slack, GitHub, and many e-commerce platforms that handle traffic spikes like online shopping days.
CNCF membership also signals something important: Vitess was born before Kubernetes became popular, but it grew up alongside the cloud native ecosystem. Integration with Kubernetes, Prometheus, and GitOps operations became part of its DNA. This is what distinguishes it from the custom sharding solutions large companies build internally.
Vanilla MySQL handles sharding through application logic: the application knows which table lives on which instance. This approach works at small scale, but collapses as scale grows — resharding becomes a major project, failover is manual, and there's no single source of truth about where data lives.
Vitess removes that burden. The application just connects to VTGate, and Vitess decides which shard to target. The sharding key column is chosen at keyspace design time, and operations like resharding can run online without changing application code at all.
SELECT user_id, email FROM users WHERE user_id = 42The query above is written by the application without knowing or caring which shard user_id lives on. Vitess handles the rest.
Galera (for example MariaDB Galera Cluster and Percona XtraDB Cluster) handles synchronous multi-primary replication. Its strengths: all nodes can accept writes, conflicts are detected at the transaction level, and there's no replication lag. Its weaknesses: Galera doesn't handle sharding at all — every node stores all data, so total capacity is limited by the largest node.
Vitess is different: sharding is a core feature. Capacity grows by adding shards, not by swapping in bigger hardware. This isn't to say Galera is bad — Galera is great for consistency, Vitess is great for horizontal scale.
Services like Amazon Aurora, Cloud SQL, or RDS offer incredible convenience: automated backups, managed failover, and nearly zero operational burden. But their sharding capabilities are limited or hidden. Some services support "sharding" via logical partitioning or separate services, but rarely as flexible and transparent as Vitess.
Vitess gives you full control: you choose the topology, the failover policy, and the sharding strategy yourself. This suits teams that need maximum flexibility, or that want to avoid vendor lock-in. With the obvious consequence: you're the one responsible for operating it.
To make comparison easier, here's a summary of the main differences:
| Aspect | Traditional MySQL | Galera | Cloud managed | Vitess |
|---|---|---|---|---|
| Sharding | Manual in app | None | Limited | Core feature |
| Replication | Manual | Synchronous multi-primary | Managed | Automated via VTTablet |
| Failover | Manual | Automatic at node level | Managed | Automated via vtctld |
| Operational control | Full | Full | Limited | Full |
| Ops burden | Low at small scale | Medium | Lowest | Highest |
The table above isn't a "who's best" judgment, but a map of trade-offs: Vitess demands the heaviest operations, but delivers horizontal scale that no other solution provides. The right choice depends on your team's context and workload.
The first and primary use case: very high write workloads. When a single MySQL can no longer handle writes, Vitess distributes the load across many primaries on many shards. This is the main reason YouTube, Slack, and GitHub use it.
Vitess is a great fit for multi-tenant SaaS. Each tenant can be mapped to a specific shard, or large tenants get their own shard. Isolation becomes clear, and capacity can be added per tenant without disrupting other tenants.
Already have a large MySQL database that feels heavy? Vitess supports incremental migration. You can start without sharding — a single shard managed by Vitess — then reshard when needed. This migration reduces risk compared to rewriting sharding from scratch.
vtctlclient ListAllKeyspacesThe vtctlclient ListAllKeyspaces command lists the keyspaces — a concept we'll dissect in episode 2. For now, just note that running Vitess without sharding is a valid and common way to start.
To be fair, we should also know when Vitess isn't the right choice:
Info
Choosing a database isn't about which is the most advanced, but which best fits your workload and team. Vitess excels at large scale with OLTP workloads — don't adopt it just because it looks impressive on a CV.
In this episode 1 you've learned where Vitess comes from, how it grew into a battle-tested CNCF project, and how it positions itself against traditional MySQL, Galera, and managed cloud databases. You've also seen its main use cases: high-scale OLTP, multi-tenant, and legacy MySQL migration.
Key takeaways:
In the next episode we dissect core concepts and the main architecture: the roles of VTGate, VTTablet, Topology Service, and MySQL instances, plus how data is split into shards and how queries are routed. See you there!