The Digital Transformation Blog | Cavendish Wood

DevOps vs Agile vs Waterfall | Cavendish Wood

Written by Mike Whitehurst | 05-Jan-2021 14:05:26


In our previous DevOps blog post, What is DevOps? And what are the benefits for digital transformation?, we explored many of the foundational concepts of DevOps.

Once you've read that article, you'll understand the many benefits of integrating your development and operations teams. In this post, we'll investigate the relationship between DevOps and the software development lifecycle, in particular the waterfall and agile methodologies.

We'll also examine how DevOps relates to the broader IT systems development lifecycle.

Finally, we will also look at the relationship between DevOps and IT infrastructure maintenance.

But first, let’s undertake a comparative analysis of the two main software development methodologies: waterfall and agile.

 


Waterfall.


Definition.

A traditional software development methodology, whereby the project progresses through a predefined series of different stages before the work is considered complete.

 

Advantages.

  • At the conclusion of each stage, extensive quality assurance testing takes place, allowing you to evaluate the project and decide if it can proceed to the next stage
  • This longer lead time ensures there are more opportunities to identify and mitigate problems, resulting in a final product that is more comprehensive and robust


Disadvantages.

  • Difficult to adopt waterfall methodologies for complex projects with multiple changing requirements
  • Slower release times as the product is only available at the very end of the project lifecycle
  • No collaboration among development and operations teams is present, so communication and knowledge sharing is limited

Agile.


Definition.

An approach where the project is divided into various sprints lasting for 2-4 weeks. At the conclusion of each sprint, parts of the software can be released, even though the entire project may not be complete.

 

Advantages.

  • Facilitates close cooperation by different teams working on different components of the software.
  • Elements of the software can be released to the public, allowing for more customer feedback and enhancements throughout the project’s lifecycle.
  • Reduces the risks of scope creep


Disadvantages.

  • Unpredictable timeframe for the project
  • Software capabilities are highly dependent on clear customer feedback and requirements
  • More maintenance challenges

 


DevOps.


How does DevOps relate to both waterfall and agile methodologies?

  • DevOps leverages and enhances the beneficial aspects of agile
  • It brings your development and operations teams together
  • DevOps facilitates automation to speed up procedures and eliminate human errors
  • It can handle complex projects at lower risks
  • Through constant feedback and removal of siloed work practices, DevOps solves problems at faster intervals
  • It makes continuous delivery possible by providing customers with quick but effective small updates

 

How does DevOps relate to the software development lifecycle?

DevOps is not limited to software developers who write code, operations teams who handle service quality, or IT departments who deal with the IT operations.

It also impacts other areas of your organisation, such as project management teams.

In fact, an effective and seamless project management practice is necessary to keep software projects on schedule and to make improvements whenever needed.

So, how does DevOps affect the software development lifecycle?

1. It applies agile principles to project management.

DevOps allows you to manage long-term projects through efficient innovation, experimentation and collaboration amongst all your cross-functional teams.

With customers expecting fast delivery times and continuous software improvements, agile principles help you provide a more satisfying user experience.


2. It lends itself to using microservices.

Microservices allow you to break a software project into smaller, interdependent components. This makes each phase of software development more manageable and allows for continuous quality assurance testing.

In this way, project managers can ensure the rapid and frequent delivery of solutions while minimising the risks involved. Feedback for a particular microservice is also easily obtained, so improvements can be undertaken without delaying other teams who may be working on different parts of the project.


3. It results in an evolution in project planning.

DevOps is shifting how teams deal with projects. Rather than adopting a waterfall approach, where the software is developed as one monolithic whole, the focus has now shifted to flexible agile approaches using microservices.

To ensure your entire organisation is receptive to this new approach, project managers must take the lead in nurturing organisational change and the buy-in of management.


4. It encourages the usage of the same tools across teams.

Project managers should employ tools that members of different teams involved in the SDLC understand and know how to use. After all, DevOps is about collaboration, integration and alignment.

Having uniform tools across teams can also allow them to more easily track progress, speed up processes and avoid a range of problems.

