An Agile methodology is a particular approach to development teams organization. This new methodology allows succeeding in IT projects thanks to a better quality than with a traditional development cycle.
One of the main advantages of Agile is to shorten the duration of development cycles and the time between different production releases. Multiplying these iterations makes it possible to improve the product or service by constantly integrating user feedback.
This relatively recent method has proved its effectiveness by allowing startups to become web giants - for example, GAFAs or NATUs - by developing ever more powerful products or services that meet users' requirements.
There are several types of Agile methods such as the scrum method, one of the best known, extreme programming or even the kanban from lean.
DevOps is the connection between two worlds: devs (developers) on one hand, and ops, operational services on the other. Traditionally, these two worlds are opposed: developers are supposed to create value and make the product/service ever more innovative; and operational teams aim to maintain the stability of infrastructures. This often results in conflict situations between these two opposing interests, illustrated by the "Wall of confusion" of Andrew Shafer and Lee Thompson's. The Shafer conference marks the inception of the DevOps culture in 2008. And now, in 2019 alone, more than 30 conferences have been held worldwide about DevOps.
Besides, it is often complex to know where the work of developers stops and where the work of operational teams begins.
DevOps, which is an organizational culture, aims to smooth this developer/operational relationship to achieve faster and better quality production releases thanks to Continuous Delivery, for instance.
In concrete terms, DevOps involves integrating these professions into a common team and aligning them with common objectives. For example, the participation of operational teams in devs' meetings or a structured feedback loop can facilitate this organization.
In principle, the Agile fits more to the world of development because it responds to the need for flexibility. When we think "ops", we think first stability and therefore a platform and a website that will evolve as little as possible. It is thus natural to think that Agile goes against operational teams.
Also, Agile methodology involves planning sprint tasks. However, some operational tasks cannot be scheduled such as:
This type of issues require immediate action, so it is difficult to fit them into the traditional scheme of prioritizing tasks in an Agile organization.
However, it is precisely the characteristic of an Agile organization to allow the adaptation of the priority of development tasks. Therefore, it is possible to adjust to changes or to follow user feedback for example. This flexibility distinguishes the Agile from a V-cycle production for instance. We can also imagine that the Agile method can offer more flexibility to operational teams. It is simply necessary to take into account the specificities of their profession.
So it is possible to say that Agile and DevOps are complementary. The DevOps methodology helps the development team and the ops communicate and be united around a common objective. Whereas the Agile methodology accelerates the development cycles and increases the frequency of production releases. Therefore, combining DevOps and Agile methods, allows the development team to quickly bring new features into production with minimum downtime.
Here are some tips to enable operational teams to work with Agile methodology, following the DevOps culture, under the best conditions:
In each sprint, developers have requests for ops. It is therefore important that operational teams devote time to those, which is what we -at Padok- call the "Buffer". This allows the ops team never to slow the development team down or to risk endangering the sprint. For example, if developers cannot access a configuration in a validation framework. This "Buffer" takes the form of a ticket in the "Sprint ops", a resource in which the operational team "picks" at each intervention for the development team.
When you think Agile methodology, you think about transparency and communication within teams. Although developers and operational teams have two different jobs, they work on the same product or service. Therefore, it seems important that operational teams participate in dev events and vice versa.
This makes it possible to anticipate future difficulties, whether technical or organizational ("I warn you, Tuesday at 2 pm we will break the pre-prod for 30 minutes"). These events are also an opportunity to get feedback and set up a continuous improvement process for teams. If you apply the scrum method, this event dedicated to continuous improvement is called the retrospective.
Beyond Agile, it is necessary to make development teams aware of the impact of operational teams' work on the business and users. Do they know the financial impact of a site up at 80% instead of 99%? During the sales, a clothing e-commerce site can lose up to 30,000 euros over a morning if the site falls. It is this type of information that will allow devs to better value the work of operational teams. And therefore the constraints they sometimes impose in the implementation of new functionalities.
You will notice we are focusing on people-related factors and not technology here. According to Gartner's prediction: by 2022, 75% of DevOps initiatives will fail to meet expectations because of organizational changes. George Spafford from Gartner even declared "people-related factors tend to be the greatest challenges to allow DevOps to flourish". So if you are trying to implement Agile and DevOps methodologies within your organization do not forget the Gartner lesson that it starts with a management change. Do not overlook the importance of getting your staff on board.
These proposals are only some examples of what an Agile approach adapted to the world of DevOps can achieve. Each project, each context is specific and requires tailor-made solutions. If you would like to know more about what can be implemented as part of your project, please do not hesitate to contact us.
Here is a quick summary of the comparison between Agile and DevOps:
Agile | DevOps | |
What is it? | A methodology that focuses on collaboration, customer feedback and rapid releases. | A methodology that brings development and operations teams together with common objectives |
Duration | Project managed in "sprint" that last one week most of the time | Plan deadlines for main releases and deliver code to production daily |
Goal | Deal with the gap between customer needs and development & testing teams | Deal with the gap between development & testing and Ops |
Quality | Better applications suites because it follows requirements, adapting easily to the changes during the project's life | Automation and early bug removal create better quality. Following coding and architectural best practices to maintain standards |
Advantage | Shorter development cycle and improved defect detection | DevOps supports Agile's release cycle |