Problem Background
You build a new application in the cloud, and you want to select proper database for your application. There are many choices for database deployment. Today we will discuss tips to choose the right database for your cloud environment. Let's get started!
What are the Issues?
When choosing the database in the cloud, you will have a lot of option such as self-managed database in the cloud or full managed database in the cloud. Although you already have a good benefit when implement a cloud such as scalability, operational simplicity (sharding, backup, recovery, updates), and cost efficiency when implement in the cloud. However, design consideration will become the main issues in the cloud.
The Tips
Tips 1 – Leveraging the On-Premises database to the Virtual Machine
When I use this:
- You have on-premises database that hosted on a VM. Doing this will make you easy to lift-and-shift
- You have legacy database that not compatible with the full managed database services provided by your cloud provider.
- You want to manage your database engine by yourself
Tips 2 – Using the full managed database
When I use this:
- You don't have time and resources to manage your database. Ease of administration.
- You have a compatible database with the cloud provider. Available, durable, and up to date.
- You build a new application that use modern infrastructure that leverage the power of the cloud. High performance and good scalability
Tips 3 – Taking Care the cost
Self-managed database will give you lower cost than full-managed database. For the same size, you will get 50% higher cost by using full-managed database vs self-managed database.
Tips 4 – Using the Cloud Optimized Database
Today the cloud provider provides you a modern and serverless cloud optimized database such as Azure Database SQL Serverless or AWS Aurora serverless. These cloud optimized database is managed database just like SQL Azure or RDS. But it has more performance, more modern, more cost (23% higher than full managed database). If you have data intensive transaction you can choose cloud optimized database.
Tips 5 – Using the Non-Relational Database (NoSQL)
Beside the relational database, you will have non-relational database that work more simple, more high performance, and key-value access pattern. If your data can be developed in non-relational way you can use the NoSQL engine such as Cosmo DB or DynamoDB. Please make sure
- The cost to store the data in non-relational is higher than relational database. i.e., 1 TB will cost 250 USD / month in DynamoDB while in Aurora will cost you about 100 USD
- The availability of NoSQL (99.999) is higher than full managed database (99.99).
- Is schema less database, so you don't need database schema only table.
Personal Conclusion
So, what the conclusion so far
- For small and cost-effective, you should choose to self-manage is the cheapest option and full control
- For more demanding performances you should choose full managed database.
- When in doubt or high transaction database you can choose NoSQL