Devops and Other Software Development Practices in a Web Application Implementation

Devops and Other Software Development Practices in a Web Application Implementation

Aalto University School of Science Master's Programme in Computer, Communication and Information Sciences Ilkka Malassu DevOps and other software development practices in a web application implementation Master's Thesis Espoo, December 29, 2020 Supervisor: Professor Petri Vuorimaa, Aalto University Advisor: Jani Koski M.Sc. (Tech.) Aalto University School of Science Master's Programme in Computer, Communication and ABSTRACT OF Information Sciences MASTER'S THESIS Author: Ilkka Malassu Title: DevOps and other software development practices in a web application implementation Date: December 29, 2020 Pages: viii + 57 Major: Computer Science Code: SCI3042 Supervisor: Professor Petri Vuorimaa Advisor: Jani Koski M.Sc. (Tech.) DevOps aims to streamline the process of implementing and delivering new soft- ware by merging the traditionally separate functions of software development and operations into a unified model. Continuous practices of DevOps implement pipelines as processes that take software from development to production with as much automation as possible, while maintaining high quality. Choosing the right software development approaches and practices is important in ensuring end user satisfaction, software quality and profitability in a business context. This thesis conducts a case study on a DevOps environment established in the corporate context of the telecommunications company Nokia. This environ- ment is evaluated by observing it's ability to support the continuous development of a web-based application. The goal of this research is to describe how the DevOps environment established within Nokia implements the main functionali- ties of DevOps, compare it with current literature and studies and provide ideas for future discussion and improvements. As a result, the studied DevOps platform successfully supported the continuous development of the web service implemented for the purposes of this thesis. In the future, standardization of pipeline implementations and other configurations could be discussed. A possibility of a migration from using two CI/CD pipeline tools to using only one could also be evaluated. Keywords: DevOps, web, software development Language: English ii Aalto-yliopisto Perustieteiden korkeakoulu DIPLOMITYON¨ Tieto-, tietoliikenne- ja informaatiotekniikan maisteriohjelma TIIVISTELMA¨ Tekij¨a: Ilkka Malassu Ty¨on nimi: DevOps ja muut ohjelmistokehitysk¨ayt¨ann¨ot verkkopalvelun toteutuksessa P¨aiv¨ays: 29. joulukuuta 2020 Sivum¨a¨ar¨a: viii + 57 P¨a¨aaine: Tietotekniikka Koodi: SCI3042 Valvoja: Professori Petri Vuorimaa Ohjaaja: Diplomi-insin¨o¨ori Jani Koski DevOps-mallin tavoitteena on virtaviivaista ohjelmistojen kehitys- ja julkaisupro- sessi. P¨a¨aasiallisesti t¨am¨a toteutetaan sulauttamalla perinteisesti erilliset ohjel- mistojen kehitys- ja yll¨apitovastuut yhten¨aiseksi toiminnoksi. Jatkuvan integraa- tion ja k¨aytt¨o¨onotton periaatteet t¨aht¨a¨av¨at ohjelmistojen viemiseen kehityksest¨a tuotantoon mahdollisimman automaattisesti, samalla taaten korkean laadun. Oikeiden l¨ahestymistapojen ja k¨ayt¨ant¨ojen valitseminen ohjelmistokehityksess¨a on t¨arke¨a¨a loppuk¨aytt¨ajien tyytyv¨aisyyden sek¨a ohjelmistojen laadun ja tuotta- vuuden takaamiseksi. T¨ass¨a diplomity¨oss¨a raportoidaan tapaustutkimus, jonka kohteena oli tietoliikenneyhti¨o Nokian sis¨ainen DevOps-ymp¨arist¨o. T¨am¨a diplo- mity¨o tutkii sen kyky¨a tukea verkkopalveluprojektin jatkuvaa kehityst¨a ja in- tegraatiota. Tutkimuksen tavoitteena on kuvata kuinka ymp¨arist¨oss¨a toteutuu DevOpsin p¨a¨aperiaatteet, verrata sit¨a nykykirjallisuuteen ja tutkimuksiin sek¨a tarjota ideoita tulevaisuuden kehityskohteiksi. Arvioitu DevOps-malli tarjosi onnistuneesti tuen verkkopalvelun kehitysprojektil- le. Jatkuvan integraation, k¨aytt¨o¨onoton ja konfiguraatioiden standardisointi sek¨a siirtyminen kahdesta jatkuvan integraation ty¨okalusta yhteen voidaan arvioida tulevaisuuden kehityskohteina. Asiasanat: DevOps, verkko, ohjelmistokehitys Kieli: Englanti iii Acknowledgements I would like to thank my supervisor Petri Vuorimaa and Nokia for making this thesis possible. Espoo, December 29, 2020 Ilkka Malassu iv Abbreviations and Acronyms CD Continuous Delivery CDP Continuous Delivery Pipeline CI Continuous Integration CM Continuous Monitoring DevOps Development and operations OS Operating system QA Quality assurance REST Representational State Transfer Protocol SCM Source Code Management SDLC Software Development Life Cycle SOA Service-Oriented Architecture TDD Test-Driven Development UAT User Acceptance Test VM Virtual machine WSDL Web Service Description Language v Contents Abbreviations and Acronyms v 1 Introduction 1 1.1 Background and Motivation . .2 1.2 Research questions . .2 1.3 Structure of the Thesis . .2 2 Current literature 4 2.1 Defining DevOps . .4 2.2 An overview of DevOps . .7 2.2.1 Values and goals . .7 2.2.2 Processes . .8 2.3 DevOps software management . .8 2.3.1 Code reviews . .9 2.3.2 Source code management . .9 2.3.3 Build management . .9 2.3.4 Release management . 10 2.3.5 Automation . 10 2.4 Continuous Integration . 10 2.4.1 Unit tests . 11 2.4.2 Pre-checks . 11 2.5 Continuous Delivery . 12 2.5.1 Testing . 12 2.5.2 Coding metrics . 12 2.5.3 Infrastructure-as-Code . 13 2.6 Continuous Deployment . 13 2.6.1 Deployment types . 14 2.7 Studies on continuous practices . 14 2.7.1 Existing literature reviews . 14 2.7.2 Continuous practices: available tools and approaches . 15 2.7.3 Tools for CDP design and implementation . 16 vi 2.7.4 Challenges in migrating to continuous practices . 16 2.8 Adopting DevOps: a case study . 17 2.8.1 Background . 17 2.8.2 Starting the transformation . 18 2.8.3 DevOps adoption methods . 18 2.8.4 Conclusion . 19 2.9 Test-Driven Development . 20 2.9.1 Defining TDD . 20 2.9.2 Studies on TDD . 21 2.10 Web service choreographies with TDD . 23 2.10.1 Choreography development . 23 2.10.2 RESTful Web services and SOAP . 24 2.10.3 Integrating choreographies and TDD . 25 2.11 Microservices and DevOps . 27 2.11.1 Defining microservices . 28 2.11.2 Microservices and DevOps . 28 2.11.3 Migrating to microservices . 28 2.11.4 Challenges with microservices . 30 2.11.5 Related tools . 30 2.12 Chaos engineering . 31 2.12.1 Origins of chaos engineering . 31 2.12.2 Chaos engineering principles . 32 3 Environment 33 3.1 Software management . 33 3.1.1 Source code management . 33 3.1.2 Build and release management . 33 3.2 Software development processes . 34 3.3 The implementation environment . 35 3.4 The web service . 35 4 Methods 37 4.1 Case studies in software engineering . 37 4.2 Case study research methodology . 37 4.2.1 Characteristics . 37 4.2.2 Research process . 38 4.3 The case study of this thesis . 38 4.3.1 Research objectives . 38 4.3.2 Collecting data . 39 vii 5 Implementation 40 5.1 Use cases . 40 5.2 Initial steps . 40 5.3 Build and release management . 41 5.4 Building a CI/CD pipeline . 41 5.4.1 Merge request deployments . 42 5.5 Implementing features . 43 5.5.1 Initial application . 43 5.5.2 First deployment . 43 5.5.3 Incremental improvements . 44 5.5.4 Result pages . 45 6 Evaluation 47 6.1 Build and release configurations . 47 6.2 Writing software code . 47 6.3 CI/CD tools . 48 6.4 Web service implementation . 50 6.5 Summary . 51 7 Conclusion 52 viii Chapter 1 Introduction In a world that is increasingly driven by computer code, the processes and practices of developing software are growing in importance. Decreasing the time it takes to deploy software into production and streamlining the delivery process is essential in an environment where the end users are demanding new features and improvements to their services at an increasing rate. DevOps is a set of practices aimed at merging the responsibilities of soft- ware development and operations teams to decrease the lead times of soft- ware projects. In addition to organizational structuring, DevOps includes all the technological choices that aid in achieving this goal. DevOps and other contemporary software development practices can provide help for problems faced with traditional software delivery processes, which include: inconsis- tency across development and operations environments, risk of failures caused by manual interventions, difficult software configuration and version manage- ment and high costs [1]. This thesis conducts a case study on a DevOps environment implemented in the corporate context of Nokia. The research is done by following the implementation of a web-based service and observing the DevOps platform's ability to support this continuous development process. The observations made during this project are compared with the theoretical framework pro- vided by current studies and literature on DevOps and other software development practices. The goal of the research is to describe how the DevOps envi- ronment established within Nokia implements the main functionalities of DevOps and provide ideas for future discussion and improvements. 1 CHAPTER 1. INTRODUCTION 2 1.1 Background and Motivation DevOps and related software development practices can aid in achieving business goals in the highly competitive domain of IT. This is pursued by breaking down organizational silos and facilitating continuous engagement between the teams of development and operations. Different industries are willing to adopt DevOps due to the advantages it can provide, which leads to a globally increased demand of DevOps professionals. Organisations that have employed these professionals are experiencing better returns compared to businesses that are still utilizing more traditional software development approaches. Continuous Integration and other properties of DevOps have created success stories across different software-related industries, which con- tributes to the increased trendiness of these subjects in the domain of IT. [2] Continuous practices have the goal of accelerating the rate of software deliveries while maintaining a high standard of quality. Evaluating these practices and the related tools is important in identifying challenges and classifying different approaches. [3] 1.2 Research questions This thesis conducts a case study that is centred around the topics of DevOps and CI/CD. The research is guided by two research questions, which are presented below.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    65 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us