Implementing a continuous integration and delivery pipeline for a multitenant software application
Manninen, Eemeli (2019)
Diplomityö
Manninen, Eemeli
2019
School of Engineering Science, Tietotekniikka
Kaikki oikeudet pidätetään.
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi-fe2019101733545
https://urn.fi/URN:NBN:fi-fe2019101733545
Tiivistelmä
Continuous integration and delivery are processes which allow software companies to automate the building, testing and installation of software solutions. This thesis designs and documents a CI/CD pipeline for Enerity Solutions Oy with the intent of allowing the company to automate its manual deployment processes in a multitenant environment. The pipeline was created as a design science artifact based on company interviews and the current processes of the field. The feature development and integration stages of the pipeline automatically build and test source code changes while the delivery stage enables a scheduled delivery process. The pipeline reduces risk of defects by introducing performance testing, database schema validation and environment replicability but requires upfront technical investment, may cause tenant system availability to suffer during implementation and may introduce over reliance on single pipeline components. Jatkuva integraatio ja -käyttöönotto ovat prosesseja jotka mahdollistavat ohjelmistokoodin automatisoidun kääntämisen, testaamisen ja julkaisun ohjelmistoyrityksissä. Tässä tutkielmassa suunnitellaan jatkuva integraatio ja -toimitusprosessi Enerity Solutions Oy:lle tarkoituksenaan mahdollistaa yrityksen ohjelmistotuotteiden käsin toimituksen automatisointi. Suunnitelma kehitettiin suunnittelutieteen teennöksenä jossa yhdistettiin yrityshaastatteluja ja nykyisiä alan lähestymistapoja. Tuotannon ja integraation vaiheet kääntävät ja testaavat ohjelmakoodia automaattisesti ja toimitusvaihe koostuu ajastetusta toimitusprosessista. Suunnitelma vähentää ohjelmistovirheiden riskiä mahdollistamalla suorituskykytestauksen, tietomallien validaation ja ympäristöjen kahdentamisen, mutta vaatii teknistä investointia, voi aiheuttaa ohjelmiston toimimaattomuutta käyttöönoton aikana ja voi johtaa yliriippuvuuteen yksittäisistä prosessin komponenteista.