The database has been a critical part of software architecture pretty much since the beginning of software. But databases have changed quite a lot over the years.
For a long time, “the database” was a machine sitting somewhere in your office or data center. It was a piece of physical infrastructure that your company owned and managed.
The rise of cloud computing has meant that for many companies, database infrastructure is now virtual, with the database hosted in the cloud. And that, in turn, has paved the way for cloud providers and third parties to offer database hosting and management as part of a package deal commonly referred to as database-as-a-service (DBaaS).
What is a DBaaS?
Database-as-a-service (DBaaS) is a term that is used to describe cloud database products that go beyond simple cloud database hosting and include database management services.
The fundamental value proposition of DBaaS products is that they take the work associated with physical infrastructure management and database software management off of the customer’s plate.
Ideally, this allows the customer to focus on building their application and to put their database management in the hands of experts. Where once running a database meant buying the physical infrastructure and building a team capable of deploying and maintaining it (both the hardware and the database software), companies opting for DBaaS solutions can now focus leave most or all of those tasks in the hands of their DBaaS vendor.
What is included with managed DBaaS services?
The specific details of what’s included in a DBaaS offering will vary from vendor to vendor, and may also vary by deployment method. Typically, a DBaaS service will include the cloud infrastructure (hosting and management), and management of software operations like updating the database software, backing up the data at regular intervals, and more. Most DBaaS providers will have SLAs that guarantee the buyer a certain percentage of uptime.
DBaaS products typically also offer ways for the customer to easily interact with their database such as web UI, APIs, or both. Other services may be included as well.
For example, let’s look at some of the features of CockroachDB dedicated, one of Cockroach Labs’s managed DBaaS offerings:
Customer’s choice of cloud provider (AWS, GCP, or Azure)
Guaranteed uptime SLAs
SRE support
Easy self-service scaling via web UI, API, and command line tools
Row-level geo partitioning
Automated, no-downtime database software upgrades
Daily and hourly backups
That is far from a complete list – for a full rundown of features, check out this PDF guide – but these are some of the types of services and features one might expect to find on offer from top DBaaS vendors.
It’s worth keeping in mind that the services offered by a DBaaS vendor may also vary based on deployment method, if the vendor offers more than one. CockroachDB, for example, offers two different deployment patterns for its managed DBaaS: dedicated and serverless. Dedicated involves purchasing dedicated machines, so scaling up or down happens via the web UI, API, or command line tools. Serverless, on the other hand, allows customers to set a maximum monthly spend limit, with the database automatically scaling up and down to match demand while staying within the client’s budget.
What are the advantages of managed DBaaS?
At a high level, the primary advantages of managed DBaaS services are:
Guaranteed high-availability Most DBaaS have guaranteed uptime SLAs so you don’t have to worry about downtime.
Increased efficiency and focus Since your team doesn’t have to worry about many database deployment and management tasks, they can dedicate more time to building product features and other mission-critical work.
Database expertise Because your database is managed by the DBaaS vendor, who should have a high level of expertise with the database software, they will know how to deploy and manage it for optimal performance, and their support team can also advise you on how to best optimize your application to work with it.
The specifics will vary case-by-case, but often there are also other advantages of adopting a DBaaS, such as improved security compared to operating your own database on-prem.
Since the features and services associated with DBaaS offerings can vary quite a bit based on both the vendor and the underlying database technology, it’s a good idea to compare your options carefully.
What are the disadvantages of managed DBaaS?
The disadvantages of DBaaS services – if there are any at all – will depend on the specifics of your use case. However, some factors to consider are:
Physical Control Using a DBaaS offering puts your database deployment and management in the hands of a vendor. Generally speaking, this is a good thing – it saves you time and money – but it does mean that if you want to make specific changes, you may need to ask for those from your vendor rather than being able to directly implement them yourself.
Vendor and cloud lock-in Databases are a pain to migrate, and particularly if you choose a cloud-specific proprietary DBaaS, migrating to a different database, deployment pattern, or cloud becomes very difficult. However, the risk of lock-in can be mitigated substantially by choosing a cloud-agnostic vendor that offers a variety of deployment patterns. CockroachDB, for example, can run as a DBaaS on multiple clouds and can also be run self-hosted (on-prem or in the cloud), so migrating to a different cloud or from managed to self-hosted is pretty straightforward. A cloud-proprietary DBaaS, in contrast, would be much tougher to move away from.
Cost For most companies, opting for a managed DBaaS will actually save money, as they no longer have to expend internal resources deploying and managing it. However, every company’s financial situation is different, so you should fully explore the cost of DBaaS options in comparison with all of the costs of deploying and operating your database yourself.
What’s the best relational DBaaS?
The best relational DBaaS for you will depend on the specifics of your company and your application. Smaller companies and startups may be best served by something simple and familiar such as managed Postgres.
Larger companies, enterprises, and anyone operating at significant scale will likely be better served by a modern relational database such as CockroachDB, which offers very high availability, ironclad data correctness, easy geo-partitioning, and elastic horizontal scalability.
These advanced features may not be needed by smaller firms, but can save enterprises massive amounts of time and money.
Not sure which DBaaS might be right for you? Let us evaluate your use case.