Automatic MySQL Scalability and Elasticity
MySQL Scalability Challenges in the Cloud:
An application’s requirements from its underlying database tier rarely stay unchanged over time. As the application gains use and popularity and as it increases in complexity and functionality, the database has to be able to keep up with the growing demand. Your database needs to scale, both in terms of size and throughput.
While scaling an application (by adding more servers and load balancers) is pretty much a no-brainer, on the database tier things are very different. Scaling a database in general is no trivial task, and in the cloud it is way more difficult because of the need to quickly adjust to changing requirements in load. Scaling a database is tedious, painful and potentially risky in the sense that it can cause a temporary denial of service.
Scale both throughput and capacity.
Scale both read and writes:
As next-generation web apps are more user and content-driven, and with the expansion of social applications and social sharing features, today’s applications are characterized with a much higher ratio of write operations. Therefore, you need to plan to scale your throughput for for all types of transactions: reads, writes and everything in between.
Scale with no changes required to the application
Scale both up/down and out/in:
While scaling up is the most simple way to scale, you want your DB to be able to scale out across multiple nodes. This enables you to effectively scale your throughput beyond the limits of any single machine, and rids the need to over-provision (committing to a very larger – and expensive – machine just for seasonal peaks, while the rest of the time those resources go underutilized).
Scale Online, with no application downtime:
New resources are added/removed automatically on the fly in a way that’s transparent to the application.
Xeround’s scalable architecture:
Xeround’s Database-as-a-Service is architected to automatically sustain and support your application’s dynamic capacity and throughput requirements without any service downtime and with no need for any maintenance interference.
Every cloud database instance is implemented as a distributed system that can grow or shrink in compute resources to adjust its capabilities to the demand from the application.
The database instance’s setup consists of three separate functional layers working in tandem to provide the service, with each layer being independently, automatically and transparently scalable:
Load Balancing Layer
This is the database’s front end in charge of routing the application’s connections. Although the number of concurrent connections that each load balancing component can manage is finite, the total number of open connections against the database instance is increased by putting to use additional load balancers.
Connections are routed to the available load balancers via round robin DNS resolution. This transparent scalability means no code changes are required to the application to support additional front-ends being added.
MySQL Engine Layer
Each of this layer’s components is a complete MySQL engine that can access and manipulate the entire database’s contents. The engine is responsible for the execution of statements and the assembly of result sets, and as such mainly requires compute power.
Despite the fact that each engine process is bound, CPU-wise, to the resources of the server instance that it runs off, the database instance’s overall capacity for statements processing is scaled by adding new engine processes to it. These new processes are immediately put to work by the load balancers that redirect some of the application’s traffic to them. This means you enjoy unlimited throughput – as your database can scale well beyond the limits of any single machine.
Data Storage Layer
The data that each component in this layer manages is fully kept in memory and is also persisted to disk.
Accommodating growth in data volume is achieved by adding RAM to the database instance, either by allocating more RAM to existing data storage components or by adding new components.
Xeround’s Auto-Scaling Cloud Database
Xeround’s industry-first auto-scaling capabilities allow your database to automatically scale out when it requires more throughput or capacity, and scale back in when it requires fewer resources.
This linear, practically unlimited, scalability is extremely granular and can accommodate any peak or demand from the application. It eliminates both over provisioning and over-paying- as you only pay for the actual resources consumed by the database. Scaling is done on the fly and do not involve any code changes to your app or any architectural considerations to support scaling.
Xeround users can also change the thresholds at which they want their database to automatically scale up from within the service UI. By the same token, when the database is underutilized, automatic scale-down shrinks database resources to save costs while ensuring that the system will continue to function without disruption.
Auto-scaling greatly simplifies the way databases are managed in the cloud – supporting true elasticity in a way that’s as plug-and-play and as automated as possible. That way, you can rest assured that your DB will always run optimally , with no need for any of the extensive management or configuration overhead on your part to ensure that it is scaling the right way.