Price Differences for Azure Cosmos DB Provisioned or Serverless Throughput Cost
Azure Cosmos DB default provisioned throughput mode configures a fixed capacity of request units (RUs) and charges you for the allocated cost. However, what would you do if you have a volatile workload and do not want recurring costs for high scalable resources? Let's explore the Azure Cosmos DB Serverless mode in this tutorial.
Azure Cosmos DB is a hyper-scale, fully managed, multi-model, Platform-as-a-Service Azure NoSQL Database. It's exciting features are Globally Distributed, Linear Scalability, and High Availability.
It allows you to configure the provisioned throughput for your databases and containers. The Azure Cosmos DB serverless mode uses the consumption-based model and charges the Request Units (RUs) and storage consumed. Therefore, you do not have any capacity planning, and your application can serve thousands of requests with no upfront cost for high capacity.
The Azure Cosmos DB Serverless configuration is suitable for unpredictable and intermittent workloads. We can use it for development, staging, or test servers or small applications.
Creating Serverless Instance of Azure Cosmos DB
Let's deploy an Azure Cosmos DB Serverless instance in this tip. I assume you have an Azure subscription with the privilege to create a new Azure Cosmos DB.
Launch the Azure portal and search for the Azure Cosmos DB service.
Click on create to start the creation of a new Cosmos DB account. First, choose the API option from the below options:
- Core SQL
- Azure Cosmos DB API for MongoDB
- Azure Table
Let's choose Core(SQL) and click on Create for this tip.
The basic configuration asks for the following details for a new Cosmos DB account.
- Azure subscription
- Resource group: Choose your existing resource group from the drop-down or specify a name for the new resource group.
You need to specify the cosmos DB account name and its location in the instance details. As shown below, the default capacity mode is provisioned throughput.
If you have any queries on capacity mode, click on the hyperlink – Learn more about the capacity mode that redirects you to Microsoft documentation.
Click on the Serverless capacity mode as shown below.
We can configure the global distribution and regional setting for the Cosmos DB account. By default, it is disabled.
The networking section requires choosing the connectivity method. You can choose either the public endpoint, the private endpoint, or all networks. The default setting is all networks which is fine for this tip. However, you can choose a specific network, especially for the production environment.
Note: Do not use option – All networks in the production Cosmos DB accounts from the security point of view.
The backup policy can be either Periodic or Continuous. We already covered the difference between these policies in the existing published tips on Cosmos DB.
I skipped Encryption and Tags as these are not relevant for this tip. In the Review + create page, review your Azure Cosmos DB account – Core (SQL) API configurations. The below image shows validation success. Therefore, we can click on Create to start deploying the customized configuration.
Once the Cosmos DB account is created, the dashboard shows capacity mode serverless, as shown below.
You can add a new container to the serverless capacity account. It won't ask the details such as throughput manual or autoscale.
Cost Comparison of Azure Cosmos DB provisioned throughput and Serverless
To get a comparison in terms of the cost of provisioned throughput and serverless mode, we can use a pricing calculator. You can launch the pricing calculator from this URL - https://azure.microsoft.com/en-in/pricing/calculator/.
Provisioned throughput cost
Let's assume you have the following configuration for provisioned throughput Cosmos DB account:
- Request unit per second: 500 request units per second
- Total(Maximum) RUs in a month(720 hours): 1296,000,000
- Your target consumption: 20,000,000
Therefore the cost as per the pricing calculator will be as below:
- A = The price per 100 RU/s per hour = $ 0.008
- B = Total number of hours = 720 hours
- C = 500 Request units per seconds
Cost for provisioned throughput = USD (A* B* C )/100
- = 0.008*720*500
- = $28.80
The cost in provisioned throughput is constant for request units per second. However, the price in serverless capacity is dependent on the million request unit costs.
Serverless throughput cost
The Serverless Cosmos DB calculates costs per million request units. For example, it costs $0.25 for 1 million RUs in East US.
Serverless tier also costs for transactional storage apart from the request units. It charges $0.250 per GB \month.
If we increase the consumed request units in serverless capacity with 20million RUs, the cost in East US is $50.00
Note: We have not considered the storage cost in both provisioned and serverless capacity. The storage cost is the same in both modes.
Comparison between Provisioned throughput and Serverless mode
|Configurations||It defines request unit per second (RUs) throughput. Every second, the configured RUs are available for database activity.||It does not use any provisioned capacity. It charges based on RUs consumed.|
|Scaling||Manual or Autoscale||Autoscale|
|Geo-distribution||Available (unlimited number of Azure regions)||It supports only run in 1 Azure region|
|Maximum storage per container||Unlimited||50 GB|
|Performance||< 10 ms latency for point-reads < 10 ms latency for writes covered by SLA||< 10 ms latency for point-reads < 30 ms for writes covered by SLO|
|Billing model||Per-hour basis for the RU/s provisioned.||Per-hour basis for the consumed RUs|
- Explore the provisioned throughput and serverless capacity and choose what fits your requirements.
- Refer to these existing tips on Azure Cosmos DB.
- You can go to Microsoft docs for Cosmos DB official documentation and new announcements.
About the author
View all my tips
Article Last Updated: 2022-04-07