The term DevOps was originally coined by Patrick Debois. DevOps is generally seen as an extension of Agile which ensures that faster, iterative code development results in equally fast code deployment. DevOps was first used by Gene Kim in the Phoenix project.
DevOps (Development + Operations) is the set of practices, approach, tools and personnel required for efficient collaboration and seamless work between applications development and IT operations. This enables delivery of services at higher velocity, increased pace of producing improved products through adoption of software development, infrastructure automation and improved management process through complete integration of development and operations team. It involves efficient liasioning between system administrators and developers and help align the technological objectives and business requirements. It enables continuous build and continuous deployment creating Code—> Build —–> Test ——->Release———>Deploy—–>Manage—–>Monitor—->Plan—->Code
Since the process of DevOps is different, the tool set used is also different. The DevOps tool chains are basically used for
- Coding- It includes code development tools, source code handling tools, code merging tools
- Build Automation- It includes deployment of an automated code in the live environment and the tool is integrated to the chosen language of programming. It increases reliability as the error chances of manual build are nullified alongwith making the process more consistent and repeatable.
- CI/CD- Continuous Integration and Continuous deployment requires merging of codes, deployment of small changes in codes as a routine task alongwith affording unit testing for early detections of bugs and errors. All these activities require specific set of DevOps tools. This process helps in minimising the time to the time to market.
- Packaging- It includes package managers and artifact repositories
- Releasing- It includes change management tools, release automation tools and so on
- Configuration management and orchestration- It includes infrastructure as code tools. It helps in managing and provisioning infrastructure through automation and codes. It also helps in documentation and authentication. Orchestration is an automation that enables automated response to various problems and issues in the workflow or processes and hence help attain stability. DevOps tool chains have multiple orchestration tools.
- Monitoring- It includes performance monitoring and user experience tools. You use the monitoring tools to collect data about the performance of your infrastructure and services, thereby helping quicker recovery, generating vital data for root cause analysis alongwith peaking up visibility across teams
The top DevOps tools for all the above functions include
- Katalong TestOps
- Patch manager
- Pager duty
- Pivotal Tracker and more
In DevOps model two teams may be merged into a single team who may hand the entire lifecycle application process from build to test to deployment and then operations. This team develops multiple skills which are not limited to some single function or activity in the lifecycle. Sometimes security is the main priority of the DevOps team. Then the security team is integrated with development and operations to form a single team. This is known as DevSec ops. These teams use a set of tools and technology stack that helps them accomplish tasks (like provisioning of infrastructure, pre-deployment assessment) that would have normally required assistance of other teams.
Organisations that used traditional methods for software development and use often complained of long gaps between software releases and the different stages of software development and delivery. These organisations could effectively use DevOps to knit their QA, development, operations and delivery teams and hence hasten up software development lifecycle and delivery, making even the delivery team accountable for fixes required.