3 Database Bugaboos Facing Platform as a Service
PaaS (Platform as a Service) solutions for the cloud are continuing to pop up all over in the world of software due to their simplicity, efficiency and strong developer orientation. Several different PaaS platforms are being built for specific technology stacks.
At the application level, most PaaS solutions provide a suitable way to scale the application to deal with fluctuating demand or changing needs. That's because elasticity and flexibility at the application tier are built into the platform itself.
However, things are different at the database tier. Most PaaS solutions today still offer data management services with limited scalability, not on par with the application level. Most PaaS solutions use some open source database solution that's integrated with the platform's back end, such as MySQL, PostgresSQL or CouchDB, but provide relatively limited scalability and functionality for end users.
PaaS solutions strive to offer an environment that's scalable on all tiers, yet their forte is the application layer. Many PaaS providers experience limitations when it comes to the database tier, particularly when dealing with relational databases. Here are three reasons why:
More Users, More Databases, More Management Overhead
The good news is that PaaS is gaining popularity, with more and more developers choosing it as their preferred environment for the cloud.
Many developers are creating their free accounts with various PaaS providers and have several apps in development. Some of these applications are naturally proof of concepts, test projects, or side-jobs that wouldn't get deployed or necessarily gain any substantial user base to justify the developer upgrading from a free plan to one of the paid plans. Still, most of today's Web applications require some sort of database.
Maintaining sometimes thousands of databases obviously comes with a cost.
With the increase in users, PaaS vendors find themselves needing to provision, and then effectively manage, sometimes thousands of databases for their end users. More users is a good problem to have, but managing so many databases takes its toll on PaaS operators in terms of cost structure, manpower and operations.
Multitenancy for the Database in the Cloud and Efficient Cost Structure
To achieve a more efficient cost and operational structure, PaaS needs to have several apps/users share a database. Yet achieving real multi-tenancy isn't the same as simply installing 10 database copies on the same virtual machine.
You want to ensure consistent performance, minimal "noise" between applications, and be able to support high availability for each instance, as well as accommodate it as it grows in size or throughput. And you want to minimize the management overhead of keeping it all running.
SQL Scalability and High Availability Doesn't Come Easy
While NoSQL data stores are simpler and easier to scale, when the application requires transactional capabilities and ACID compliance, scaling SQL databases in a granular and seamless way becomes more difficult. In addition, scaling out by adding nodes is harder on a cloud infrastructure. Your out-of-the-box plain MySQL, for example, won't cut it.
Add to that replication and ensuring automatic failover for each application -- multiplied by the thousands -- and you've got a real monitoring and management problem on your hands.
Realizing their strength is in the application layer, PaaS solutions are now introducing various database offerings into their environment, either as an addition to their own internal underlying infrastructure, or as third-party add-ons for end users to choose from. While these have several tiers -- depending on database size and the level of scalability required -- scaling right in the cloud isn't a trivial task, and as the application gains popularity, you want to ensure that the chosen database service can accommodate its growth.
Databases are not only complex systems, but key in the operation of most software stacks. Effective database management services play an integral part in the success of any one PaaS, as it directly affects the performance of customers' applications running on the platform. Rather than trying to do it yourself, PaaS should focus on the code and turn to best of breed managed database services that can offer zero-management and efficient multitenancy in the cloud.