How cloud DevOps best practices apply to cost control

Companies with a dynamic cloud DevOps practice typically share some common core tenants.

These tenants are frequently applied to things like code delivery and security, but a company that fails to apply those tenants to cost control is destined to have a runaway cloud bill (or at least have a series of upcoming meetings with the CFO).

Here are some of those tenants, and how they apply to cost control:

1. Collaborative culture

By tearing down silos and sharing ideas and services, cost control can be a normal part of DevOps cloud practice instead of a forced decree that no one wants to take part in. Writing a script that is more generally applicable, or finding a tool that others can be invited to will cause others to save money and join in.

You may also get ideas from others that you never thought of, without having to waste time or replicate work.

2. Leadership

One common excuse for wasted cloud spend is, “well, that other group has cloud waste too!” By aggressively targeting and eliminating cloud waste, you can set the tone for cost control within your team, which will spread throughout the rest of the organisation.

This also helps to get everyone thinking about the business, even if it doesn’t seem like wasting a few bucks here or there really matters (hint: it does).

3. Design for DevOps

Having cost control as a central priority within your team means that you end up building it into your processes and software as you go. Attempting to control costs after-the-fact can be tough and can cause rewrites or roll-back instead of pressing forward.

Also, tacked-on cost control is often less effective and saves less money than starting with it.

4. Continuous integration

Integrating ideas and code from multiple teams with multiple codebases and processes can be daunting, which is why continually integrating as new commits happen is such a big step forward.

Along the same lines, continually controlling costs during the integration phase means you can optimise your cloud spend by sharing resources, slimming down those resources, and shutting down resources until they are needed by the integration.

5. Continuous monitoring

Monitoring and reporting, like cost control, are often haphazardly tacked on to a software project instead of being a core component. For a lot of organisations, this means that costs aren’t actively being monitored and reported, which is what causes yelling from the finance team when that cloud bill comes.

By making everyone aware of how costs are trending and noting when huge spikes occur, you can keep those bills in check and help save yourself from those dreaded finance meetings.

6. Continuous testing

Continuous testing of software helps find bugs quickly and while developers are still working on those systems. Cost control during the testing phase can take multiple forms, including controlling the costs of those test servers, or doing continuous testing of the cost models and cost reduction strategies.

New scripts and tools that are being used for cost control can also be tested during this phase.

7. Continuous security

Cloud cost control can contribute to better security practices. For example, shutting down virtual machines when they aren’t in use decreases the number of entry points for would-be hackers, and helps mitigate various attack strategies.

Reducing your total number of virtual machines also makes it easier for your security teams to harden and monitor the machines that exist.

8. Elastic infrastructure

Auto-scaling resources are usually implemented by making services scale up automatically, while the ‘scaling down’ part is an afterthought. It can be admittedly tricky to drain existing users and processes from under-utilised resources but having lots of systems with low load is the leading cause of cloud waste.

Additionally, having different scale patterns based on time of day, day of the week, and business need can be implemented, but requires thought and effort into this type of cost control.

9. Continuous delivery / deployment

Deploying your completed code to production can be exciting and terrifying at the same time. One factor that you need to consider is the size and cost of those production resources. Cost savings for those resources is usually different from the dev/test/QA resources, as they typically need to be on 24/7 and can’t have high latency or long spin-up times.

However, there are some cost control measures, like pre-paying for instances or having accurate usage patterns for your elastic environments, that should be considered by your production teams.

Full cloud DevOps cost control

As you can see, there are a lot of paths to lowering your cloud bill by using some common cloud DevOps tenants. By working these ideas into your teams and weaving them throughout your processes, you can save money and lead others to do the same. Controlling these costs can lead to less headaches, more time, and more money for future projects, which is what we’re all aiming to achieve with DevOps.

Chris Parlette is director of cloud solutions at ParkMyCloud