DevOps has many benefits and can give your business the edge over your competition.

But how do you implement DevOps?

Should you start with tools? Should you encourage your dev and ops to collaborate more? Or, should you just create a DevOps department and wait for results?

Not really…

In this article, I’m going to look into the four essential elements of DevOps, which are culture, automation, measurement, and sharing — or, simply, CAMS.

We’ll start with what CAMS is and why it’s important. Then, we’ll move forward to explain each of the four elements of CAMS. And finally, we’ll find out why implementing the CAMS model enables continuous delivery, creates a healthy DevOps environment, and leads to DevOps success.

Let’s find out how to implement DevOps with CAMS, then!

What Is CAMS?

CAMS (short for Culture, Automation, Measurement, and Sharing) is a fundamental model of DevOps adoption. The term was coined by Damon Edwards (@damonedwards) and John Willis (@botchagalupe), authors of DevOps Cafe, back in the early 2010s.

Originally defined as “the culture of empathy,” CAMS offered a quick and simple way to think about DevOps. Basically, it was — and still is — a basic checklist for organizations aspiring to successfully adopt DevOps.CAMS model in DevOps

The CAMS model is so powerful because it shows what DevOps is really about — people, process, and tools — and emphasizes the importance of cultivating and nurturing those three throughout a DevOps journey.

What DevOps is really about

Now, let’s look closer at the four elements that constitute CAMS.

C — Culture

Culture is the cornerstone of DevOps.

Here’s what Gene Kim (@RealGeneKim) says about it:

What these organizations [that have adopted DevOps] have in common is a high-trust culture that enables all departments to work together effectively, where all work is transparently prioritized and there is sufficient slack in the system to allow high-priority work to be completed quickly.

In fact, when you start researching how to implement DevOps, you’ll quickly find out that you shouldn’t start with either tools or processes — you start with people, with incorporating DevOps culture in your organization.

Why so?

Because DevOps is all about learning how to work differently:

  • Establish common targets and select common issues instead of optimizing processes within the department’s silos
  • Cooperate on tasks with other departments instead of trying to complete them independently
  • Adopt Agile and work in a cross-functional manner instead of passing off the tasks, not caring about the results, before or after
  • Share feedback with peers and management instead of trying to cover it up and resolve any issues with no outside help
  • Continuously evaluate and improve instead of sticking to step-by-step processes, or pushing updates inconsistently
  • Establish KPIs on important processes and religiously measure them to achieve continuous improvement
  • Exercise openness, transparency, and respect instead of pushing the department’s agenda above all else

And these are just basic principles of DevOps culture. Some of its essential elements are also illustrated in the image below.

DevOps culture principles in CAMS

A paramount shift in culture is what organizations need to propel change in processes and to encourage the teams to use DevOps tools more efficiently. Otherwise, it won’t be DevOps.

Note: Baking DevOps culture into your organization can be challenging, mostly because all organizations are different, and you should never blindly copy what and how others have done it. Consider DevOps consulting services to assess your organization’s DevOps maturity.

A — Automation

Automation is pretty much synonymous with DevOps.

DevOps is all about “repeatable” systems — systems that continuously push code from development into production in an automated manner.

DevOps automation stages

Ideally, infrastructure, software releases, testing, deployment, core security tasks, compliance policies, and configuration management tasks should be automated.

DevOps automation helps put these “repeatable” systems in place.

The importance of automation in DevOps is hard to underestimate. It streamlines processes and tasks, reduces manual error, cuts on failures and rollbacks. Automation allows to increase efficiency, improve performance, and deliver value to the end-user more rapidly, which is the goal of DevOps in the first place.

Basically:

If you don’t have automation, you don’t have DevOps. It’s as simple as that.

M — Measurement

Measurement is all about four things:

  1. Monitoring and tracking performance throughout the software development lifecycle
  2. Collecting, analyzing, and providing ways of acting on feedback
  3. Analyzing mistakes and figuring out how to avoid repeating them
  4. Assisting in aligning teams to help them work on common goals

DevOps drives continuous improvement only if specific metrics are collected, measured, and analyzed in a continuous manner. Some of these metrics and KPIs are MTTR (mean time to repair), cycle time appears (i.e. lead time), costs, revenue, and employee satisfaction.

Major metrics and KPIs in DevOps

Here’re a few tips on how to collect and analyze metrics:

  • Come up with metrics to measure specific stages of the DevOps lifecycle
  • Keep your metrics open and transparent for all stakeholders
  • Establish measurement targets that are aligned with common goals
  • Ensure that your metrics aren’t mostly technical, but prioritize business goals as well
  • Follow up and re-establish measurement targets that aren’t fulfilled

In DevOps, you get what you measure. So if you want to drive value to your customer more quickly and efficiently, make sure that you can measure and act on the results.

S — Sharing

DevOps is a continuous everything culture — continuous delivery, continuous testing, continuous integration, and continuous improvement.

How to implement DevOps

In continuous improvement, you discover and fix bottlenecks, automate against their appearance, integrate fixes into the DevOps lifecycle, and communicate changes to stakeholders (and customers).

However, here lie two problems:

  1. People are generally afraid of communicating problems
  2. People hate sharing negative feedback

These are the bane of companies overridden by blame culture. Employees hide problems because they’re afraid to be punished or blamed, which creates an infamous blame cycle.

Blame cycle in DevOps

Bear in mind that people are always going to make mistakes; punishing and blaming people for their mistakes won’t help your organization.

How to encourage sharing information and feedback, then?

Don’t try to fix people — fix errors. Your job here is to identify the error and quickly fix it, not focus on who did what and why. Use mistakes to make your system more resilient. Encourage employees to ask questions and share their opinions to eliminate friction, too.

Enabling Continuous Delivery with CAMS

Continuous Delivery (CD) is a software engineering approach that enables safe, quick, and sustainable delivery of software, including new features, bug fixes, and configuration changes to customers.

It’s a stepping stone to Continuous Deployment and DevOps.

Continuous Delivery with CAMS in DevOps

And the good news is, CAMS facilitates and enables continuous delivery through:

  • Incorporating DevOps culture into your organization
  • Aligning teams, processes, and tools to automate tasks
  • Measuring progress based on specific metrics and KPIs
  • Sharing feedback without blame

To learn more about continuous delivery, check out Martin Fowler’s talk delivered at ThoughtWorks XCONF:

Conclusion

The CAMS model represents the four pillars of DevOps. It sinergizes culture, automation, measurement and sharing, and provides organizations with a basic checklist on how to implement DevOps step by step.

If you’re looking to adopt DevOps, kick off your organization’s transformation with CAMS: incorporate culture, automate processes, measure progress, and share feedback.

Looking to implement DevOps? Reach out to Squadex, an AWS Partner Network member holding a DevOps Competency status. For more details, check out our DevOps Consulting services.