We are aware how agile methodology has changed the way our software is developed and delivered these days. Though it has its benefits but since it results in rapid development and testing, followed by deployment cycles by different teams, sometimes sitting at same place, sometimes at different locations, poses a great challenge on meeting software quality expectations and the time with which quality issues should be addressed by the engineering team. Usually deployment teams are isolated from engineering’s deliverables, which often results in gap in understanding of how an end product would be used by the end customers.
‘DevOps’ mechanism is changing the way of our software development delivery process.
What is devops? Well, it is a practice which lays emphasis on close integration, collaboration between operations and development engineers participating together in the entire software development and delivery lifecycle, right from design through the development process, to production deployment, and then support.
It promotes a culture that brings development and operations teams together so that by understanding their respective perspectives and concerns, they can build and deliver applications into production reliably, safely, and rapidly. DevOps integration focuses on delivery, testing, feature development and maintenance releases in order to improve reliability and faster development and deployment cycles.
In a typical IT Infrastructure Monitoring product lifecycle, DevOps is adopted in following ways
In this phase, product and business owners collaborate to understand the requirements. These requirements, along with the technical specifications from IT operations and engineering team(s), are added into the product’s backlog for further grooming and are tracked usually through a tool which is accessible to all the stakeholders concerned. Additionally, application architects perform due diligence to analyze the impact on performance/existing monitoring behavior because of the proposed changes/enhancements in the existing application design against historical performance/monitoring behavior, once the application would get deployed in production for monitoring needs. In addition, feedback from operations team helps identifying performance bottlenecks and other problems that must be fixed in the application design once requirements to be incorporated are finalized for development.
During development phase, the requirements finalized in the design phase are developed with an eye on production monitoring needs. The engineering team analyzes how the new requirement performs once incorporated, by monitoring staging environments aka our replica of pre-production environments against the existing baseline performance and behavior. Test Driven development has been a trend off late, which has helped in uncovering defects during development phase itself before being passed to the validation phase. The key essence of this phase is to ensure that the developed application should be seamlessly scalable and stable once deployed in production environment, as per IT operations team needs, without impacting existing monitoring capabilities.
This phase helps application owners and developers to catch potential misconfigurations and other issues. Test servers are pre-configured based on IT operations team’s approved system/configuration to ensure monitoring needs are met in-line with production like environment. The testing team ensures functional problems are uncovered and in parallel IT operations team ensures they use their existing configuration scripts, tools etc. to validate the application monitoring behavior before being considered ready for deployment. The IT operations team plays a key role here as any problem found by them is of key importance since their test environment(s) is/are an exact replica of an end customer’s, and their past experience of configuring the application based on customer’s monitoring needs prevents the potential problem from slipping into the production stage.
Fig. 1: DevOps Lifecycle
In this phase, the deployment of application for monitoring is performed by operations team working closely with development teams. All deployments are governed by accessibility management and control across all monitoring applications to ensure full control of the deployment process with no impact to the existing monitoring. Additionally IT Automation, i.e integration of enterprise ticketing and management of application, is done to keep track of complete deployment cycle progress. Prior approvals in the form of change request are sought to ensure all the teams including operations teams are in sync for the expected upgrade planned.
In this phase, the IT operations and support staff monitors the performance of all tiers of the application under monitoring and cascades any problem observed to development team for quick action. This is managed in a 24x7 round the clock model considering business critical applications are under monitoring. In this phase application logs are consistently monitored, to uncover any potential issue. This phase has continuous checks being done by IT operations team.
In this phase, business owners and end users communicate feedback inputs after performing due-diligence of the application under monitoring. This helps teams identify early opportunities for improvement along with possibility of new opportunities. The monitored metrics collected and their reports/ dashboards generated, provide an in depth visibility in this phase.
Traditional approaches to the software development and delivery are no longer sufficient in today’s fast mode of IT infrastructure monitoring product development and delivery model. Thus, DevOps approach offers a powerful solution in the form of devops platform, as it reduces time to customer feedback, ensures close collaboration among the development and deployment teams from the initial stages, increases quality, reduces risk and cost, and streamlines process, culture, and tools across the entire lifecycle of the product. It thereby results in an adoption path to plan and measure, develop and test, release and deploy, and then monitor and optimize.