DevOps is complementary with Agile software development; several DevOps aspects came from the Agile methodology.
Other than it being a cross-functional combination of the terms and concepts for “development” and “operations,” academics and practitioners have not developed a universal definition for the term “DevOps”. Most often, DevOps is characterized by key principles: shared ownership, workflow automation, and rapid feedback.
As DevOps is intended to be a cross-functional mode of working, those who practice the methodology use different sets of tools—referred to as “toolchains“—rather than a single one. These toolchains are expected to fit into one or more of the following categories, reflective of key aspects of the development and delivery process.
- Coding – code development and review, source code management tools, code merging.
- Building – continuous integration tools, build status.
- Testing – continuous testing tools that provide quick and timely feedback on business risks.
- Packaging – artifact repository, application pre-deployment staging.
- Releasing – change management, release approvals, release automation.
- Configuring – infrastructure configuration and management, infrastructure as code tools.
- Monitoring – applications performance monitoring, end-user experience.