We recently conducted a survey of how Vitess is being used by the community. This blog post summarizes what we learned.
"Vitess solves an existential threat for services which outgrow a single MySQL database."
"Horizontal sharding helps us scale quickly, and the new generation execution plan, Gen4, enables us to support more SQL queries."
"Vitess has allowed us to scale and step away from our dev-ops role, allowing us to focus on higher level and higher impact tooling and automation."
Background #
The story begins with the Vitess maintainer team wanting to conduct a user survey with community members and engineers using Vitess in production to gain a better understanding of how to improve the project. As an LFX Mentee'24, I worked with the Vitess maintainers to form the questions and create a format for conducting the user survey. We drafted the questions, reviewed them, and developed a final version of the survey. I'm happy to report that we received a number of responses.
Summary Responses #
1. How long have you been using Vitess? #
First of all, we decided to ask how long our community members have been using Vitess. Interestingly, quite a few people have been using Vitess for more than 3 years.
2. Are you running Vitess in production? #
More than half of Vitess users have been in production for over 3 years, and an additional 25% have been in production for over 1 year.
3. How often do you upgrade your Vitess version? #
The most popular frequency for Vitess version upgrades is once a year. New versions of Vitess are released 3 times a year, and many users follow the same schedule.
4. How often do you upgrade your MySQL version, including 8.0 minor version upgrades? #
The most popular frequency for upgrading MySQL version is once a year. Most people upgrade their MySQL version at least once every two years.
5. Which version of MySQL are you running? #
The most popular MySQL version among our respondents is 8.0, with a slightly higher proportion of users on Percona vs Oracle MySQL.
6. Which version of MySQL do you plan to upgrade to next? #
More than half of users have responded with NA and TBD for their next MySQL version upgrade. Others are planning to upgrade to Percona 8.x and Oracle 8.x in the future.
7. How soon do you plan to upgrade to the next MySQL version? #
A majority of our users plan to perform a MySQL version upgrade sometime in the next two years.
8. How do you deploy Vitess? #
Users deploying Vitess on Kubernetes are in the majority, followed by bare metal, VMs, etc. Interestingly, some deployments use a mixed architecture.
9. How big is your data size? #
A significant majority of Vitess deployments have a data size greater than 10 TB.
10. How big is your Vitess deployment in terms of keyspaces? #
Most Vitess users have fewer than 100 keyspaces, but some have many more.
11. How big is your Vitess deployment in terms of shards? #
Most Vitess users have fewer than 100 shards, but a significant number of them have a high number of shards.
12. Have you run a resharding process? #
A majority of the Vitess users have gone through a resharding process.
13. Do you contribute code to Vitess? #
50% of our respondents contribute code to Vitess.
14. Cloud #
50% of our users use Public cloud and most of them use GCP and Azure.
15. Which major version of Vitess are you running? #
23% of the users are running version 19.0 and other versions has a distributed split as seen in the graph below.
Insights #
We asked our users how Vitess has helped their business. We got some interesting answers from different companies. #
Scalability: Many Vitess users have scaled the performance of their databases using horizontal sharding. For example: How Shopify horizontally scaled the backend of an important Rails application.
Operational Efficiency: Vitess reduced the burden of managing MySQL clusters at scale, especially in distributed environments like Kubernetes.
High Availability: Hardware issues do not cause downtime while they are being repaired.
High Connections: Vitess is able to manage high connection counts and rates of churn, essential for highly trafficked and concurrent applications.
Efficient Online Schema Changes: Online DDL support in Vitess, combined with horizontal sharding, has let users efficiently change their schema, reducing operational workload for faster product iteration.
Lowered DevOps Burden: By abstracting away the complexities of sharding and scaling, Vitess empowers teams to concentrate on higher-level development rather than getting bogged down in database management.
Flexibility and stability: Vitess has brought stability even to unsharded setups by managing the connection limits and setting the number of concurrent threads so that databases run as smoothly as possible without any performance issues.
We also asked them what the biggest missing feature in Vitess is. Here is a curated sample of the responses. #
- Improved Observability: A consistent dashboard for observing the vreplication streams, with controls over schema changes, can give a better overview of operations.
- Unified Web UI: A single, easy-to-use web interface for all administrative tasks would ease management and enhance usability.
- Circuit Breaking and Adaptive Concurrency Limits: We need features to prevent clients from being blocked by slow shards, and manage concurrency.
- More Clear Upgrade Path with LTS Versions: a well-defined upgrade path with LTS versions is important for stability and fewer bugs.
- Auto Sharding Improvements: More advanced auto-sharding capabilities would be nice, such as in TiDB.
- Vitess Keyspace History: Add a feature to track and review changes over time to a keyspace -- such as reparents, backups, or scaling events for historical analysis and debugging.
Conclusion #
The maintainer team appreciates your responses to the survey. Your feedback will be incorporated into the project roadmap.