#90DaysOfDevOps - DevOps & Agile - Day 4
DevOps & Agile
Do you know the difference between DevOps and Agile? They were formed as standalone concepts. But now the two terms are getting fused.
In this post, we will examine the crucial differences between Agile and DevOps and find out why the two are connected so tightly.
I think a good place to start is understanding a little more about a common angle I have seen in learning this area and that is DevOps vs Agile, even though they have similar goals and processes. In this section, I am going to summarise this hopefully.
Let's start with definitions.
Agile Development
Agile is an approach that focuses on delivering small results faster rather than releasing one big interaction of the product; software is developed in iterations. The team releases a new version every week or month with incremental updates. The final goal of Agile is to deliver an optimal experience to the end-users.
DevOps
We have been covering this for the past few days with a few different ways of describing the end goals of DevOps. DevOps usually describes software development and delivery practices based on cooperation between software developers and operations specialists. The main DevOps benefits are delivering a simplified development process and minimising miscommunication.
What is the difference between Agile and DevOps
The difference is mainly the preoccupations. Agile and DevOps have different preoccupations but they are helping each other. Agile wants short iteration, which is only possible with the automation that DevOps brings. Agile wants the customer to try a specific version and quickly give feedback which is only possible if DevOps make the creation of a new environment easily.
Different participants
Agile focuses on optimising communication between end-users and developers while DevOps targets developers and operation, team members. We could say that agile is outward-oriented toward customers whereas DevOps is a set of internal practices.
Team
Agile usually applies to software developers and project managers. The competencies of DevOps engineers lie in the intersection of development, QA (quality assurance) and operations as they are involved in all stages of the product cycle and are part of the Agile team.
Applied Frameworks
Agile has a lot of management frameworks to achieve flexibility and transparency: Scrum > Kanban > Lean > Extreme > Crystal > Dynamic > Feature-Driven. DevOps focuses on the development approach in collaboration but doesn't offer specific methodologies. However, DevOps promote practices like Infrastructure as Code, Architecture as Code, Monitoring, Self Healing, end to end test automation ... But per se this is not a framework, but rather practice.
Feedback
In Agile the main source of feedback is the end-user while in DevOps the feedback from stakeholders and the team itself has a higher priority.
Target areas
Agile focuses more on software development than deployment and maintenance. DevOps focuses on software development as well but its values and tools also cover deployment and post-release stages like monitoring, high availability, security and data protection.
Documentation
Agile prioritises flexibility and tasks at hand over documentation and monitoring. DevOps on the other hand regards project documentation as one of the essential project components.
Risks
Agile risks derive from the flexibility of the methodology. Agile projects are difficult to predict or evaluate as priorities and requirements are continually changing.
DevOps risks derive from a misunderstanding of the term and the lack of suitable tools. Some people see DevOps as a collection of software for the deployment and continuous integration failing to change the underlying structure of the development process.
The Tools Used
Agile tools are focused on management communication collaboration, metrics and feedback processing. The most popular agile tools include JIRA, Trello, Slack, Zoom, SurveyMonkey and others.
DevOps uses tools for team communication, software development, deployment and integration like Jenkins, GitHub Actions, BitBucket, etc. Even though agile and DevOps have slightly different focuses and scopes the key values are almost identical, therefore you can combine the two.
Bring it all together… good idea or not? Discuss?
The combination of Agile and DevOps brings the following benefits you will get:
- Flexible management and powerful technology.
- Agile practices help DevOps teams to communicate their priorities more efficiently.
- The automation cost that you have to pay for your DevOps practices is justified by your agile requirement of deploying quickly and frequently.
- It leads to strengthening: the team adopting agile practices will improve collaboration, increase the team's motivation and decrease employee turnover rates.
- As a result, you get better product quality.
Agile allows coming back to previous product development stages to fix errors and prevent the accumulation of technical debt. To adopt agile and DevOps simultaneously just follow 7 steps:
- Unite the development and operation teams.
- Create build and run teams, all development and operational concerns are discussed by the entire DevOps team.
- Change your approach to sprints, and assign priority ratings to offer DevOps tasks that have the same value as development tasks. Encourage development and operations teams to exchange their opinion on other teams' workflow and possible issues.
- Include QA in all development stages.
- Choose the right tools.
- Automate everything you can.
- Measure and control by using tangible numeric deliverables.
What do you think? Do you have different views? I want to hear from Developers, Operations, QA or anyone that has a better understanding of Agile and DevOps that can pass comments and feedback on this?
Resources
- DevOps for Developers – Day in the Life: DevOps Engineer in 2021
- 3 Things I wish I knew as a DevOps Engineer
- How to become a DevOps Engineer feat. Shawn Powers
If you made it this far then you will know if this is where you want to be or not. See you on Day 5.