You are on page 1of 8

BSc in Science in Computing & Multimedia

Year 2, Semester 2, 2023

DevOps
Continuous Assessment

Module Title: DevOps


Module Code: BSC2
Assessment Type: Individual Project
Weighting: Part 2: 30%
Student ID: 24130
Student Name: Joelma Rodrigues
Contents
Introduction ............................................................................................................................................ 3
Problem Identification and DevOps Practices Solution........................................................................... 4
Conclusion ............................................................................................................................................... 7
References............................................................................................................................................... 8
Introduction

DevOps is an increasingly essential approach for organisations to deliver software products quickly and
reliably. This essay will discuss the best DevOps practices that were or could be applied to our project.
The problems that could arise in a software/IT solution organisation will be identified, including lack
of collaboration between departments, slow delivery of software products, frequent outages and
downtime, manual and error-prone deployment processes, and inconsistent and non-standardised
environments for development, testing, and production.

For each problem, a DevOps practice will be selected to address it and discuss the theory behind using
it. The analysis will also examine the implementation and impact of DevOps practices in our classroom
project, including Continuous Integration, Infrastructure as Code, Deployment Pipelines, and
Configuration Management.

This analysis will better understand how DevOps practices can improve software development and
delivery efficiency and quality. Moreover, it highlights the importance of embracing DevOps principles
and practices in organisations to stay ahead in today's technology-driven world.
Problem Identification and DevOps Practices Solution

a. Manual deployment

Manual deployment processes were a problem for our project organisation. The processes were often
more time-consuming and error-prone, leading to delays and mistakes in deploying our software
changes to production environments.

Furthermore, manual deployment processes can be challenging to scale as organisations grow. They
often rely on a small group of individuals with specialised knowledge and expertise, leading to
bottlenecks and delays in the deployment process, ultimately impacting the speed and quality of
software delivery (Smith, 2015).

In addressing this problem, the solution should be to use deployment pipelines to help to reduce the
time and effort required to deploy software changes. By automating the deployment process,
deployment pipelines allow for a standardised and repeatable process that reduces the risk of errors
and improves the quality of software releases (Merron, 2020). This reduces the time to market and
enhances the speed of delivery. Additionally, deployment pipelines can help to identify issues early on
in the development process, reducing the risk of defects and improving the overall quality of the
software product.

Unfortunately, we could only start to apply this process when heading towards the end of our project
deadline. However, in time to understand that implementing this solution would have saved us time.

b. Lack of collaboration between departments

Lack of collaboration between the groups and miscommunication imposed a significant challenge to
the delivery of our project. We often worked isolated as groups or individuals and not as an
organisation, leading to poor communication and collaboration, poor software quality and missed
deadlines.

A DevOps practice that can be used to address this problem is Continuous Integration (CI). CI is a
development practice that requires developers to integrate code changes frequently and
automatically, usually several times a day (Hat, 2022). By doing so, CI promotes collaboration and
communication between development, QA, and operations teams.

In our classroom case study, we only used GitHub due to our familiarity with the platform as a
collaboration and communication tool, which allowed us to manage code changes, track issues, and
collaborate on software development tasks. However, a few of us involved in a more deep process
within the project felt the need for better tools, such as Slack and JIRA, for real-time communication
and collaboration between team members. Slack can help to facilitate faster decision-making, reduce
email clutter, and enable easy sharing of files and information. Despite this, we still managed to
complete the project successfully using only GitHub as our collaboration tool.

c. Inefficient testing

Inefficient testing caused us to miss defects and delayed the deployment of our software versions,
leading to software delivery delays.

To address the problem of inefficient testing, a DevOps practice that can be used is Test Automation,
which involves using specialised software tools to automate the testing process (Kent, 2003). Test
Automation tools can execute tests, report results, and compare them with expected outcomes.
In our project, we did not specifically implement Test Automation or Continuous Testing as DevOps
practices. However, we incorporated automated testing into our CI/CD process using GitHub Actions,
which allowed us to identify defects early in the development process and improve software quality.
We also used a testing framework for our applications, which helped us automate the testing process
and improve testing efficiency.

d. Inconsistent and non-standardised environments for development, testing, and production

One of the challenges we faced during our software development process was inconsistent and non-
standardised environments for development, testing, and production. We often worked with different
software versions and configurations, making it challenging to ensure our software would work
correctly in different environments. This inconsistency led to errors and issues requiring significant
time and effort.

A DevOps practice that can be used is Infrastructure as Code (IaC) to address this problem. IaC involves
managing and provisioning infrastructure using code, enabling organisations to automate the
deployment and configuration of infrastructure. By using IaC, organisations can ensure that
environments for development, testing, and production are consistent and standardised, reducing the
risk of issues and conflicts arising due to differences in environment configurations.

