What is DevOps?
DevOps can be best explained as people working together to build, deliver, and run resilient software at the speed of their particular business. DevOps practices enable software development (Dev) and operations (Ops) teams to accelerate delivery through automation, collaboration, fast feedback, and iterative improvement.
Stemming from an Agile approach to software development, a DevOps delivery process expands on the cross-functional approach of building and shipping applications in a faster and more iterative manner. In adopting a DevOps development process, you are making a decision to improve the flow and value delivery of your application by encouraging a more collaborative environment at all stages of the development cycle.
DevOps is a combination of software development (Dev) and operations (Ops). It is defined as a software engineering methodology which aims to integrate the work of software development and software operations teams by facilitating a culture of collaboration and shared responsibility.
DevOps represents a change in mindset for IT culture. In building on top of Agile, lean practices, and systems theory, DevOps focuses on incremental development and rapid delivery of software. Success relies on the ability to create a culture of accountability, improved collaboration, empathy, and joint responsibility for business outcomes.
Benefits of DevOps
Adopting a DevOps model breaks down barriers so that development and operations teams are no longer siloed and have a more efficient way to work across the entire development and application lifecycle. Without DevOps, organizations experience handoff friction, which delays the delivery of software releases and negatively impacts business results.
The DevOps model is an organization’s answer to increasing operational efficiency, accelerating delivery, and innovating products. Organizations that have implemented a DevOps culture experience the benefits of increased collaboration, fluid responsiveness, and shorter cycle times.
The business value of DevOps lies in the ability to improve the production environment in order to deliver software faster with continuous improvement. You need the ability to anticipate and respond to industry disruptors without delay. This becomes possible within an Agile software development process where teams are empowered to be autonomous and deliver faster, reducing work in progress. Once this occurs, teams are able to respond to demands at the speed of the market.
There are some fundamental concepts that need to be put into action in order for DevOps to function as designed, including the need to:
Remove institutionalized silos and handoffs that lead to road blocks and constraints, particularly in instances where the measurements of success for one team is in direct odds with another team’s key performance indicators (KPIs).
- For example, Team A is tasked with preventing outages. In order to reach that goal, they create processes that are prohibitive to rapid changes in the application’s development; thereby creating a bottleneck that negatively impacts Team B’s KPI of frequent software updates.
- Implement a unified tool chain using a single application that allows multiple teams to share and collaborate. This will enable teams to accelerate delivery and provide fast feedback to one another.
DevOps covers a wide range of practices across the application lifecycle. Customers start with one or more of these practices in their journey to DevOps success.
- Source Code Management - Teams looking for better ways to manage changes to documents, software, images, large web sites, and other collections of code, configuration, and metadata among disparate teams.
- Agile Project & Portfolio Management - Teams looking for a better way of initiating, planning, executing, controlling, and closing the work of a team to achieve specific goals and meet specific success criteria at the specified time.
- Continuous Integration (CI) - Teams looking for ways to automate the build and testing processes to consistently integrate code and continuously test to minimise the manual efforts spent in frequent runs of unit and integration tests.
- Continuous Delivery (CD)- Teams looking for ways to automate the build, test and packaging, configuration and deployment of applications to a target environment.
- Shift Left Security - Teams looking for ways to identify vulnerabilities during development with actionable information to empower dev to remediate vulnerabilities earlier in the life cycleeve specific goals and meet specific success criteria at the specified time.
- Monitoring and Feedback - Teams looking for ways to embed monitoring into every deployed version and the impact of application changes to the business value and user experience
- Rapid Innovation - Teams looking for ways to provide feedback back into the development, test, packaging & deployment stages to complete the loop to integrate Dev and Ops teams and provide real time feedback from production environments and customers.
Ok, now you know what DevOps is, but what’s next? Take a deeper dive with these helpful articles.
Here’s a list of resources on DevOps that we find to be particularly helpful in understanding DevOps and implementation. We would love to get your recommendations on books, blogs, videos, podcasts and other resources that tell a great DevOps story or offer valuable insight on the definition or implementation of the practice.
Please share your favorites with us by tweeting us @GitLab!