Managed database services can make it much easier to host and maintain a master database (instance or cluster) for your business deployment. We’ll discuss the pros and cons of using database-as-a-service features like AWS RDS.
Benefits Of Managed Database Services
Easy Administration
First off, database-as-a-services are very easy to set up, often just requiring you to click which options you’d like, as well as which database type you’re going with, and how much compute you want to use.
On top of being quick to get running, they’re also a breeze to maintain. Obviously, you’ll still need to make sure the applications that use the database are in proper order, but having a service you can access and configure through a web portal is very handy.
Scalability
If you need to move past a single database, and want to manage multiple read replicas, doing so with a managed service becomes much easier. After all, it’s many times the work to set up many databases, whereas with a managed service, scaling can be easy.
High Availability
Keeping your database up at all times is crucial for business operation. If you’re not running a backup database that can be hot swapped to replace the master, your database is not highly available, and is prone to outages. Managed database services can offer this feature.
Security & Monitoring
Of course, a managed database is secure out of the box. Security updates (and updates in general) are all applied automatically in many cases. Of course, this won’t save you from everything. AWS puts it like this — they’re responsible for the security of the cloud, and you’re responsible for the security in your cloud. You won’t want to leave your IAM keys out in the open. But, you probably won’t need to worry about security hardening of the instance it runs on.
Monitoring for anomalies and security issues is also easier, especially with integrations like AWS’s CloudWatch monitoring service having automatic logging from RDS.
The Downsides
Of course, nothing is free, and using these services comes at a premium over doing it yourself with your own compute. AWS RDS for example uses special database instances that simply cost more per hour to run than comparable EC2 instances, and while it advertises it as “no extra cost,” and there’s no monthly fee or anything, you’re still paying a premium no matter how much compute you’re using.
However, while the extra cost might turn some people away, it’s not really that simple.
For large, complicated deployments, managing the database and all its associated parts is a very complex task. It may even be a full time job, literally, that you have to hire someone for. If you have a dedicated database administrator (DBA) that spends all day maintaining your database(s), switching to a managed database service may be perfect for you.
Of course, RDS isn’t going to replace his job entirely, as there are still tons of tasks beyond just configuration, but it will take a lot of weight off their shoulders and free them up to work on other projects, or handle databases for multiple projects at once. At the very least, they’ll be spending fewer hours doing tasks that a computer could do automatically.
So, when you look at it in terms of hour many man-hours you’ll be saving, a managed service can actually save you money in the long run if you have existing DBAs who could be spending their time more efficiently. The slight cost increase in the compute outweighs the additional hours for many businesses.
It all depends on how big your business is though. For small businesses, where you may only have a couple employees and limited funds, setting up a database may be fairly simple if you know what you’re doing. It may also require much less maintenance than a complicated deployment. If you’re fine taking a day of work and setting it up yourself, you won’t really be saving any money with RDS.
Even still, if the difference is only a couple bucks a month, we would still recommend a managed service if it’s anything more complicated than a simple MySQL install. Services like RDS have many other features, like automated backups, that make them nice to use in the long run. And with how complicated database migration can be, choosing the right backend now can save your ass in the future.
Which Service to Choose?
Nearly every cloud provider has a managed database service. AWS, Azure, Digital Ocean, GCP, and many others. While you could run your database on a different cloud than the one you use, that’s probably a bad idea.
The answer to this question is pretty simple—go with whatever service your primary cloud provider offers. There will likely be integrations set up with the other services you use, such as RDS having private networking to EC2 within your VPC, and access from Lambda.
Personally, we recommend AWS’s Relational Database Service (RDS). It supports every major DB engine like MySQL and Postgres, and is a very polished service. They also have DynamoDB, which is a serverless database service for NoSQL databases.