Historically, the wide range of activities that fall within the scope of DevOps would have been separated into ‘system administration’, ‘software development’ and ‘support’ elements. Systems with similar functionality would often look different depending on the skillsets and preferences of the individual system administrators and developers involved. The use of automation was often ad hoc and of variable quality with limited consideration given to developing repeatable patterns that could be used for other projects. Software releases and maintenance activities often required significant system downtime.
Driven by the demands of agile software development methodologies, DevOps bring a paradigm shift that applies robust engineering processes derived from software development to the infrastructure and support aspects of a project. This means, where possible, abstracting infrastructure concerns into code artefacts stored in version control systems, adopting an automation first approach, using repeatable deployment patterns rather than ‘building snowflakes’ and a focus on collaboration across different disciplines.
The “DevOps” approach breaks down information silos, promotes end to end automation and uses small multi-disciplinary teams empowered to make decisions about the service. The outcome is an efficient service lifecycle that delivers functionality quickly whilst also retaining the ability to respond to change without compromising solution quality.