Explaining Key Principles of DevOps

Objectives

After completing this lesson, you will be able to:

  • Name principles of DevOps

Principles of DevOps

Our previous lesson gave you a definition of, the motivations for, and limitations of using DevOps when creating your software products. In this lesson, we turn to DevOps' basic principles and terminology as used within the software industry.

CALMS

CALMS is an acronym coined byJohn Willis, Damon Edwards, and Jez Humble, that has become a widespread tool for thinking about how DevOps works in practice. It helps a company to assess its ability to adopt DevOps approaches to software development. Each of the letters stands for the following:

  • Culture, which emphasizes that DevOps is as much about cultural change within how an organization operates, as it is about technical or commercial change.
  • Automation, which eliminates repetitive manual work, yields repeatable processes, and creates reliable systems.
  • Lean, which focuses on ensuring that all processes are defined by continuous improvement throughout the lifecycle of the product's development.
  • Measurement, which focuses on proving the ways in which a product's development is continuously improved by gathering and understanding measurable data about the production process.
  • Sharing, which emphasizes spreading these approaches to product development across both Development and Operations teams, so as to ensure a standardized approach to development.

Culture

A cultural transformation towards a learning organization in which changes are embraced by cross-functional, empowered teams is vital for a working DevOps model. Therefore, establish an autonomous and trustful work culture, develop common goals, and live a positive failure culture.

FromTo
Functional silosCross-functional teams
HeteronomyAutonomy
Avoiding risk and failureSeeing failing as a learning opportunity
'Never revise' policyContinuous process review
Project thinkingProduct Mindset

Examples:

  • Working out loud
  • Screw-up nights
  • Tell it like it is

Automation

Try to automate everything you can: testing, configuration, infrastructure, and operation tasks. Set up reliable toolchains. Avoid repetitive tasks. Create consistency and ensure repeatable results.

Examples:

  • Test automation
  • Automated Continuous Integration and Continuous Delivery (CI/CD) pipelines
  • Automated alert remediation
  • Automation of recurring operation tasks
  • Virtualization with Kubernetes

Lean

  • Adopt lean principles, such as systemic thinking.
  • Deliver fast and continuously, in small chunks, to get fast customer feedback.
  • Eliminate waste wherever possible and focus on value.
  • Fail early, fail often.
  • Establish continuous improvement processes to identify and overcome bottlenecks.
  • Make sure that quality is intrinsically built-in.
  • Reduce the cognitive load of your teams.

Examples:

  • Continuous Delivery
  • Agile methodology and concepts

Measurement

"You can only improve what you can measure": use scientific methods to understand the impact of your work and enable data-driven decisions.

For this, get transparency along the complete lifecycle – such as about the performance of your DevOps team, the coverage with automated test cases, your pipelines, issues with your application, and typical KPIs. Then, this transparency will be used to identify bottlenecks and other areas with potential for optimization in the next improvement cycle.

Example metrics:

  • DORA metrics (deployment frequency, lead time for changes, change failure rate, time to restore service, reliability)
  • Mean Time Between Failures (MTBF)
  • Mean Time to Repair (MTTR)

Sharing

  • Actively fight knowledge silos and dismantle them towards cross-functional teams with common goals and efficient communication.
  • Strive for information transparency.
  • Share knowledge, responsibility, success, failures.
  • Share within your team – and between teams/companies.

Examples:

  • Team celebrations
  • Show & tell sessions
  • Pair programming

The DevOps Continuum

Watch below a short animation on how to establish an application lifecycle based on the DevOps Principles.

Summary

DevOps is a cultural approach, greatly impacted by lean and agile product development.

Based on the CALMS acronym, you can name the principles of the DevOps approach. In addition, you can rephrase basic phases of the DevOps life-cycle that builds upon those key principles of DevOps.

Log in to track your progress & complete quizzes