Are you in sync with or ahead of the Digital Transformation curve? One of the main goals of Digital Transformation is providing a pleasant experience for customers during every interaction they have with your brand or company. No matter what technologies or products you put in front of your customers to provide that experience, those products need to evolve constantly to keep in sync with changing technologies and customer expectations.The old way of developing software and running IT operations is too constraining to have any cadence of frequent releases. DevOps is here to help you.
What Is DevOps?
DevOps is a set of practices used to break the siloed barriers between software development teams and IT operations (IT/Ops) teams. Historically, software development and IT/Ops teams have had different departmental leaderships, priorities, and metrics; and they do not collaborate much. The software development team develops a product and throws it over the wall to IT/Ops to deploy and maintain it. When there is a problem during deployment or in production, usually one team at a time tries to resolve it. Sometimes this leads to finger pointing, usually resulting in it taking a long time to resolve the issue.
DevOps recommends a set of practices and principles to knock down those barriers and improve transparency, collaboration, and the speed of product delivery to customers. When DevOps is practiced well, both teams will have a shared sense of responsibility. They will collaborate on the whole process and have visibility into each other’s work.
As there is heightened interest in DevOps to deliver software faster, DevOps as a technique is maturing fast.There is a DevOps assessment model called CALMS, which can be used as a reference model to measure whether you’re ready for DevOps. The acronym CALMS – which stands for Culture, Automation, Lean, Measurement, and Sharing – is credited to Jez Humble, the co-author of “The DevOps Handbook”.
The CALMS Framework
Since the concepts of DevOps are well captured by CALMS framework, let me discuss them briefly here.
C = Culture
To see the fruits of DevOps practices, it is not enough to put a DevOps toolchain in place. You need to change how people involved think, behave and perceive their responsibilities. This cultural change is not going to take place overnight. It is a gradual process, and as an organization, you need to actively pursue it. Both Development and IT/Ops teams need to have a unified goal of keeping their customers satisfied. The Operations team needs to be part of Development in some fashion and vice versa.
There should not be separate goals by department – e.g. one for Operations and one for Development. Unified goals require a shift in culture.
A = Automation
The journey from development to testing to production needs to be automated – meaning systems need to be repeatable. Most of the time it is a long and bureaucratic process to provide the infrastructure needed for projects. With the advent of cloud infrastructure and the toolset it brought forth, the practice of treating infrastructure as code helps in the quicker provisioning of infrastructure. On the development side, automation of testing plays a critical role in increasing the confidence level every time you need to make a change to the code. When you have test cases to cover most of the code base, and you know that automation is going to catch any regression, you can be confident and release frequently. On top of these, it is extremely important to have automated Continuous Integration and Continuous Deployment (CI/CD) pipelines to build the software, run test cases, and deploy to an environment.
L = Lean
Lean emphasizes the importance of producing incremental value to the customer. If you keep the batch size of the work small, it will be easier to deliver features quickly to the end users and get feedback. This feedback can be incorporated, and the next batch can be released. Agile Development Methodology, combined with Automation, can help keep the whole process lean.
M = Measurement
Measuring is an important step in the process to learn if DevOps is, in fact, bringing the desired results. Some of the things that can be measured are:
- Your DevOps process metrics, such as how long it takes for committed code to be in production, the frequency of releases, the number of issues coming out of each release, and the mean time to fix an issue.
- Metrics on usage of the application can provide insight into user behavior. Using some kind of telemetry to capture usage statics and analyze them will provide good feedback that will help you improve the system further.
- Proactively monitoring the health of the system can help you detect potential problems, even before they are experienced by end users, and allow you to fix them in advance.
- You also must align incentives so that different team members don’t work against each other. If you don’t, it will lead to low productivity, team frustration, and roadblocks. The entire team needs to be aligned to achieve the same outcome.
S = Sharing
Both the Development team and IT/Ops teams should understand they are part of one team that is working towards the common goal of keeping their customers happy. In a siloed environment, Development and IT/Ops perceive themselves as part of different teams and they have their own goals. In DevOps, the point of a unified goal and teamwork needs to be driven home through culture and practices
For example, your development team can include someone from IT/Ops, and they can participate in your daily scrum meetings and sprint reviews. Any backlog items related to infrastructure can be assigned directly to a person from IT/Ops. This way, both teams know the urgency of any needs and can act accordingly. The same goes for the IT/Ops teams. They can make someone from the Development team, preferably a senior person, part of their discussions. This will help Development understand how Operations can be changed to make it more conducive to the overall goal of Agile delivery.
The whole idea of being Agile and iterative is to experiment a lot and iterate quickly. In this kind of mode, failures are inevitable. It is important for the teams to have a common understanding that things are going to fail, and teams must develop a way to work together to quickly fix issues without resorting to blaming someone for the failure.
For proper sharing, you must encourage a blame-free environment. People tend to hide problems if they think they will be punished for mistakes – and punishment doesn’t help people make fewer mistakes. People will always make mistakes. Instead of trying to fix them, focus on fixing the systems.
A blame-free environment gives each member of the team the opportunity to give their opinion on what went wrong and suggest what can be done better next time. A blameless culture is a culture of sharing.
Importance of DevOps
Although one of the main efforts of a DevOps approach is to make sure that the IT/Ops and Development teams are working together and communicating with each other, one of the core values of DevOps is also customer satisfaction. The DevOps approach makes sure that products are being delivered to the customers faster than before and helps ensure they are satisfied with the value that they’re receiving. DevOps makes sure that the business’ value is reaching the end customer faster, better, and in a more secure manner. The immediacy of customer feedback on reported problems allows teams to quickly resolve any issues.
The DevOps approach is specifically designed so that business innovation and process improvement are realized quickly. With an ever-evolving market – new products rolling in and competition becoming fiercer with every passing day – the importance of DevOps becomes very clear. In this era of Digital Business, it is critically important to have technology at the center of your business strategy and constantly innovate utilizing digital channels. The DevOps practices can help your organization to experiment with ideas faster and find the successful ones before your competitors.
Benefits of DevOps
There are various benefits associated with a DevOps approach and they are multidimensional – from business benefits to benefits in the technical field to ensuring your customers are happier.
Below are some of the main benefits of this approach:
- DevOps ensures that your organization’s product delivery is faster and better than before
- DevOps can increase the quality of your software, as automation can detect regression issues faster
- With both teams working together and complimenting each other, DevOps allows you to have a more stable operating environment
- DevOps makes your resource utilization more efficient
- DevOps allows you to have enhanced visibility into your development, especially into outcomes and systems automation
- DevOps derives innovation, as both teams are working together and collaborating constantly that can lead to better ideas
- Ultimately, it leads to happier customers
The DevOps approach has much potential and has already proven to be very beneficial for the organizations that have deployed it. It is very important to understand the principles of the CALMS framework and follow them while implementing DevOps at your organization. A lot of organizations have adopted Agile development methodology, and that is definitely a step in the right direction. But, if you haven’t taken the time to implement DevOps practices to change the methods on the IT/Ops side, you won’t have a good cadence of frequent releases. Also, be aware of the fact it is not just implementing the tools. It is a lot about changing the culture. Although all the practices of DevOps sound intuitive and simple, it takes time and effort to get it right. It is not a bad idea to seek external help to get it started and reach certain maturity.