Reading Time: 6 mins
What is DevOps?
DevOps, stands for Development and (IT) Operations is an agile and lean-based set of practices, cultural philosophies, approaches and tools focused on promoting effective and faster release (product) cycles. The ultimate aim of DevOps is to deliver market-centric application/services with enhanced customer experience, reduced re-work and faster time to value. Further, DevOps forms an integral part of the Software Development Life Cycle (SDLC) that describes the different stages involved in the project from the ideation prep to launching the application.
When it comes to finding the origin of DevOps, the first two names to pop up are Patrick Debois and Andrew Shafer. In 2007, it was Patrick who first identified that there is a huge bridge between the Development and IT Operations that certainly needs to be addressed. Later, like-minded people like John Allspaw, Paul Hammond, Gene Kim eventually led for the coalescence and further developments of Dev and Ops. Not so later, from 2010 to 2014, the DevOps quickly turned into a buzzword which soon enough captured the eyes of analysts and leading companies like Target, Nordstrom and LEGO who became some of the first companies to take DevOps to the enterprise level. As of the 2018 Statista report, seventeen percent of businesses have fully embraced DevOps compared to the ten percent in 2017.
The primary goal of DevOps is to always align with the business objectives. Though the implementation of the DevOps practice streamlines the end-to-end software development life cycle, the ultimate aim is to cut-down the huge investments and thereby, to increase net profit, return on investment (ROI) and cash flow. It does this by promoting cross-functional teamwork and optimizing the flow of value (for the ideation to reach the end-user).
Though umpteen number of principles have been suggested and created on the go, the key essence underlying all the principles of DevOps can be summed up into the following seven points. They are;
- To deliver continuous value to the customer
- To foster collaboration, visibility and calibration
- Enabling accountability among involved teams
- Prioritizing automation at all possible junctures
- Incremental progress and shorter release cycles
- Implementing robust monitoring and testing activities
- To accelerate innovation and market adaptability
How it Works
The DevOps comprises various stages that are designed to be performed in an iterative and cyclic manner. It is a continuum process that targets continuous improvement via continuous development , integration, testing and delivery/deployment. In this way, any potential defects cropping up at any stage will see through an early fix and eventual re-testing.
- Plan: Define and plan the type of application you need to develop as per your business specifications and requirements.
- Code: Next to establishing the project layout, the development of the code as per the required programming language will be carried out. A set of coding standards and the version control systems like Git will be used in the development and maintenance of the code.
- Build: The build is done by integrating all the modules developed by various developers in isolation. Using the automated tools, it is then compiled and packed for the production release.
- Test: Post the code compilation, continuous testing will be performed to ensure the optimal code quality. In case of a test failure, the erroneous code will revert to the needed previous stage and the cycle repeats.
- Release: After ensuring that the build passes all the necessary tests, it is then ready to deploy into the Staging environment. Subsequently, a number of releases will be executed to make sure that the software reaches its pre-defined milestone at every iteration.
- Deploy: The dependencies needed for the software will be set up in the production environment, and after deployment, it is made sure that the carried out changes must not affect the site’s functionalities.
- Operate: During this stage, the Operations team works closely to detect any incorrect behaviour and other possible bugs found in the production stage. Post which, the identified issues are fine-tuned to deliver the expected quality.
- Monitor: Based on the customer feedback and gathered information about the application’s behaviour (after release), the steps will be taken to change the business plans so as to resolve the identified pain points. Further, monitoring is an on-going process that will be carried out post resolving the issue.
At the time of finding any unexpected and inappropriate performance, the build can revert to any needed stage for any number of times until it attains the expected quality.
- Test against production-like environments
- Deploy more frequently and securely
- Assessing quality metrics via monitoring
- Optimize customer feedback
As mentioned earlier, DevOps cannot be constrained as a single methodology, yet there are a few common practices that ensure the successful implementation of DevOps into one’s SDLC process.
Communication and Collaboration: Promoting communication and collaboration among the software development teams is the supreme motto of the DevOps practice. It does this by enabling a mode to share information (even to the non-technical persons, i.e Sales) faster using chat and project tracking apps. In this way, the entire team comes together to work closely.
Release Planning: Well-defined release planning and management processes are necessary to establish business capabilities and release timeline to the end-user. Before, it was the spreadsheets and long-boring meetings that managed the release road maps, delivery schedules and much more. With the advent of automated agile and lean practices, the processes are now streamlined to track the end-to-end traceability.
Continuous Integration: In this practice, the developers regularly commit code into a shared repository. Later, an automated build and testing process will be followed. Daily commit helps to the early detection of bugs and early bug detection prevents potential defects ending up in the production stage.
Continuous Delivery/Deployment: It is a continuum of CI wherein, the integrated code will undergo an automated testing to deliver/deploy into both the Staging and Production environment. The aim is to keep the product always in a deployable state as a software-ready-product. The Continuous Delivery/Deployment depends on the infrastructure provisioning and monitoring tools to detect defects that we are not found before deployment.
In CD, the IT automation and configuration management tools such as Chef and Ansible used for code deployment; monitoring tools such as Splunk and Nagios used for tracking for the code change. Further, features like Rollback capabilities and IT Incident Response also forms crucial for the selected tools in order to mitigate the undesired effects of the code in production.
Microservices: An architectural design that breaks down an application into a series of smaller and self-contained services. These distributed services communicate with one another using interfaces such as API and HTTP. Thus, the motto behind the loosely coupled distributed services is to build and maintain an application in a much easier way.
Infrastructure as Code: A sub-practice of DevOps that automates the provisioning of an infrastructure using code and other software development techniques. It treats an infrastructure similar to an application code and thereby, cut down the need for manual provisioning and managing of an infrastructure. Such infrastructure tools include Terraform, Chef, Puppet, etc.
Monitoring and Logging: It is an activity of monitoring and logging metrics with regard to an application performance or behaviour. In this way, a better understanding about the product’s (including at the time of updates) impact on the end-user can be assessed. The tools include Nagios, Spunk, Papertrail and so forth.
Based on the assessment conceived via monitoring, the data are stored (logged) for the stakeholders to react quickly to the customer feedback, and thereby, to change their business plans as necessary.
Continuous Improvement: Now that we have delved on all the DevOps practices, it is time to spare a time on measuring its benefits. The optimal way of reaching the business objectives not only depends on the practices you adopt but also on its success rate. Implementing the practices for once is not enough, it’s an on-going process, Learning from experimentation fashion must be adopted. The continuous measurement of the adopted practices on the basis of quality metrics must be performed.
Before and after DevOps
|1.||There is no contact between the Development and IT Operations teams||Promotes collaboration among the involved (Dev+QA+IT) teams|
|2.||Highly centralized||Decentralized and continuous|
|3.||Costly investment in scheduling planning systems||Automation makes scheduling simpler|
|4.||Delayed Delivery and Deployment||Continuous Delivery/Deployment|
|5.||Security at high risk||Integrated security (DevSecOps)|
|6.||Priority only to cost and capacity||The flow of productivity is addressed, along with cost and capacity|
|7.||Focused on preventing failure and reduced recovery rate||Attempts to fail small, early and recover fast|
DevOps Culture: First and foremost thing to execute in the adoption process of DevOps is to establish a DevOps culture. Collaboration and transparency are the key aspects in nurturing the DevOps culture. Trust and healthy collaboration must be ensured as each one of them comes with unique experience, skills and biases. A single business-centric goal must be defined instead of departmental objectives.
DevOps team: The DevOps team works by promoting effective communication and collaboration, no such single entity (or team) is allotted for resolving issues. The practice of cross-functional teamwork must be adopted by allocating no place for bureaucratic procedures.
DevOps as a business process: DevOps is no longer only a cultural or methodological practice rather it is a broader approach than you think. It is not restricted to a single definition, few stages or predefined work-flow, it can be scaled in and out as per the business requirements. In such a way, the DevOps can also be treated as a business process that improves the delivery capability to the end-user wherein areas of improvement is identified and needed techniques such as automation is introduced.
The Wrap Up
In such a fast-paced software-centric environment, an advanced and competitive approach must be embraced for the development of a software application. DevOps is one such practice that helps businesses to achieve the desired application performance along with reduced cost and risk. It is the only practice that addresses the gap among the software development teams and thereby, accelerates the project’s velocity, delivers quality product and drives maximum yield. Thus, DevOps enhances the way that a business delivers value to its customers, suppliers, and partners, it’s a vital business process, not just an IT capability.