People, Process, Product — DevOps: Part 1
Let's talk about how to define DevOps, it's fundamental concepts, and how to prepare to get started with DevOps process and culture.
Join the DZone community and get the full member experience.Join For Free
Do I need to change my primary skills to learn the DevOps? What skills do I need to learn? How do I learn and where do I start with DevOps?
I keep hearing many questions like these. People who have spent a good amount of time as either a dev, ops, or a tester seem confused and worried about these questions.
I am going to start a People, Process, Product — DevOps post series, I will not explain topics/concepts in detail as it has already been written about and discussed on many sites. I will try to provide some basic fundamentals, my learnings, and at the end, resource references/links to various tools you can choose as per your technology area and interest.
First Things First
There is no fixed or standard definition of DevOps.
Microsoft's Definition of DevOps
"DevOps is the union of People, Process, and Products to enable continuous delivery of value to our end customer."
Value is the most important word. Value can be delivered in any language and on any platform
I always use the following definition:
"DevOps is a philosophy and it never recommends any specific tools/processes and products."
It’s about the 3 Ps:
Initially, stakeholders need to be identified, ensuring that everybody delivering value to the business is working tightly together on the common goal of adding value for the customer. People need to learn and adopt collaboration and shared responsibility.
DevOps is about improving processes because even if you have highly motivated people that are working well together, you may still have several business processes which may get in the way, and this could really block innovation. For instance, having to seek approval from a long chain of advisory boards before implementing changes or being restricted to doing things in a certain way can impede innovation. The process of designing, building and testing software should be well presented to each individual team member, making them aware of all parts of the development process. The implementation of DevOps can be hard work, as it completely changes the company’s structure as a whole. This is part of the bigger picture of DevOps: enabling efficient flow of collaboration and making sure that business structure and processes do not get in the way but instead have processes and practices that help improve the value and delivery to your customers.
You can’t buy DevOps, as DevOps is not a software, tool, process, company, or person — it’s a methodology used especially by IT professionals. There are, however, products, tools, and services that can help enable different DevOps practices and different teams which can be used to make things easier. From a very high level, these tools include Microsoft Azure, which offers a lot of different products and services, such as Microsoft Azure Stack and Microsoft Azure. Besides Microsoft Azure, there are also other products related to DevOps practices, such as Team Foundation Server (TFS).
Even with the best tools, DevOps is just another buzzword if you don’t have the right culture.
The primary characteristic of DevOps culture is increased collaboration between the roles of development and operations. There are some important cultural shifts, within teams and at an organizational level, that support this collaboration.
An attitude of shared responsibility is an aspect of DevOps culture that encourages closer collaboration. It’s easy for a development team to become disinterested in the operation and maintenance of a system if it is handed over to another team to look after. If a development team shares the responsibility of looking after a system over the course of its lifetime, they are able to share the operations staff’s pain and so identify ways to simplify deployment and maintenance.
There should be no silos between development and operations.
Another valuable organizational shift is to support autonomous teams. In order to collaborate effectively, developers and operations staff need to be able to make decisions and apply changes without convoluted decision-making processes. This involves trusting teams, changing the way risk is managed and creating an environment that is free of a fear of failure.
Please refer to "DevOps Principles" by Gavin Davies.
- Common vocabulary
- Consolidated & Consistent Information
- Backlog Management
- Team Mindset
- Requirements feedback
- Iterative Development
- Agile Planning
- Automated Builds
- Capacity Management
- Integrated Team
- Quality Mindset
- Stakeholder Feedback
- Daily meetings
- Current information
- Quality Assurance
- Rich communications
- Test Environment Management
- Performance Testing
- Automated Deployment
- Automated Testing
- Continuous Delivery
- Continuous Feedback
- Continuous Improvement
- Dev/Ops Coordination
DevOps enables companies to achieve faster and higher quality software delivery and helps increase customer satisfaction. It focuses on building quality into the supply chain of customer value and applies the lean/agile methodology into that supply chain, which includes developing, building, testing, deploying, and monitoring of software.
DevOps is no longer just a trend – it’s a well-defined set of practices and organizational patterns that, for many enterprises, is providing a return on investment.
Opinions expressed by DZone contributors are their own.