DevOps is a term for a group of concepts that, while not completely new, have been catalyzed in one movement and are spreading rapidly through the technical community. Like any new and popular term, people may have confusing and sometimes contradictory impressions of what it is. Here is my opinion on how DevOps can be defined in a useful way; I propose this definition as a standard framework to discuss more clearly the various areas covered by DevOps. Like "Quality" or "Agile", DevOps is a broad enough concept that requires some nuances to fully understand it.
DevOps Values: I think the core values of DevOps are captured effectively in the Agile Manifesto, perhaps with a slight change to focus on general service or software delivered to the client altogether rather than simply "working software." Some earlier definitions of DevOps, such as "People Over Processing Over Tools" Alex Honor, echo the basic assertions of the Agile Manifesto and urge dev + collaboration ops.
DevOps principles: There is no single agreed list, but there are several widely accepted attempts: here is John Willis coining "webcams" and here is James Turnbull give his own definition at this level. "Infrastructure as a code" is a commonly cited DevOps principle. I made a cut in "DevOps" of the manifest and agile principles existing here. Personally, I think DevOps at the conceptual level is primarily the extension of Agile principles to include systems and operations, rather than interrupting their concerns in code verification.
DevOps methods: some of the methods here are the same; You can use Scrum with operations, kanban with operations, etc. (although usually with more focus on integrating operations with dev, QA, and product into product teams). There are some more different methods, such as Visible Ops style tracking and the use of the incident command system for incident response. All these methodologies are growing; A more thoughtful approach to monitoring is an area where common methodologies have not been well defined, for example.
DevOps practices: specific techniques used as part of the implementation of previous concepts and processes. continuous integration and continuous deployment, "Give your employees a pager and call them by phone," using configuration management, metrics and tracking systems, a toolchain approach tool ... Even using virtualization and cloud computing is a practice common use to accelerate changes in the world of modern infrastructure.
DevOps tools: tools that you would use in committing these principles. In the DevOps world, there has been an explosion of release tools (Jenkins, Travis TeamCity), configuration management (puppet, chef, ansible, cfengine), orchestration (zookeeper, Noah, mesos), monitoring, virtualization and containerization (AWS, OpenStack, hobo, stevedore) and many more. Although, as with Agile, it is incorrect to say that the tool is "a DevOps tool" in the sense that you magically bring in DevOps, there are certainly specific tools that are being developed for the express purpose of facilitating previous principles, methods and practices. and a holistic understanding of DevOps should incorporate this layer.