Multi-Versioning and Microservices: A Strategy for Developing Reliable Software Systems

dc.contributor.advisorKhazaei, Hamzeh
dc.contributor.authorAkhtarian, Nazanin
dc.date.accessioned2024-03-18T18:03:50Z
dc.date.available2024-03-18T18:03:50Z
dc.date.issued2024-03-16
dc.date.updated2024-03-16T10:39:27Z
dc.degree.disciplineComputer Science
dc.degree.levelMaster's
dc.degree.nameMSc - Master of Science
dc.description.abstractIn the dynamic realm of software engineering, adaptability is key to sustaining system performance and reliability. Software iterations often bring about challenges such as unexpected bugs and performance issues, necessitating a nuanced approach to maintain system integrity. In this work, we propose employing software multi-versioning to enhance system reliability. We embark on an in-depth exploration of the reliability of microservices within chaotic environments. Using Chaos Mesh, we simulate a series of disruptions in a microservices-based application, i.e., the Online Boutique. Through real experimentation, we systematically introduce various chaos disruptions, such as Pod failures, response delay, and memory stress, to investigate their impact on the system's reliability. We define a reliability metric that quantifies the robustness and efficiency of each software version under adverse conditions. Leveraging this metric, we introduce a dynamic controller that adjusts the population of each version, ensuring optimal resource distribution, reliability and system performance. Additionally, our research evaluates how the system adapts to varying workloads. We investigate how well the system can adjust its scalability—specifically, the number of replicas—in response to changes in \acrshort{cpu} usage as the user load fluctuates. Our findings demonstrates the system's capability to scale dynamically based on workload demands, ensuring robustness and efficiency. In conclusion, our study provides a detailed framework for employing software multi-versioning as a means to enhance system reliability. By devising a reliability metric and implementing a dynamic scaling system that responds to both reliability assessments and workload variations, we offer a comprehensive strategy to fortify systems against the unpredictable nature of software evolution, ensuring they remain resilient and make efficient use of resources.
dc.identifier.urihttps://hdl.handle.net/10315/41911
dc.languageen
dc.rightsAuthor owns copyright, except where explicitly noted. Please contact the author directly with licensing requests.
dc.subjectComputer science
dc.subject.keywordsSoftware Multi-versioning
dc.subject.keywordsMicroservices
dc.subject.keywordsReliability
dc.subject.keywordsDynamic scaling
dc.subject.keywordsDiversity factor
dc.titleMulti-Versioning and Microservices: A Strategy for Developing Reliable Software Systems
dc.typeElectronic Thesis or Dissertation

Files

Original bundle
Now showing 1 - 1 of 1
Loading...
Thumbnail Image
Name:
Akhtarian_Nazanin_2023_Masters.pdf
Size:
4.58 MB
Format:
Adobe Portable Document Format
License bundle
Now showing 1 - 2 of 2
No Thumbnail Available
Name:
license.txt
Size:
1.87 KB
Format:
Plain Text
Description:
No Thumbnail Available
Name:
YorkU_ETDlicense.txt
Size:
3.39 KB
Format:
Plain Text
Description:

Collections