DevOps is the blending of tasks performed by a company’s application development and systems operations teams. The term DevOps is being used in several ways. In its most broad meaning, DevOps is an operational philosophy that promotes better communication between development and operations as more elements of operations become programmable. In its most narrow interpretation, DevOps describes the part of an organization’s information technology (IT) team that creates and maintains infrastructure. The term may also be used to describe a team of software engineers who strategically look at the entire software delivery chain, overseeing shared services and championing the use of new development tools and best practices.
Traditionally in the enterprise, the development team tested new code in an isolated development environment for quality assurance (QA) and — if requirements were met — released the code to operations for use. The operations team deployed the program and maintained it from that point on. One of the problems with this approach, which is known as waterfall development, is that there was usually a long time between software releases and because the two teams worked separately, the development team was not always aware of operational roadblocks that might prevent the program from working as anticipated.
The DevOps approach seeks to meld application development and deployment into a more streamlined process, shifting some of the operation team’s responsibilities back to the development team in order to facilitate continuous development, continuous integration, continuous delivery and continuous monitoring processes. The necessity for tearing down the silos between development and operations has been expedited by the need to release code faster and more often in order to help the organization respond in a more agile manner to changing business requirements. Other drivers for breaking down the silos include the increasing use of cloud computing and advances in software-defined infrastructures, microservices, containers and automation.
New software tools have sprung up to help organizations automate testing and create a more streamlined development and release pipeline. Such tools include GitHub for storing code, Puppet and Chef for configuration management, Nagios for monitoring how changes to code affect the environment and Splunk for operational intelligence. Although marketers have jumped on the DevOps bandwagon, there is really no such thing as a “DevOps product.” There is only software that will help the development and operations team work together more efficiently and respond to changing requirements more flexibly.