What is DevOps?
DevOps is an emerging model of product delivery and full lifecycle management that emphasises a holistic, end-to-end process. We view it as the “engine room of change” that allows new ideas to be delivered quickly. DevOps not only seeks to remove the silos between Development and Operations, but all of the key stakeholders in the application lifecycle.
It involves small teams from software and operational disciplines working collaboratively with each other and the business community to deliver deployable applications that will run and scale reliably, maximising payback. DevOps also involves introducing software automation tools to improve the speed, quality and reliability of the software deployment process.
Traditional models of application development and service delivery, which have multiple handovers between silos, face challenges when trying to achieve higher rates of change. Some of these existing models of delivery such as PRINCE2 and ITIL are over 20 years old, and pre-date many of the recent innovations in IT such as the Cloud, Infrastructure as Code, software defined networking, improved version control and collaboration tools.
DevOps is a response to the perceived weaknesses of these existing models and seeks to draw from Agile, Lean, Systems thinking, the Theory of Constraints and many other areas to create a new model that emphasises the fast flow of work across the entire application and product lifecycle.
DevOps focuses on the end-to-end activities involved in delivering software to users, meaning the ability to deploy, maintain and scale an application are treated as high-priority features rather than afterthoughts. By considering such features right from the beginning of a product’s inception, DevOps teams are able to deliver applications that are far more fit-for-purpose, maintainable and stable when deployed to the production environment.
DevOps challenges organisations to be “product-centric” and to look beyond the “project model” of IT. Teams should be fully responsible for everything that concerns their software product all the way from inception through to retirement. This collective responsibility prevents individuals from just performing their one element of the work without considering its impact further along the software delivery chain. As well as developers and operations staff, Product Teams should include roles from all facets of the organisation, including business analysts, user experience designers, testers, quality assurers, database administrators and security professionals. Product Owner roles should also be created to bring the team together.
Any product that is brought to market must be considered as a whole “system” as part of the value chain that runs from the initial idea through to the delivery of that idea as a finished product to the client. The mantra for this is adopted from Lean product development i.e. that staff must focus “from concept to cash” and not just on their own silos within the value chain.
DevOps has been proven to increase the speed, efficiency and quality of software delivery as well as improving staff morale and motivation. By taking a DevOps approach to the software delivery process, the resulting ease and reliability inspires the confidence to release frequently. This allows for continuous feedback to be rapidly incorporated into future releases and for software delivery to be truly Agile.