Digital Mettle is a custom software development company with 17 years of experience developing web, mobile, and desktop solutions for a wide variety of customers. We recently encountered a situation with a potential new client which made us realize that in the age of cloud computing, many people don’t know what costs are reasonable. Our advice: Engineer to start small and scale up when needed.
We recently received an RFP (request for proposal) for the development of a new MVP (minimum viable product). The RFP included the specification:
- Application Technology: ASP.Net Core/C#
- Serverless Architecture: Azure Functions
- Backend RDBMS: Azure SQL DB
The scale of the MVP is quite low, only a few hundred concurrent users maximum, and it will probably take several months after launch to reach that.
In our proposal, we included the estimate:
- We expect that, depending on options selected and user load, the Azure costs will be in the $100-$300 per month range for the first several months of operation.
We had a follow-up call to discuss our proposal, and one of the questions that came up was how arrived at that number. They were confused because they had used Azure’s online price calculator and had come up with a monthly cost “a full order of magnitude higher.”
After the call they shared this estimate for $1,786/month and asked what changes I would make. https://azure.com/e/2b2e8b50818041f9994d554b4d13828e
The stand-out monthly costs are:
- Azure SQL Database Managed Instance: $1,485.46
- Virtual Machines (2 vCPU(s), 7 GB RAM): $222.06
Here is the advice I gave them:
I would not include the virtual machines without knowing the specific use case they would be needed for. Besides automatically scaling up, the main point of your selected architecture of Azure Functions is to not have anything like virtual machines to manage and occurring costs when the system is not being used.
The biggest cost difference comes from our approaches to Azure SQL. You selected Type: Managed Instance and I always select Type: Single Database (or Elastic Pool, if there are multiple DBs). Some of our very small clients run their prototypes on the $5/month level, most jump immediately to $30/month on a wider release. I do not think you will exceed $75/month in your first year. Maybe you need some feature of the Premium tier, but if so that still only pushes you to ~$450/month.
The result is this estimate for $152/month.https://azure.com/e/96f32be3d1b648dc8d53f9c8a8f682db
For some comparisons between the Single Database and the Managed Instance types of Azure SQL Database, please refer to https://docs.microsoft.com/en-us/azure/sql-database/sql-database-managed-instance. This client does not fit into either of the two “Managed Instance is envisioned as preferred platform for the scenarios” listed.
I hope this “start small, you can always grow larger” thought process is able to help someone else who is experimenting with cloud computing for the first time.