In 2006, Clive Humby said, “Data is the new oil.” And it’s still relevant after so many years. Most apps today – big and small – run on data. This data is in turn stored in databases. Databases too have been around for years, and just like data, their significance has only increased with time. If you are running a WordPress site, mobile app, or web app, chances are you’re using a database. There are numerous database engines in the market, the popular open source ones being MySQL, PostgreSQL, MongoDB, MariaDB, Redis, etc. Much ink has already been spilled on what database engine to use for a given scenario, so we won’t reignite that debate in this post.
Irrespective of the engine you use, if you have a customer-facing app, then your database should have certain attributes. For example, a database should provide gigabytes of storage and allow data access with minimum latency. If your app usage grows, then the database should scale easily and quickly to support the increase in traffic.
DigitalOcean users are no different, and these database issues are top of mind when it comes to building apps on our platform. We provide three different ways to create a database on DigitalOcean. But sometimes it’s tricky to decide which approach is best suited for your needs.
- Droplet-based DIY approach: Choose a Droplet (cloud VM) that’s suitable for your application, and then install and run the database. You get flexibility to choose any database engine and its version, but the entire onus of database operations like backups, updates, etc. is on you.
- 1-Click Apps: DigitalOcean Marketplace has several 1-Click Apps that reduce the installation time by giving you a preconfigured Droplet. But these single-click applications are limited to certain engines e.g. MySQL, MongoDB – and the onus of common operations like backups and updates still falls on you.
- Managed Databases: As the name implies, DigitalOcean manages these databases for you. We handle common database administration tasks such as setup, backups, and updates so you can focus more on your app and less on the database. We currently support three engines: MySQL, PostgreSQL, and Redis.
Database management built specifically for developers
Let’s face it, building and managing database clusters from the ground up is a herculean task. Common feedback we hear from developers is that they’re often required to spend their valuable time on database management. This is painful because – for some developers – this isn’t an area of expertise, and others who might have the skills prefer to spend their time and resources on building and enhancing apps. To address this problem, we built Managed Databases that allow you to offload the complex, mundane, and essential database administration tasks to us. This allows you to focus solely on your apps.
The term ‘managed’ is overused in the tech industry, so many of you may wonder what that truly means in the context of DigitalOcean’s Managed Databases. Let’s dive in.
We create the databases for you. All you have to do is specify the engine type, cluster configuration, data center in which you want to host this database, and of course the database name. We’ll take care of the rest.
We backup your databases. As you know, data is critical and should be backed up. Our clusters are automatically backed up every day, and retained for seven days. In case you accidentally destroy data, you can quickly restore it. More importantly, backups are free, so all the more reason to love Managed Databases.
We handle security. Since data is critical, it also needs to be secure. By default, we encrypt data at rest with LUKS and in transit with SSL. You can easily prevent brute-force password and denial-of-service attacks by restricting access to your nodes. We also handle software updates and security patches, which ensures your database is always up to date.
We make your databases highly available. If your database goes down, it can take down the entire app. It’s not fun to be in such situations and meet the wrath of frustrated customers on support lines or worse, on social media. To avoid this, you can create clusters that are highly available. Just add standby nodes to your cluster. If the primary node fails, it will be replaced automatically by a standby node. The traffic failover happens automatically and immediately, meaning your apps won’t lose business continuity.
We reduce latency. You might have customers in all parts of the world. If you serve these customers from a database that’s hosted in a single data center, you run the risk of increasing latency. You can easily serve global users with reduced latency via read-only nodes, which are replicas of the primary node in additional geographical regions.
Bandwidth pricing: Lastly, we want to call out the bandwidth pricing for Managed Databases. Even though bandwidth is not a managed feature, it’s still an important buying criteria as bandwidth costs can easily skyrocket. For Managed Databases, the ingress bandwidth is always free and egress bandwidth fees are waived until December 2020. (They will be assessed at $0.01/GB per month thereafter.)
Note that Managed Redis does not support read-only nodes and daily point-in-time backups. Check out the docs to learn about the managed capabilities of each of the three database engines.
Should I use Managed Databases?
The answer is – it depends on what you’re building, your risk appetite, and your willingness to tinker with databases yourself. For example, if you have a low-traffic personal blog, if the database is still in the prototyping phase, or if cost is an issue (our Managed Databases begin at $15/mo), you should use 1-Click Apps from the Marketplace or the DIY approach. For most other applications, we recommend giving Managed Databases a try.