DevOps is a culture that is supported by a set of practices and tools that assists the collaboration of Development and Operations teams.
DevOps aims to resolve the issues in the development process that arise due to the conflicting goals and isolation of traditional development and operations teams.
Integration of Development and Operations Teams
The integration of Development and Operations teams results in the following benefits:
- Work is no longer passed back and forth between teams
- Development, staging, and production environments are consistent
- Development best practices are applied to infrastructure management
DevOps Important Practices
Important practices used by DevOps include:
- Automation – making manual processes occur automatically
- Continuous Integration – regularly merging contributor code into a central repository
- Continuous Delivery and Deployment – automatically preparing code changes for release
- Infrastructure as Code – representing aspects of infrastructure within source files
- Microservices – dividing up a business application into many small independent services
- Monitoring – gathering information about the state of the system during runtime
DevOps is enhanced by a variety of tools including those for:
- Source control management – tools which help developers track and manage source code changes
- Environment configuration – tools which assist with the configuration of hardware and software for running code
- Testing – tools which ensure the correctness of our code
- Automation – tools which assist in performing routine tasks via scripts
- Infrastructure as code – tools which allow us to define infrastructure as source files
DevOps Team Improvements
The central pillars of a DevOps culture include:
- Thinking about the whole production system, rather than a single department or part (systems-level thinking).
- Feedback loops, allowing each part of the process to receive information and improve.
- A culture of continuous experimentation and learning.
DevOps Team Bottlenecks
DevOps teams seek to reduce the impact of system bottlenecks. Bottlenecks are the slowest part of the production process and they limit the overall pace of production.
DevOps Feedback Loops
Feedback loops use metrics to gain insights into application performance. Action can then be taken from these insights to continuously improve processes. Metrics that measure customer value should be prioritized.
In DevOps, failure is seen as something to learn from and is a normal part of the improvement process. It can lead to valuable insights being discovered.
One method DevOps teams use to normalize failure is through blameless retrospectives (or post-mortems).
DevOps Team Communication
Companies with separated development and operations teams can have some issues:
- Developers might concentrate on the code without considering infrastructure or testing needs.
- The Operations team might only consider infrastructure needs without considering impacts on functionality.
DevOps seeks to have each member of the team consider the entire development process. All members share responsibility for the final result.