People often relate DevOps (short form for Development and Operations) to a Chef and/or a Puppet as for most of them, DevOps is all about using one of these tools. This is incorrect as DevOps is much beyond these definitions. For instance, there are vendors like Automic and Electric Cloud who provides an application release automation capability that can ensure that the code is packaged correctly with all its dependencies - which is similar to tools and technologies like Chef and Puppet that enable automated and continuous delivery as well as configuration management along with abstraction between modules of the code.
Though, Chef and Puppet are most well-liked automation and configuration management tools for DevOps, these are individual tools that are used to address specific parts of an overall DevOps strategy. These tools do not address the whole gamut of DevOps holistically.
To clear my view point, let me define what DevOps is - to me, DevOps in broad terms is an approach involving People, Processes and Tools in which business owners, development teams, operations team and quality assurance departments collaborate to deliver software in a continuous and automated manner that enables the business to be more agile and quickly grab the market opportunities and reduce the time to include customer feedback and trends into the products. The DevOps is more relevant to the 'system of engagement' than the 'system of records' as the latter needs less releases per year and has least frequent changes.
People (DevOps Culture and Planning), Process (Release Management, Change Management and Configuration Management, etc.) and Tools are all important to make the DevOps successful. For example, without having a DevOps culture, whatever processes or tools you deploy will not deliver the desired results.
Fundamentally DevOps is based on four pillars:
- Plan and Measure - This corresponds to continuous business planning based on customer feedback and trends
- Development and Test - This corresponds to collaborative development and continuous testing.
- Release and Deploy - This corresponds to continuous deployment of Software to Development to QA and then to Production in an efficient and continuous automated manner. The goal of continuous release and deployment is to release new features to customers and users as soon as possible
- Monitor and Optimize through continuous feedback - This cuts across the complete lifecycle and keeps track and checks on how released applications are performing in production environment and how customers are consuming it. This enables the continuous feedback from customer and this data allows business to react in an agile manner and change its plans and software release according to feedback and trends.
One of the most critical changes that has helped and contributed to the maturity of DevOps is cloud, which enables on demand provisioning (including multi-tier applications through blueprinting) and deployment without involvement of the operations team.
The next big step for DevOps is its evolution into the embedded-devices space and facilitates the Internet of Things (IoT) as DevOps principles ensure that the embedded software delivered to the device is of highest quality and with the right engineering specifications. DevOps will be playing a critical role in your digital transformation journey. The quantum of impact would be, however, decided by the automation and agility requirements and capabilities present at that time.