Adopting DevOps Culture With CALMS
The foundation for DevOps is culture. That’s the most difficult point of all five in CALMS. Without it, the other points are just minor improvements to everyday work.
Join the DZone community and get the full member experience.Join For Free
DevOps is quite a buzzword. There are plenty of articles describing what it is and what it isn’t. I think we can agree that it’s a culture, a way of work. I'm also sure that most of us have a general impression of what it should look like: development and operations working together, breaking down silos, delivering faster, automating, etc.
All of these ideas are important and true, but still only seem to create a partial description. I started looking for a more complex description, and I found a very interesting model describing the culture. It’s C.A.L.M.S.
C.A.L.M.S. is an acronym for the five major points that describe DevOps culture. Let's have a quick look at them
This is something that you cannot implement. First, you should start with people having a proper mindset that concerns all team members. Everyone should be focused on a common goal and help others achieve it whether it’s within your specialization area or not. Stepping out of your comfort zone and leaning towards becoming a full-stack engineer is encouraged.
We want to do as little boring stuff as possible. Therefore, everything that can be automated should be. That doesn't only mean writing scripts for testing and deployment but also adapting the idea of programmable infrastructure and having everything written down, versioned, and automatically managed.
Automating everything can be a pitfall that overcomplicates the infrastructure. Therefore, engineers should focus on keeping everything minimal, yet useful. That doesn’t only concern automation. Code deployments to the production environment should be small and frequent and whole applications should be developed in a way that's easy to understand. It also applies to team size; larger teams find it more difficult to agree on something.
Frequent releases give great flexibility but can put the production environment in danger. That’s why a developed application should be equipped with useful metrics and monitored in real time. In case of problems, the team should be notified quickly and be able to develop a fix. Teams can also monitor how new features influence user behavior.
Sharing is essential for improving the communication flow and making people work together. Therefore, it’s important to share ideas, experiences, and thoughts within the team, among teams, and even outside the company.
What I like most about this model is how these points interact with each other. Automation should always be lean and robust. Providing an automated CI and CD pipeline helps teams stay lean. While setting up monitoring, it’s better to choose only valuable metrics and set up handy dashboards and alerts. The metrics can be shared among teams to set up a more complex application analysis tool that automatically provides some wider context into the data we collect, which can be automatically analyzed and trigger lean changes in features.
The foundation for all these things is culture. In my opinion, that’s the most difficult point of all five. Without it, the other four points are just minor improvements to everyday work.
If you liked this article and would like to read about how this model applies to the team I used to work with, please let me know by leaving a comment.
Published at DZone with permission of Łukasz Przybyl. See the original article here.
Opinions expressed by DZone contributors are their own.