A+ is a virtual learning environment initially developed and used at Aalto University. It has since been adopted for use at other Finnish universities as well. A+ provides course staff features for managing course material and monitoring student progress through courses. Students can access the published course material and submit their solutions to (mostly automatically graded) assignments.
The core services of A+ have traditionally run in virtual machine servers. However, there are a number of issues nowadays related to the virtual machine environment. Setting up new instances of A+ has a lot of overhead, making it cumbersome to create testing and staging environments, and raising the bar for new sites to try out the software. Variation between environments reduces the usefulness of testing and staging environments. Application upgrades can also require a lot of downtime and rolling back to a previous version can be complicated.
A container based solution is proposed to combat these issues. Containers enable easy distribution of software versions across sites and deployments and reduce variation between environments. Various container-based technologies also lessen the overhead of setting up new environments, simplify software version upgrades and rollbacks, and offer increased application resilience.
Kubernetes is the standard framework of today for running containers on multiple machines, functioning as an ”operating system of the cloud”. Helm is a package manager for Kubernetes and provides utilities for packaging, installing and upgrading containerized applications. Applications packaged using Helm are called Helm charts.
The end product of this thesis is a Helm chart containing the A+ core software. The chart can be utilized to configure and install new instances of A+ with little deployment overhead, and it is to be the main way of running A+ in Aalto University. The author has also utilized the Helm chart to install new testing and staging environments, and to migrate the existing virtual machine deployment into containers.
A+ on virtuaalinen oppimisympäristö, jota on alun perin kehitetty ja käytetty Aalto-yliopistossa. Sittemmin A+ on otettu käyttöön myös muissa suomalaisissa yliopistoissa. A+ tarjoaa kurssihenkilökunnalle toiminnallisuuksia kurssimateriaalin hallinnointiin ja opiskelijoiden edistymisen seurantaan. Opiskelijat puolestaan pääsevät käsiksi julkaistuun oppimateriaaliin ja pystyvät palauttamaan ratkaisujaan pääasiassa automaattisesti arvosteltaviin tehtäviin.
A+:n pääpalveluja on perinteisesti ajettu virtuaalikonepalvelimilla. Nykyiseen virtuaalikoneratkaisuun liittyy kuitenkin muutamia ongelmia. Uusien A+ -ilmentymien valmistelu vaatii paljon pohjatyötä, mikä tekee testiympäristöjen luomisesta vaivalloista, ja voi nostaa kynnystä A+:n käyttöönottoon. Ympäristöjen väliset eroavuudet vähentävät testiympäristöjen käytöstä saatavia hyötyjä. Sovelluspäivitykset vaativat myös pitkiä käyttökatkoja, ja edelliseen sovellusversioon palaaminen voi olla monimutkainen prosessi.
Näiden ongelmien helpottamiseen on tässä työssä ehdotettu kontainereihin pohjautuvaa ratkaisua. Kontainerit helpottavat ohjelmiston jakelua ja vähentävät eri ympäristöjen välisiä eroavaisuuksia. Kontainereihin pohjautuvat teknologiat myös vähentävät uusien ympäristöjen käyttöönottoon vaadittavaa pohjatyötä, yksinkertaistavat ohjelmistopäivitys- ja palautusprosesseja, sekä tekevät sovelluksista aiempaa kestävämpiä.
Kubernetes on nykyisin oletustyökalu kontainerien suorittamiseen usealla koneella, ja se toimii ns. ”pilviympäristöjen käyttöjärjestelmänä”. Helm on Kuberneteksen paketinhallintatyökalu, joka tarjoaa apuvälineitä kontainer-pohjaisten sovelluksien paketoimiseen, asennukseen ja päivittämiseen. Helmillä pakattuja sovelluksia kutsutaan Helm chart -kaavioiksi.
Tämän työn lopputuotteena on luotu A+:n pääpalvelut sisältävä Helm chart -kaavio. Kaaviota voi käyttää uusien A+ -ilmentymien konfigurointiin ja asentamiseen. Kaavion on tarkoitus olla pääasiallinen tapa ajaa ja ylläpitää Aallon A+ -asennusta. Kirjoittaja on myös työn yhteydessä luonut Aallolle A+ -testiympäristöt sekä siirtänyt olemassa olleen Aallon A+ -virtuaalikoneinstanssin käyttämään kontainereita.