There usually are a lot of queries that come our way from organisations asking about how to improve the agility of their IT solutions and their associated value streams. More often than not the enquiry is around DevOps and how we can help their organisation and solutions. We have therefore provided a small explanation here, on what DevOps is and how it helps your organisation.
What is DevOps?
DevOps as a philosophy is a consolidation of various Agile principles and practices and essentially means there is a tight integration between the development and operations team. It does not mean developers do operations or vice-versa but rather about how they are both integrated together to implement a lean and agile delivery cycle that is a shared responsibility of both, resulting in improving business value. There can however be some shared responsibility between the teams in terms of shared resources.
Cornerstones of DevOps philosophy
Version controlled Small and Reversible Changes
One of the most important cornerstones of a DevOps organisation is the ability to plan and execute small reversible changes on applications. This aligns with principles of flow in a traditional enterprise that aims to keep the number of Work in Progress Items to a minimum size and number. This enables a rapid and smooth flow of change items through the delivery pipeline. A reversible change is something that enables an easy rollback if it fails a set of tests, before it is released into production. Version controlling the changes is an important part in enabling tracking granularity of the change. It increases ease of communication regarding the change to stakeholders and incase of failure to easily rollback to a previously known good state.
`Automate everything` is a core principle of devops. Automation enables the smooth flow of changes through the delivery cycle, as more often than not, if there is no automation, it causes delays and issues due to human error. Automate the deployment of changes, have hooks that test the code, measure the success of a deployment by specifying and measuring against KPIs. Setup of operational monitoring metrics, security scans, patching – All of these can be automated as part of the delivery cycle to ensure compliant and enable rapid development cycles
Infrastructure as Code
Everybody understands application code, however, one of the most important ethos of DevOps is to treat Infrastructure the same as application code is treated. I.e Infrastructure should be codified. This helps automation of deployment and reduces friction between developers and operation engineers for infrastructure provisioning. It also enables consistency of infrastructure between development and production environments. The codified infrastructure can then be version controlled and correlated to the application releases as well. Some well known approaches leverage containerisation and virtualisation as building blocks for a DevOps focussed organisation to enable availability of consistent infrastructure. We will be covering various approaches in future blog posts
Continuous Improvement through Feedback
This foundational cornerstone is a culmination of all the above discussed topics. Once an application and infrastructure is codified and version controlled, their performance KPIs and test results are automatically recorded, Security patches and scans are automated and results are made available to the stakeholders, this information is then made available in realtime to all relevant stakeholders either through dashboards or push notifications for exceptions. It then leads towards the maturity of the DevOps model, which is to enable quick experimentation to plan and deliver the next value adding feature or even a bugfix, based on the real time feedback being received.
An understanding of these principles is essential for any organisation to start their journey into the DevOps world. The following diagram, sourced from Atlassian, concisely illustrates a mature DevOps cycle.
By applying the cornerstones discussed, the diagram nicely summarises what we will end up achieving. I.e plan and build small reversible changes that are tested through automation (continuous integration) that are then deployed (continuous deployment along with infrastructure as code) which goes into production feeding into KPI metrics and all of this is backed by real time communication to stakeholders on every step ensuring transparency of development and operations.
To enable organisations’ DevOps journey there are a variety of tools and approaches for each of the cornerstones that can be adopted to help implement DevOps transformation, and as part of an ongoing series of blogs, we will look at these in more detail.