Agile Or DevOps – The Process. The Purpose. The Result.
Just like a coin has two sides, Agile and DevOps are the two buzz concepts of the same modern software development practices that many organizations are eager to employ or have already employed. Though the two are NOT essentially the same they can often create mix-up or overlap while trying to comprehend them. Both Agile and DevOps are aimed at providing a framework to produce a new product or a part of a product, a launch, or a release. While we may follow using Agile and DevOps theories together, it is important to identify the contrasting points to understand where they seem similar and where they clearly differ.
1. The Description:
Agile is a software development practice that involves breaking down the development process into small “user stories” which can be easily managed by time-boxed iterations, known as Sprints with set goals. Sprints are typically conducted every two to three weeks, depending on the level of complexity and thus not making the purpose outdated.
After the Waterfall bubble (that needed developers should first define customer need, and then move through development until they release a single, finished software product that meets the stated need) burst, and the agile manifesto was accomplished, then the iterative and incremental development became the new norm.
Agile prioritizes the following:
People: Teammates, customers, and interactions between these people—instead of processes and tools
Timeliness: Working software—instead of comprehensive documentation
Flexibility: Responding to, and even embracing, change—instead of following a predetermined plan
While Agile was a response to Waterfall methodology, DevOps was NOT a response to Agile.
DevOps is a software development practice that brings people, processes and technology together to deliver continuous value. It is a wedding between tools and culture. The approach is divided into planning and tracking, development, build and test, delivery, monitoring and operations. DevOps is unique with the development, IT operations, quality engineering, and security teams working together to create efficiency across all tasks involved in developing and deploying new products to the end-user.
As IT became essential to businesses, a vital area emerged as Development and Operations (DevOps) that walks a line between flexibility, the rigorous testing and communication that comes with deploying new software. More than the rapid or frequent deployment in DevOps, it emphasizes on making sure that the annual updates go smoothly.
DevOps prioritizes the following:
Deep communication: Between software development and IT operation groups. This in turn increases the productivity of all development resources, allowing them to deliver faster, with better quality, by improving collaboration and eliminating constraints and slogging on useless work.
Business: Using automated deployment processes to decrease the time-to-delivery of customer-demanded functionality, while increasing existing customer revenue and driving new customer sales.
Operations: Improve service reliability and customer satisfaction, with best-in-class performance and security, while reducing support resolution time and IT costs.
Management: Better govern all development and operations with higher visibility and predictability of corporate and team performance, while reducing risk.
2. The core attributes for:
Agile - The fail-fast mindset of Agile revolves around Transparency, Inspection and Adaptability, keeping pace with customer needs and expectations. This means the developers tend to test freely when trying to reach the desired results, but they are also fast to let go the development lines if that doesn’t happen. Doing so allows reducing the threats both for the customers and for the software development teams while ensuring more predictable software delivery process and also raises the chances for the customers to get what they expect, under the projected budget and within the timeframes.
DevOps - The heart of well-planned DevOps is the relentless focus on continuously delivering customer value that involves measuring and prioritizing the delivery of business services and features, whatever the contributing methods and tools may be. Testing freely or experimenting in DevOps is not recommended, as the costs of operating the infrastructure can be huge. So, before provisioning the infrastructure the DevOps team must define the project’s structure, scope, main requirements, possible scalability issues.
3. The Processes or Practices:
Agile software development can be implemented in a number of ways, including Scrum, Kanban, Scrumban, Extreme Programming, Behavior Driven Development (BDD), Test Driven Development (TDD), and many more. At its heart, agile is a change in the way of thinking about development.
DevOps involves a set of technical processes such as:
Continuous Development -- Involves code verification and code changes submission to a principal repository numerous times a day and tracking the changes
Continuous Integration -- Involves code integration in a common repository, numerous times a day; identification of possible merge conflicts and bugs rapidly by dividing the work into small, manageable chunks of code
Continuous Deployment -- Involves automated releases of minor updates and consistent delivery to the end-user thus satisfying the customers and speeding up production so as to not pose a substantial threat to the existing architecture
Continuous Testing -- Involves testing as much as possible in every step of development by automated tests leading to valuable feedback and a risk assessment
Continuous Operations -- Involves working on upgrading software with small but frequent releases thus preventing downtime and availability issues during code release.
Continuous Monitoring – Involves constant monitoring of performance through collaboration and feedback sharing thus maintaining an efficient DevOps pipeline.
4. The tools used
Agile tools are focused on management, communication, collaboration, metrics, collecting insights from users which are why most actively used Scrum tools are indispensable for Agile teams since Scrum is the most used methodology.
For planning sprints, assigning responsible team members, tracking progress, cooperate, and exchanging results – Jira, Trello, Kanboard, Active Collab, Bugzilla, SpiraTeam, Monday.com
For Communication -- Skype, Slack, Discord, Zoom for daily meetings, chats, and reports
For collecting feedback -- SurveyMonkey, Google Forms, SurveyGizmo
DevOps uses tools for team communication, software development, deployment, and integration that focus more on facilitating the process of development, automation, code sharing, and real-time collaboration and less on management and planning.
Continuous Development – GitLab, SVN, AWS
Continuous Integration -- BitBucket, AWS CodePipeline, Azure Pipelines, OpenStack, TeamCity
Continuous Deployment -- Jenkins, Buddy, Docker, Kubernetes, Puppet
Continuous Testing -- Katalon Studio, Appium, Selenium
Continuous Operations – Chef, Ansible, Kubernetes
Continuous Monitoring – Nagios, Splunk, Datadog
5. Methodology Vs. Deployment
Agile software development is a methodology for developing software. Once the software is developed and released, the agile team doesn't formally care what happens to it. They're on to the next sprint and the next revision of the user story. Agile helps to manage complex projects.
DevOps is all about taking software which is ready for release and deploying it in the safest, most reliable manner possible. DevOps doesn't depend on the software being developed by the agile discipline. DevOps can deploy software that was developed in any number of approaches, including Agile and non-Agile theories, which is still appropriate for certain projects. The point of DevOps is to deliver technology to business units in a timely fashion and ensure the technology runs without interruption or disruption. DevOps central concept is to manage end-to-end engineering processes.
6. The Roles:
Agile is an equal opportunity team where every member of the scrum can do every job within the team, which prevents slowdowns and bottlenecks by following a set of best practices for creating quality software in a timely manner. There is no need for a team member to sit and wait for a specialist to become available for the next step in the process. Any available team member should be able to do what's required for progress. In addition, when each team member is capable of doing every job, it increases understanding and makes close communication much easier. There is no separate development team and operations team in Agile. The various roles in Agile are:
Product Owner – responsible for maximizing the value of the product and managing the Product Backlog
Scrum Master –Servant-leader for promoting and supporting Scrum
Development Team –self organized, cross-functional small team of professionals who do the work of delivering a potential releasable increment of “Done” product at the end of each Sprint and is responsible for the Sprint Backlog
DevOps adopts two separate DEVelopment team and OPerations team, trying to avoid the blame-game when client has complaints about software or when software fails or has major flaws. What the teams will do is communicate between themselves on a frequent and regular basis. DevOps practice uses a DevOps Engineer who is multi-skilled and will be given the ownership of the entire process: developing the code, unit testing/ functional testing the code and deploying that code to staging/ testing/ production thus knowing the system end to end. This also solves the problem of dependency. The various role in DevOps are as follows:
DevOps Evangelist – The principal officer (leader) responsible for implementing DevOps
Release Manager – The one releasing new features & ensuring post-release product stability
Automation Expert – The guy responsible for achieving automation & orchestration of tools
Software Developer/ Tester – The one who actually develops the code and tests it
Quality Assurance – The one who ensures quality of the product confirms to its requirement
Security Engineer – The one always monitoring the product’s security & health
7. How To Communicate ?
Agile approach involves daily, informal meetings. These scrums are not meant to go over specification documentation with an eye on milestones and metrics. In Agile, each Sprint includes Sprint Planning, held at the beginning of each sprint cycle to work on the Sprint Backlog which includes top sequenced stories from the Product Backlog; sprint execution, which includes short 15 minutes Daily Stand up meetings/ Daily Scrum to identify accomplishments, plans and known obstacles/impediments; a Sprint Review held with the stakeholders, where their original ideas are presented in the form of working software and a Sprint Retrospective at the end of each Sprint Cycle to examine how the just-completed sprint went as far as people, relationships, processes, and tools.
DevOps meetings are not daily. In DevOps, communications often involve specification and design documents. It's critical for the operations team to fully understand the software release and its implications so they can properly run the deployment process. The operations team will often involve user representatives, so that users can be ready for the update, and so that they understand the impact a deployment will have on business operations. Such communications don't need to happen on a daily, stand-up basis. But they certainly need to happen. DevOps is a theory rooted in communication, both within itself, as the developers and operators have to coordinate, but also across other departments. Development team frequently communicates with Operations team to ensure secure and stable environments for testing, and their crossover to other teams like marketing and customer service makes sense as they deploy new software. DevOps communication is focused less on management and more on product characteristics and design specifications. The team is focused on describing software requirements, hardware implications, and plans for future releases. DevOps communication can be combined with Agile.
8. A Team, Or A Team Of Teams?
Agile follows the basic rule: stay small - the smaller the team, the fewer people on it, the faster they can move, even if they are contributing to a larger effort. The nature of scrum communications happens in and among the small team.
DevOps will have many teams that work together and each team can realistically practice different theories. DevOps, by its nature, will have multiple teams working together. Some teams can be practicing agile scrum; some can be practicing agile kanban; some can be practicing waterfall. All can come together at the point of software release to communicate with the operational team for deployment. It's good to reiterate the point: DevOps doesn't depend on any one development discipline to be effective.
Agile teams work in short, predetermined amounts of time, known as sprints. A time in the near future (generally one month or less) is chosen, and set a number of features to be created is prioritized within the sprint. Teams know there will be another sprint coming up, and more features can be covered then. They expect to listen to users and to end up revising current features in an upcoming sprint. Sprints rarely last longer than a month, and often can be as short as a week.
DevOps doesn't prioritize speed and rapid development. Rather, it prioritizes minimal disruption and maximum reliability. DevOps values providing continuous delivery daily (or even every few hours) with extreme reliability. DevOps might roll out the work of each sprint at the sprint's end -- or it might wait until several sprints have released software so there can be a consolidated deployment with less disruption.
Agile teams don’t categorize their meeting minutes or other communications; rather often prefer methods of simple pen and paper. Agile teams use extremely light documentation to enhance flexibility in the development process. One of the principles of agile development is to prioritize working software over complete documentation.
DevOps takes documentation seriously, requiring design documents and specifications in order to fully understand a software release. DevOps needs the documentation because it will turn the software over to a separate operations team for deployment. Sufficient documentation ensures the teams collaborate well emphasizing communication over official documentation. Automation helps minimize the impact of scanty documentation, but while turning complex software over to another team, one can't assume a long meeting will transfer all the knowledge required. DevOps tends to consider good documentation as part of its definition of working software.
Agile development teams may choose to use certain tools. It's entirely possible for an agile team to communicate via email and sticky notes placed around a conference room. Agile mainly focuses on working with speed releasing quality software in a timely manner and doesn’t require automation.
DevOps absolutely depends on automated deployment to make everything happen smoothly and reliably. Certain tools are an integral part of DevOps. DevOps mainly focuses on achieving automation by coordinating various DevOps tools. DevOps teams often use all those tools and more, including the addition of configuration management, metrics and monitoring schemes, virtualization and cloud computing. In DevOps, quality is guaranteed by continuously monitoring the software application after its deployment, thus satisfying their overall goal is to minimize disruptions and maximize efficiency.
12. Who Gives the Feedback?
In Agile, feedback is mostly given by customers. This highlights the value Agile places on the customer, which helps the developers by providing faster feedback loops and ensuring product alignment with market need. Agile further advocates for adaptive planning, evolving development, early and continuous delivery, and continuous improvement so that developers can rapidly and flexibly respond to change in client needs, software, or other external factors.
In DevOps, feedback is mostly measured by the internal team (by using Continuous Monitoring tools), though the feedback from stakeholders and the team itself has a higher priority which encourages internal feedback among teammates to improve and speed up delivery.
The DevOps vs Agile is a never-ending debate in the IT industry. Agile methodology and DevOps are different from one another. But through their similarities, it could lead to thinking that they are the same. What makes them meaningful is that they can coexist. After all, they both want to bring value to the end-user – the customer. Organizations and development teams can utilize both to complement each other. At the end of the day, the needs of the user always need to be top of mind.
Agile is all about development, though sometimes it takes over the entire company it doesn't inevitably lead to DevOps. The practice of DevOps involves a separate discipline and methodology from those of agile. When the two are treated as separate disciplines that can work together, decisions become much more coherent than when the two terms are used as synonymous. Using both in tandem is often the best approach for increased success and affecting change within a team, department, or an entire organization. Understanding both theories that are flexible enough to adapt to changes in requirements, gives a realization that there isn’t one answer to solve all organization needs and that both can have profound culture shifts within an organization.
Thus, it is not right to say “Agile is same as DevOps” or “Agile is the opposite of DevOps”. A nice way would be something like saying “Agile + DevOps builds a Great Product”
What do you think?