We used Google Cloud Platform tools to manage our environments in our classroom case study. We
used Google Compute Engine to provision virtual machines for development, testing, and production
environments. We also used Google Cloud Storage to store artefacts and Google Cloud Build for
building and deploying our applications. By using these tools, we were able to automate the
deployment and configuration of our infrastructure, ensuring consistency across our environments
and improving overall software quality (Platform, n.d.).

Moreover, we could also use configuration management tools such as Ansible or Puppet to automate
the configuration of servers and services across our environments (RedHat, n.d.). These tools enable
us to manage the infrastructure as code, making it easier to provision, configure, and manage
infrastructure at scale.

Overall, using DevOps practices such as IaC and configuration management can help organisations to
manage multiple environments effectively, ensuring consistency, reducing the risk of issues and
conflicts, and improving the overall efficiency of the software development process (Levan, 2021).

e. Slow delivery of software products

During our classroom project execution, we faced the significant challenge of slow delivery of software
products. Our development cycles were often lengthy, resulting in software release delays. Slow
delivery not only impacted our team's productivity but also led to increased costs and missed
deadlines.

To address this problem, a DevOps practice that can be used is Continuous Delivery (CD). This software
development practice involves automating the entire software delivery process, from code changes to
production releases (Ataiva, 2023). By using CD, organisations can reduce the time to market, deliver
software products more frequently, and improve the quality of the software product.

The theory behind CD is that by automating the entire software delivery process, organisations can
remove manual processes and reduce the time required to deliver software products. This can help
organisations identify issues early in the development process, reduce the risk of conflicts, and
improve overall software quality (Shah, 2023).
Organisations can use various DevOps tools to implement CD, such as Jenkins, CircleCI, and TravisCI.
These tools automate software product building, testing, and deployment, allowing organisations to
release new features and bug fixes quickly and reliably (Shah, 2023).

During our classroom case study, we did not implement Continuous Delivery (CD) as a DevOps practice
due to time constraints, the process requires significant changes to the software development process,
and our team was not familiar with the tools and practices required for implementing CD.

We used GitHub as our collaboration and communication tool to manage code changes, track issues,
and collaborate on software development tasks.

Although we did not implement CD in our project case study, we recognised the benefits it could
provide to organisations in terms of faster delivery and improved software quality.
Conclusion

In conclusion, the DevOps module has provided a comprehensive understanding of the relationship
between DevOps, Agile, Lean, and ITSM. DevOps practices emphasize the collaboration,
communication, and automation between different teams involved in software development and
delivery. Agile practices focus on iterative development and delivering small increments of functional
software, while Lean principles aim to reduce waste and improve efficiency in software development
processes. ITSM practices aim to align IT services with the needs of the business and deliver value to
customers.

By adopting DevOps practices such as Continuous Integration (CI), Continuous Delivery (CD),
Infrastructure as Code (IaC), Deployment Pipelines, and Configuration Management, organizations can
improve their software development and delivery processes. Cloud platforms like AWS, Azure, and
Google Cloud provide the necessary flexibility, scalability, and cost-effectiveness to support DevOps
practices. DevOps tools such as Jenkins, Git, and Slack facilitate communication, collaboration, and
automation, enabling organizations to standardize and streamline their software development and
delivery processes, leading to improved efficiency and productivity.
References
Ataiva, 2023. Ataiva. [Online]
Available at: https://ataiva.com/what-is-devops/

Hat, R., 2022. RedHat. [Online]


Available at: https://www.redhat.com/en/topics/devops/what-is-ci-cd
[Accessed 2023].

Kent, B., 2003. Test-Driven Development. In: Addison-Wesley, ed. s.l.:s.n.

Levan, M., 2021. DEV. [Online]


Available at: https://dev.to/thenjdevopsguy/infrastructure-as-code-vs-configuration-management-
2b66
[Accessed 2023].

Merron, D., 2020. BMC. [Online].

Platform, G. C., n.d. Google Cloud Platform. [Online]


Available at: https://cloud.google.com/build/docs
[Accessed 2023].

RedHat, n.d. Ansible. [Online]


Available at: https://www.ansible.com/overview/how-ansible-works

Shah, H., 2023. Jarvisbitz. [Online]


Available at: https://www.jarvisbitz.com/the-impact-of-automation-testing-on-the-software-
industry/

Smith, C., 2015. Redgate. [Online]


Available at: https://www.red-gate.com/blog/software-development/5-big-benefits-automated-
deployment
[Accessed 2023].

You might also like