Reading time: 30 minutes
CAMS model was popularized by Gene Kim, the founder of the phoenix project. CAMS is an acronym that embodies the core values of DevOps that is:
These four elements are the foundational elements of DevOps and the role of each element is explained in detail in the upcoming sections with real life examples from top companies.
DevOps culture emphasizes on offering high quality service.
Adapting to a DevOps culture means transforming into an organization that focuses on delivering a high-quality service. Service not only means making the product available to the customer, but also it is to ensure that the product is in the best of its shape and it constantly meets the requirements of the customers.
To offer better service, teams should have the knowledge of how the product will be received and used by its customers. This will enable the teams to offer continued support service even after the product has reached the customers.
A DevOps organization’s primary motive is to ensure the performance of the product. The performance is tracked throughout its lifecycle to ensure that it continues to offer value to its customers. This is critical because the DevOps team in an organization is responsible for the different business processes, it supports and consistently works without any problems throughout the product life-cycle.
Service mindset is a critical aspect of DevOps culture, since the products developed with service mindset will meet the following conditions:
- Quality is given utmost importance right from the source.
- Early discovery of errors, especially right at the activity where these are created.
- Solving problems is easier and cheaper.
- Happy customers.
Establishing a DevOps culture - DevOps teams are driven by certain aspects in order to focus on delivering a high-quality service to customers. They are an atmosphere that promotes continuous learning, autonomy to experiment, a product thinking mindset, an engineering culture & focus on quality.
The Organizations should focus on creating an environment that propagates the above aspects.
- Enquiring users regarding the proper functioning of the product at regular intervals and provide insurance service. This is followed by electronic companies like LG.
- Upgrading the software of products previously purchased. This is followed by most software based companies like Tesla upgrades its cars regularly.
Technology advancements are leading to automation of routine tasks.
Job surveys conducted across the sectors have started showing the shift towards automating routine jobs and how today there is a heavy need for skills to automate. Today, automation is applicable to different industry sectors such as manufacturing, healthcare, transportation and IT.
In a software delivery lifecycle, many of the tasks are repeated and become routine. On handing over the process to the operation team as well, we identify many tasks that are routine and redundant. Testing, routine checks can all be automated to improve the efficiency of the entire delivery process.
Task Analyzability is defined as the extent to which, when an exception is encountered, there are known analytical methods for dealing with it.
Task Variability is defined by the number of exceptions to standard procedures encouraged in the application of a given technology.
Many tasks to deliver software has a relatively low task variability and a high task analyzability or the software delivery process can be transformed using tasks with low variability. A value stream analysis can help to determine where processes can be improved and help to determine to identify tasks with high analyzability and low variability.
First, the routine tasks need to be identified and then automated. Some routine tasks are scripted test execution, deployment execution and code compilation. Automation helps delivery teams to focus on non-routine tasks that have a high level of variability.
Automation of routine tasks will result in a shift, where the Software Delivery team members will mainly execute tasks with high variability and high analyzability. In other words, engineering tasks. This requires an organization to be based on an organic structure, with largely autonomous, multidisciplinary, self-organized, engineering teams. Organizations need to apply DevOps principles in order to bring value to the table.
Automated processes are repeatable. Cost of process execution is minimized.In other words, automation results in predictable and standardized outcomes. These concepts can be applied to software delivery processes.
- Using a task management software like FaceBook workspace to better manage work.
- Using meeting scheduling software to better manage collisions in meeting
- Automatically building and releasing software everyday (nightly builds). Followed by most Softwares like TensorFlow by Google
Measurement is fundamental for continuously offering value and improvement. Tracking important metrics and offering feedback helps improve the process.
Measurement and monitoring have to be integrated into your day to day processes as part of DevOps implementation. Three ways of feedback model are:
The First Way focuses the entirety of the system and ensuring that none of the defects at a local level affect the overall flow, performance or stability. This method ensure there is one single flow of feedback.
The Second way is about creating bidirectional feedback loops of moving from left to right and right to left. For this to happen, the feedback loops should be shorter in order to receive and send feedback sooner. This method helps in having a deeper understanding of the process.
The Third way of measurement is to create an environment of continuous learning, feedback and room for failure. In this method, we build an MVP, receive feedback and makes changes accordingly. It rewards teams for risk taking despite the failure.
- Regular employee surveys to capture the overall sentiment. Most companies do so at regular intervals.
- Capturing the issues reported by end users. For Software products, this is done using issue trackers like GitHub issues.
Sharing is one of the most important aspects of the CAMS model.
DevOps by definition is the collaboration of development and operations and sharing is fundamental to this. Implementing DevOps involves a constant interaction and most importantly knowledge sharing. Every team within an organization has encountered failures with regard to the people, processes, tools, projects etc. This knowledge has to be shared within an organization among the team members to ensure successful implementation of DevOps.
A blame-free environment is required for effective sharing. People do make mistakes and they tend to hide their mistakes, because of the fear of getting blamed or punished. Blameless culture is the culture of sharing.
- To ensure such an environment, companies provide time outside of work so that employees can mix.
- Formation of teams play a major role in this as well.
With this, you have an in depth idea of CAMS model in DevOps. Enjoy.