Cloud adoption has been consistently increasing year over year for a while now. The service offer presented by the main cloud vendors has been growing as well, enabling companies of all kinds and sizes to evolve the way they do business. In most industries, the pandemic has accelerated cloud implementation, as outlined in the picture below.
In the early stages of the “Cloud Era”, Infrastructure as a Service (IaaS) and Platform as a Service (PaaS) offerings were the most widely used service types, but these days Software as a Service (SaaS) has become a way for the cloud vendors to reach new users and markets, boosting the overall adoption even more. Office365 is a very good example of how a traditional software product migrated to SaaS and revamped its value proposition and market success.
Despite the current adoption, one typical concern that remains for existing and potential users is cost management. Vendors frequently claim there is great predictability and control of the costs associated to using the cloud and they even provide tools to help calculate potential investment upfront. While this promise can be considered as true in general terms, it certainly requires some in-depth knowledge about concepts and implementation details to properly leverage those benefits.
While every company and team are different, there are some key considerations that apply for everyone when it comes to create a culture of cloud cost management:
Understand your needs
Every organization is unique. The starting and final states of a cloud implementation will likely be different for everyone and the fact that many teams are adopting some trendy set of technologies does not mean you need to follow exactly that path.
The first step towards building a cost management culture around cloud adoption is to analyze what your company really needs to accomplish its goals. A strategic mid and long-term vision should always be considered, but having a clear view of what you need to achieve helps to narrow down the vendor and service options to evaluate in detail.
Do I need my applications to be highly available? Are there any clear usage patterns on the times my users access the applications I would take to the cloud? Will my users access my applications from all over the world? Can I go for a containerized approach? Could I introduce serverless components in the solution? Answers to these questions will help you define which cloud services make the most sense to your case when the context of your unique situation is added.
Aim for elasticity… Or not…
One of the greatest benefits of the cloud is you just pay for what you use. You are basically moving from a CAPEX (CAPital EXpenditures) to an OPEX (OPerational EXpeses) model, and that means that the goal is to consume only what you need.
In the context of cloud, elasticity is defined as the ability to grow or shrink your infrastructure as you need. There are multiple ways you can configure automatic scaling (up or down) rules that will enable your organization to add or remove cloud resources based on key execution events and pay just for what you used.
There are some scenarios where elasticity doesn’t add much value, since you know for sure you will need the services to be up for long periods of time. Good news is cloud vendors saw that coming and have defined pricing methodologies that allow reservation of resources for longer periods of time. In return for the reservation & commitment to consume, cloud vendors will offer aggressive pricing options.
Once again, it all depends on what you need.
Understand the pricing models
Pricing is probably one of the aspects cloud vendors are more specific about in the documentation of their service offer. The pricing models vary from service to service and costs might be calculated slightly differently for equivalent services delivered by distinct cloud vendors. No matter what your needs are, a good understanding of the pricing models will allow you to make informed decisions considering the relevant aspects of your specific needs.
Exploring and using the cost estimation tools offered by the vendors will help you getting a general idea of cost for your scenarios but building culture of continuous evaluation of the actual cloud usage and billing is key to optimize the way you leverage the cloud.
Leveraging the resource tags to assign cost ownership (to teams, departments, etc.) will help you determine consumption & costs by department, in an automated fashion. Cost monitoring mechanisms and related alerting will help you catch cost leaks early on and plan for optimization cycles in a timely manner.
Besides the OPEX costs described so far, cloud adoption brings some “hidden” costs you need to consider:
- Migration costs related to moving your applications or data to the cloud, which will very likely include refactoring efforts
- Potential training for the technical teams that needs to be addressed in the early stages of the adoption
- Investment in infrastructure as code, configuration management and other modern practices to enable future savings in your operations.
- Finally, most organizations do not see this coming, but having some understanding around exit costs is extremely important. Major cloud vendors make exit an expensive proposition.
In summary, a cloud adoption process requires your organization to define a cloud enablement strategy that considers building a culture of cost management as one of its pillars. There are multiple benefits in moving to the cloud but being strategic about it is key to really leverage its real value.