DevOps is understood to be
- A collection of technical methods and tools and
- A specific culture of collaboration between the software development and IT teams.
DevOps is about making the cooperation between software development and IT operations more efficient and coordinated via common processes and software tools. In this context, a DevOps team consists of developers and IT staff who work together throughout the entire product lifecycle.
Originals of DevOps
The term DevOps originated in 2009 and is made up of the parts Dev (= area of software development / software development) and Ops (= area of IT operations / system administration).
However, the movement that led to the development of DevOps began earlier: As early as around 2007, the communities for IT Operations and Software Development exchanged ideas with each other. Members saw the separation of the teams for writing the code and for deploying and supporting the code as critical. This exchange marked the start of the integration of the two disciplines.
Goals of DevOps
DevOps is used to achieve the following goals:
- Increase software quality
- Make the development and delivery of the software faster.
- Improve the cooperation of the teams involved in development and delivery
- Ensure high operational stability and avoid technical defects due to changes and innovations
How are these goals achieved?
These goals are achieved by automating and integrating the processes between the Development and Operations teams in the organization. The most important aspects of this are:
- Automation of technology
- Cross-team communication and collaboration
- Team empowerment
The DevOps Lifecycle
The ongoing DevOps process can be thought of as an infinite loop, usually consisting of the following 6 phases:
- Continuous Integration and Continuous Delivery
- Continuous feedback
These 6 phases represent different skills, processes and tools from Development and Operations. It is important that both teams work and communicate as or like a joint team in each of the phases.
What methods & tools are part of DevOps?
DevOps includes several techniques that are independent of each other:
- Agile Software Development
- Continuous Integration (also: CI or Continuous Integration) and Continuous Delivery (also: CD).
- Continuous Service Monitoring
- Automated software testing
- Software Configuration Management, version management and "Infrastructure as Code".
- Cross-domain Key Performance Indicators (KPIs)
The above methods are enabled or supported by the following DevOps tools, for example:
- GitHub and GitLab (for Continuous Integration and Continuous Delivery, automated software testing and version management).
- Jenkins (Continuous Integration)
- Puppet (for Infrastructure as Code)
- Ansible (for configuration management)
- Vagrant (as a virtualization platform)
- Azure DevOps (e.g. for Continuous Integration, Testing, Release Management and Systems Management)
- Microsoft Azure (for monitoring and hosting)
- Team Foundation Server
- Docker (for container virtualization)
- Kubernetes (container orchestration)
What kind of collaborative culture does DevOps strive for?
DevOps aims to improve collaboration between development and operations as a cross-functional team and remove their separation from each other. Close collaboration is created through the following aspects:
- The IT Operations and Software Development teams work closely together and are often merged into one team for the entire duration of the product lifecycle.
- The entire team focuses on customer needs and benefits during the software lifecycle.
- Within the team, processes and plans are consistently made visible to each other.
- Priorities, responsibilities and changes are aligned with each other.
- The risk management is simplified by shorter release cycles and planning.
- All members of the team maintain regular and open communication.
Challenges when introducing DevOps.
As always when innovations are introduced, there are members of the team who struggle with implementation or build concrete resistance to it. It is therefore important that all team members truly understand the principles, values and benefits of DevOps and that a company takes sufficient time to inform and introduce it.
Important to note:
- The earlier the understanding of team unification of development and operations grows and silos are broken down accordingly, the easier DevOps integration will work.
- It is not enough to simply apply the tools mentioned in order to reap the benefits from DevOps. The decisive factor here is the combination of culture, methods, processes and tools.
Conclusion on DevOps
DevOps has a consistently positive impact on most companies. This is because the approach ensures higher team efficiency and security, faster releases of software and higher product quality for more satisfied customers.
The advantages of DevOps principles are so great that the approach behind them, along with its values, is now also being used in other teams. For example, DevSecOps refers to the integration of security into the development process.