Com769 cw1
Com769 cw1
PURPOSE
I – INTRODUCTION.......................................................................................................................... 3
II - PROBLEM STATEMENT............................................................................................................ 4
IV - SOLUTION DESIGN................................................................................................................... 6
VI – CONCLUSION........................................................................................................................... 10
REFERENCES................................................................................................................................... 12
COM769
Scalable Advanced Software Solutions 2
I – Introduction
This paper investigates how Agile, DevOps and CI/CD Pipelines have emerged to address
issues faced with older, more traditional implementation methods which caused bottle necks,
outdated features implementation and frustration among innovative development teams.
Although Agile, DevOps, and CI/CD terms are used interchangeably, they describe three
different aspects of the software development pipeline.
Agile refers to managing the process and workflow. Agile teams are
constantly listening to requirements and requests.
DevOps is a culture aiming in removing corporation walls and brings teams
together to enable agile development.
CI/CD focuses on software related lifecycles and removes bottle necks
caused by human testing through automation.
The focus of this paper will be on the CI/CD pipeline integration and how it relates to
improved project management, build processes, deployment, and testing.
CI/CD combines the practices of continuous integration and continuous delivery. CI/CD
automates much, or all the manual human intervention traditionally needed to get new code
from a commit into production, encompassing the build, test (including integration tests, unit
tests, and regression tests), and deploy phases, as well as infrastructure provisioning. With a
CI/CD pipeline, development teams can make changes to code that are then automatically
tested and pushed out for delivery and deployment. Get CI/CD right and downtime is
minimized, and code releases happen faster. [1]
Some of the issues that a CI/CD Pipeline can resolve include but are not limited to.
Project management efficiency by providing flexibility in the outcome and allowing
customers to implement changes and fixes as the project progresses.
Frequency of code revisioning to maintain cutting edge technology prominent and
satisfying developers who are creative and ambitious.
Streamlines build processes by automating testing and deployment.
Removes bottlenecks from testing by removing the human element.
A strong argument for the use of Agile methodology and the CI/CD Pipeline can be
envisioned in the figure below.
The key word here is ‘continuous’ and CI/CD is the backbone of a DevOps methodology,
bringing developers and IT operations teams together to continuously build, test and deploy
software [2].
Implementing a CI/CD pipeline is paramount for modern software development due to its
ability to streamline the development process, enhance software quality, and accelerate time-
to-market. The constant testing and reliable deployment of code not only mitigate risks
associated with human error but also establish a consistent, high-quality output. Moreover,
the collaborative environment it fosters, enabling team members to work on the latest
codebase, alongside its adaptability and scalability, ensures that projects of varying
complexities can be efficiently managed. Ultimately, the rapid, reliable deployment of new
features and updates leads to heightened customer satisfaction, making the implementation
of a CI/CD pipeline a critical asset in the competitive world of software development.
COM769
Scalable Advanced Software Solutions 3
II - Problem Statement
Traditionally, software deployment followed the waterfall methodology.
Waterfall methodology is a project management approach that emphasizes a linear
progression from beginning to end of a project. [3].
Progress on a waterfall concept flows downwards and each stage is generally completed
before the next stage can begin. Although this method provides a clear vision of what the final
product will look like, it has some major drawbacks such as:
No feedback from the customer or client until the end of the project.
Any update on features must wait until the next waterfall cycle.
Delay in new features implementation or optimisation
This means that once a project is complete, then the developers can start on a new project
with advanced features and improved stability, however, with that in mind, when said project
is delivered, it may already be out of date.
A good case study for this is Microsoft Windows. Once Windows 95 was released, then work
on Windows 98 began, but any features that were thought of after the waterfall concept had
been drawn up would need to wait until Windows 2000 work had begun.
This method provided a lot of rigidity and inflexibility which led to the birth of the Agile
methodology in the early 2000s.
COM769
Scalable Advanced Software Solutions 4
III - Identified Approaches to Address the Problem
In Section “I – Introduction” the benefits and uses of a CI/CD Pipeline are outlined, however
there are several approaches that can be taken to address the issues at hand such as:
Kanban boards are visual tools used in Agile project management methodologies to
represent work as it progresses through various stages. Like a white board with sticky
notes.
o Impacts and benefits: These include workflow visualisation, improved
efficiency, and enhanced collaboration.
Unit testing is a software development process in which the smallest testable parts of
an application, called units, are individually scrutinized for proper operation. Software
developers and sometimes QA staff complete unit tests during the development
process. [5]
o Impacts and benefits: Allows for early detection of bugs and issues within the
code and provides an enhancement in accuracy and consistency of delivery
which equates to satisfied customers.
Scrums and Sprints: While scrum is a framework used for Agile software
development, sprints are a fundamental component within the Scrum framework.
Sprints are focused goals within a timed duration (1-4 weeks for example). These
allow a timely review of effort and accomplishments and allows development to
manage large tasks in sub sections and to put focus on the larger tasks as they arise.
o Impacts and benefits: Transparency between teams on what is being worked
on and how much effort is involved, allows for improved decision making and
flexibility on end goals as new challenges arise.
COM769
Scalable Advanced Software Solutions 5
Figure 5 - Scrums and Sprint Model [7]
IV - Solution Design
The focus of this paper is on the implementation of a CI/CD Pipeline which will automatically
integrate, build, and deploy a test code and thus the following chapter will highlight, in detail,
the creation and implementation of a CI/CD pipeline using MS Azure and GitHub.
Prerequisites:
Requirements include:
Access to a GitHub account
An Azure DevOps Organisation
Ability to run pipelines on Microsoft Hosted Agents
Firstly, we will fork a repository from GitHub. For this demo, we will use a Python Django
WebApp sample from https://github.com/Azure-Samples/msdocs-python-django-webapp-
quickstart/tree/main:
Then a WebApp was created, and deployment centre configured to link to GitHub:
COM769
Scalable Advanced Software Solutions 6
Figure 7 - WebApp creation
COM769
Scalable Advanced Software Solutions 7
Creating a Pipeline in Azure and reviewing the YAML code before committing to the main
branch.For future changes we can create a new branch and test on the new branch before
committing to the main branch if all tests passes.
COM769
Scalable Advanced Software Solutions 8
And shown working:
YAML file was set up to deploy code once tests are complete and passed.
COM769
Scalable Advanced Software Solutions 9
V - Quantification of Solution Performance
The CICD Pipeline aimed at running three tests on different Python versions and deploying
the webapp upon completion. The three tests were performed several times whilst trying to
debug a deployment issue and their timings varied from 15s to 30s each, totalling 45-90
seconds to run the whole test script and the deployment varied from 6 to 15 seconds, thus a
total range of 51 to 105 seconds to test the web app on three different python versions and
deploy it to Microsoft Azure.
VI – Conclusion
A CI/CD pipeline and DevOps culture streamline software development by automating testing,
integration, and deployment processes. This methodology enhances collaboration between
development and operations teams, fostering faster and more reliable software delivery.
Continuous Integration ensures code quality, while Continuous Deployment automates
releases, reducing manual errors. DevOps principles promote communication, collaboration,
and automation, resulting in increased efficiency, shorter development cycles, and quicker
response to customer and user feedback. Ultimately, adopting CI/CD and a DevOps culture
accelerates software delivery, improves product quality, and enhances overall team
productivity, making it a worthwhile and transformative approach in modern software
development.
COM769
Scalable Advanced Software Solutions 10
COM769
Scalable Advanced Software Solutions 11
References
COM769
Scalable Advanced Software Solutions 12