Databases are rarely a “one-size-fits-all” service. There are different types, deployment methods, and configuration options. As an individual user or DBA, you could install a database on a single node, managed node, or a cluster maintained by your cloud provider’s database-as-a-service (DBaaS). And depending on your app, you could also opt for a more custom setup like creating Galera clusters for MySQL. The decision often comes down to how you need your database to perform and what type of data your application is collecting.
The decision of “managed versus unmanaged” often comes down to the skill set and time availability you or your team have to maintain your infrastructure. A managed database service can allow you to allocate more time to developing your application by deferring critical maintenance and uptime tasks to the cloud provider.
A managed database service gives developers and organizations an easy and cost-effective way to deploy self-sufficient databases clusters. Advanced database administration skills are no longer required to perform routine updates and maintenance. Those tasks are deferred to the cloud provider so developers can focus on other aspects of their application.
Managed database providers help ensure your databases are hosted and patched using best practices, including the deployment of a multi-node database cluster for high availability. This also supports database replicas to failover if the primary node is unavailable for maintenance or experiencing other issues causing downtime.
When considering a managed service, you will see these common features:
- Automated minor and major database version maintenance
- Built-in backups with a clear retention period
- Resizable database nodes to scale up or down based on volume
- Customizable maintenance windows
- High availability to keep your database “up”
- Support for current database versions
- Built-in access controls to allow or restrict access to database node(s)
A managed database service is a great fit for use cases that just require a relatively hands-off database in terms of database management system (DBMS) maintenance and ensuring the underlying infrastructure is up and running.
Unmanaged Database Deployments
Unmanaged database deployments place the burden of support entirely on the developer or infrastructure teams. Often installed as part of a software stack (such as LAMP or LEMP), databases require maintenance, upgrades, and monitoring to ensure reliability and security at the heart of your application. This can be significantly time consuming at scale, and any vulnerabilities can quickly become a breach.
It’s tempting to use a managed service for the majority of workloads to help save time and effort; developers might also find limitations based on the provider’s offering.
When to use an unmanaged database deployment:
- Resource requirements beyond the scope of the providers DBaaS (size or IOPS)
- Lack of support for preferred DBMS or operating system
- Private network or firewall requirements for security purposes
- Data sovereignty compliance
- Advanced data encryption requirements
- Testing major and minor database updates before deploying in production
- Development or testing environments outside of production
Though many industries have strict standards for database security, which can make cloud DBaaS offerings out of compliance, this could also be a matter of preference or internal policy.
Deploying Databases on Linode
You can also deploy database managed systems from the Linode Marketplace or follow our guides to install a database on a variety of Linux distros, like Installing and Configuring MySQL on Ubuntu 20.04.