Today, we propose a new concept to add to the DevOps mindset: Continuous Cost Control.
In DevOps, speed and continuity are king. Continuous Operations, Continuous Delivery, Continuous Integration. Keep everything running and get new features in the hands of users quickly.
For some organizations, this approach leads to a mindset of “speed at any cost”. Especially in the era of easily consumable public cloud, this results in a habit of wasted spend and blown budgets – which may, of course, meet the goals for delivery. But remember that a goal of Continuous Delivery is sustainability. This applies to the coding and backend of the application, but also to the business side.
With that in mind, we get to the cost of development and operations. At some point in every organization’s lifecycle comes the need to control costs. Perhaps it’s when your system or product reaches a certain level of predictability or maturity – i.e. maintenance mode – or perhaps earlier, depending your organization.
We all know that agility has helped companies create competitive advantage; but customers and others tell us it can’t be “agility at any cost.” That’s why we believe the next challenge is cost-effective agility. That’s what Continuous Cost Control is all about.
What is Continuous Cost Control?
Think of it as the ability to see and automatically take action on development and operations resources, so that the amount spent is a controlled factor and not merely a result. This should occur with no impact to delivery.
Think of the spend your department manages. It likely includes software license costs and true-ups and perhaps various service costs. If you’re using private cloud/on-premise infrastructure, you’ve got equipment purchases and depreciations, plus everything to support that equipment, down to the fuel costs for backup generators, to consider.
However, the second biggest line item (after personnel) for many agile teams is public cloud. Within this bucket, consider the compute costs, bandwidth costs, database costs, storage, transactions… and the list goes on.
While private cloud/on-premise infrastructure requires continuous monitoring and cost control, the problem becomes acute when you change to the utility model of the public cloud. Now, more and more people in your organization have the ability to spin up virtual servers. It can be easy to forget that every hour (or minute, depending on the cloud provider) of this compute time costs money – not to mention all the surrounding costs.
Continually controlling these costs means automating your cost savings at all points in the development pipeline. Early in the process, development and test systems should only be run while actually in use. Later, during testing and staging, systems should be automatically turned on for specific tests, then shut down once the tests are complete. During maintenance and production support, make sure your metrics and logs keep you updated on what is being used – and when.
How to get started with Continuous Cost Control
While Continuous Cost Control is an idea that you should apply to your development and operations practices throughout all project phases, there are a few things you can do to start a cultural behavior of controlled costs.
- Create a mindset. Apply principles of DevOps to cloud cost control.
- Take a few “easy wins” to automate cost control on your public cloud resources.
- Schedule your non-production resources to turn off when not needed
- Build in a process to “right size” your instances, so you’re not paying for more capacity than you need
- Use alternate services besides the basic compute services where applicable. In AWS, for example, this includes Auto Scaling groups, Spot Instances, and Reserved Instances
- Integrate cost control into your continuous delivery process. The public cloud is a utility which needs to optimized from day one – or if not then, as soon as possible.
- Analyze usage patterns of your development team to apply rational schedules to your systems to increase adoption rates
- Allow deviations from the normal schedules, but make sure your systems revert back to the schedule when possible
- Be honest about what is being used, and don’t just leave it up for convenience
We hope this concept of Continuous Cost Control is useful to you and your organization – and we welcome your feedback.