Cloud, cloud, and more cloud. I've spent a good portion of the last few years building scalable solutions that live on Public Cloud Infrastructure. I have to say, it is pretty exciting work and pretty frustrating as well. The challenge with scaling and measuring your cost of hosting in the Public Cloud is unlike what most businesses are accustomed to. Thought wise, you have to move away from the Total Cost of Ownership (TCO) mentality. Using this measurement is not effective in a public cloud hosting context since the total cost is ongoing and one that will vary depending on how your application is designed and the resources you decide to consume from your public cloud vendor.
For the modern IT organization, a better yard stick is the Total Cost of Solutions (TCS). TCS for an IT organization can be defined as:
The sum cost of each unit of resource consumed in the public cloud for each application hosted.
A resource is a virtual machine or any technology served as a platform that has a measurable price per unit of consumption. This is a better measurement for public cloud hosted applications since you would have to account for each resource consumed. Measuring consumption this way will also help to determine which parts of an application can be redesigned to save on the overall cost. This measurement should also include the additional unit of resources necessary to make the application scalable in the event of an uptick in usage or resilient in the event the public cloud vendor performs general maintenance and reboots some of the virtual machines your application relies on to function. All these costs vary by month and can be tracked.
Traditional use of TCO analysis measures a 3 to 5 year time horizon. By using a TCS approach, the time horizon can be annualized. That is, each year you have a clear measurement of how much your organizational IT spend is impacting your overall ability to deliver solutions. This also helps IT organizations in determining true cradle-to-grave costs for individual applications as the economies of scale shift towards Public Cloud Infrastructure.
An application that is hosted in the public cloud means the design of your application, whether for public consumption or private utility, must be tailored to the resources you will consume in the public cloud. The affinity of an application to its public cloud vendor makes it more or less transportable between public clouds. Said differently, choose your technology stack wisely as it will determine how strongly coupled your application will be and by extension your organization's dependency on your public cloud vendor. For instance, if you are going to host in Azure and you decide to use Table Storage then your affinity to Azure is going to be pretty strong because there is not another vendor that has the same technology available in their portfolio.
As a general rule, an IT organization should not offer a solution to its organization that costs more hosted in a public cloud than it would hosted using internal infrastructure. As IT organizations replace systems out of their datacenter, having this type of conversation should become part of the corporate IT governance charter. Today, there is no industry wide measurement of TCS as TCO is still the gold standard used by many organizations. If your organization is moving towards hosting in the public cloud, it will be benefit to start thinking in terms of TCS.
A software engineer, product nerd, educator, and martial artist with a knack for solving business problems.