5. It accelerates the development of a Minimum Viable Product (MVP).

Building a Minimum Viable Product (MVP) enables you to thoroughly understand customer preferences. It allows you to gain early feedback on different components of the software as they are released, allowing you to make improvements and replace components customers don’t find valuable.

With collaboration, advanced tools and agile principles in effect, DevOps ensures that your MVP can be quickly enhanced according to the feedback you receive.

 

How does DevOps relate to the IT systems development lifecycle?

The IT systems development lifecycle is composed of two important phases:

  1. Development phase: When IT systems are created; and
  2. Delivery phase: When IT systems are deployed for end-users.

Unlike the way IT systems have been developed traditionally, DevOps optimises the quick execution of these two important processes.

Accomplishing this means organisations must reorganise their systems, teams and activities to apply the concepts of continuous integration, experimentation and automation.

So how does DevOps affect the IT systems development lifecycle:

How does DevOps relate to IT infrastructure maintenance?

Traditional IT infrastructure maintenance has a heavy focus on following a plan, excessive documentation and designated responsibilities. By contrast, a DevOps approach would look to:

  • Start with the end in mind
  • Empower autonomous teams
  • Achieve collective team responsibility from software to support
  • Automate as much as possible
  • Continuous feedback – Build, Test, Release, Monitor and Plan

 

DevOps improves the traditional IT infrastructure maintenance model by providing the following benefits:

Rapid and continuous delivery.

The Infrastructure-as-Code (IaC) principle that DevOps utilises enables the quick deployment and configuration of servers using scripts and templates. Simply put, manual intervention is eliminated.

Security.

Through the implementation of a centralised repository for infrastructure and application logging, a more efficient and responsive support process is achieved. The infrastructure code version history in DevOps is also monitored and recorded.

 

Collaboration.

The IT infrastructure is treated as a shared code, so the entire DevOps team can work on it more effectively.

In a nutshell, DevOps is a natural extension of agile approaches, that can be extended from software development to also include IT systems and infrastructure management.
It strives to emphasise individuals and interactions over processes and documentation.

 

What are the signs you need to adopt DevOps approaches?

To remain competitive, businesses need to deliver software and IT solutions efficiently to consumers.

Creating software that addresses customer demands is essential to thrive in a rapidly evolving business landscape.

Adopting a DevOps approach to software development is an excellent strategy as it fosters collaboration so software solutions can be developed and deployed in an agile manner.

Likewise, DevOps can help your organisation develop and maintain a range of other IT systems more efficiently.

The key reasons to adopt a DevOps approach include:

1. Improve productivity.

A DevOps approach eliminates dependency on manual processes and documentation that may require multiple stages to achieve fruition. The automation DevOps facilitates enables your team to deal with repetitive tasks more efficiently, freeing them to focus on more challenging tasks.

Moreover, automation reduces the risk of error and inaccuracy.


 

2. DevOps can lead to improved business outcomes.

Traditional development approaches can result in a poor cybersecurity posture, deployment delays and maintenance challenges. However, by establishing cross-functional teams, adopting automation and integrating consistent feedback, DevOps helps you avoid inefficiencies and address issues expeditiously.

3. Traditional siloed approaches are holding you back.

If siloed work practices are resulting in delays with completing software or IT systems, you may find a DevOps model, which brings all stakeholders together, is a great way to solve problems and remove roadblocks.

4. Efficiently repair issues and defects.

With traditional approaches, you might need to utilise a long list of commands to test code, fix problems or develop solutions. Through continuous feedback and integration, DevOps improves your workflow processes to ensure any issues are promptly addressed.

5. A preferable way to handle multiple concurrent projects.

Delays occur when you need to wait for other teams to finish their tasks before you can work on yours. Bottlenecks are also evident if effective communication and continuous feedback loops are not present.

DevOps ensures that you are equipped with the right development practices, continuous integration and fast delivery to support your customers’ needs.

 

We  hope this post has helped with your understanding of DevOps and how it transformatively improve your business outcomes. In our next DevOps post we'll explain the common features in DevOps Platforms & Tools.