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 culture that strategically looks at the entire software delivery chain, overseeing shared services and promoting 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 that aligns development, quality assurance (QA) and operations team efforts. This approach also shifts 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.
The DevOps toolchain
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. 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.
DevOps as a Service is a delivery model for a set of tools that facilitates collaboration between an organization's software development team and the operations team. In this delivery model, the DevOps as a Service provider collects disparate tools that cover various aspects of the overall process and connects these tools to work together as one unit.
The role of DevOps engineers
The role of DevOps engineer does not fall along one career track; professionals evolve into the position from a variety of backgrounds. DevOps is often said to be more of a philosophy or a collaborative IT culture rather than a strictly-defined job description or skill set. Because the area is so broad, DevOps positions may be more suited to IT generalists than specialists.
For example, a DevOps engineer may start as a software developer that oversees aspects of operations. Conversely, a DevOps engineer may move up from a system administrator role because he or she has gained knowledge about coding, scripting, integration and testing.
There can be some overlap between DevOps and SysOps engineering roles depending on the individual organization and its technical needs, but it's the DevOps engineer whose responsibilities include changing business processes as needed to solve organizational problems and improve business outcomes.
DevOps Careers and Certifications
Most entry-level DevOps jobs require a degree in computer science or a related field that covers coding, QA testing and IT infrastructure components. Higher-level positions may require advanced degrees in systems architecture and software design.
This short, animated video explains how development and operations team that work together can be more agile.
Create, manage and deploy application stacks, bare metal servers, and VMs with Chef.