Serverless: Cost of operations

Serverless - Beyond the buzzword is a book about Serverless aiming to give you all the information you need to make informed business decisions. This is part of a series of articles summarising some of the topics from the book.
More information about Serverless - Beyond the buzzword can be found here: serverlessbook.co

You can also watch the video version of this here: https://youtu.be/IsO-QD-c620 and https://youtu.be/LpW4T3cvMvc

Cost-per-user is an interesting metric to look at when comparing server-based and Serverless operational cost estimates. Estimating this for server-based is easy but less accurate, and for Serverless, it is a lot more complex but, given the right data, also considerably more accurate. Accurate cost-per-user estimates can be very powerful because they can unlock new business models such as paying based on usage or very accurate cross-departmental billing for internal solutions.

The cost-per-user over time is also an interesting metric. With a server-based solution, you will have at least two servers for redundancy. These two servers might be able to handle hundreds or even thousands of users when you might only have tens when you initially launch. This means when you first launch you have a very high cost-per-user with the cost of two servers spread over few users. As the number of users increases over time, that cost-per-user will come down. You are highly dependent on gaining more users to make the solution cost-effective, but initially, you will have to finance that growth out of pocket because the servers need to be up and running regardless of how many users there are.

Serverless is much more linear in terms of cost-per-user over time because you are paying based on actual utilisation. If you have ten users, then you are just paying for those ten users. When you have thousands of users, then that is what you are paying for.

In a server-based solution tracking a user going through the application can be challenging. How do you know what percentage of the server is being used by a given user? With Serverless a user will interact with the system triggering some request to a microservice or managed service that runs for a given amount of time. That request and the time it runs is explicitly linked to the need of that one user. You can track each user through a Serverless application attributing each service and microservice request and duration to that specific user. This can be incredibly accurate, giving you a very exact price point at the end of the month for what that user cost you.

More complex Web applications tend to be a hybrid approach instead of purely Serverless. It is difficult to track user activity in the server-based components, and you get some very interesting disparity between the pricing of the different architectures. I have had clients where the bulk of their application was Serverless but it was using a server-based database, for example. Their monthly invoice showed that the Serverless part of their solution, which accounted for around 90% of the total technology stack, cost 20-30$ per month, while the server-based components were costing them 700$ per month or more.

To go deeper on this topic and to read many more related topics about Serverless Architecture please buy the book Serverless - Beyond the buzzword here: serverlessbook.co

Serverless - Beyond the buzzword. The book about the strategic impact of Serverless architecture