Lovelacen skaalautuvuuden parantaminen hajautetun API-ratkaisun avulla
Ervasti, Kasperi; Holma, Viljo (2025-06-09)
Ervasti, Kasperi
Holma, Viljo
K. Ervasti; V. Holma
09.06.2025
© 2025 Kasperi Ervasti, Viljo Holma. Ellei toisin mainita, uudelleenkäyttö on sallittu Creative Commons Attribution 4.0 International (CC-BY 4.0) -lisenssillä (https://creativecommons.org/licenses/by/4.0/). Uudelleenkäyttö on sallittua edellyttäen, että lähde mainitaan asianmukaisesti ja mahdolliset muutokset merkitään. Sellaisten osien käyttö tai jäljentäminen, jotka eivät ole tekijän tai tekijöiden omaisuutta, saattaa edellyttää lupaa suoraan asianomaisilta oikeudenhaltijoilta.
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:oulu-202506094217
https://urn.fi/URN:NBN:fi:oulu-202506094217
Tiivistelmä
Internetin vakiinnuttua osaksi jokapäiväistä arkea, verkkopalveluiden on täytynyt sopeutua jatkuvasti kasvaviin käyttäjämääriin. Täten palveluiden on kyettävä skaalaamaan toimintaansa tehokkaasti säilyttääkseen toimintakykynsä. Skaalaaminen voidaan toteuttaa joko horisontaalisesti tai vertikaalisesti. Vertikaalinen skaalaminen koskee palvelinkomponenttien päivittämistä, kun taas horisontaalinen skaalaaminen käsittelee palvelun jakamista useammille palvelimille esimerkiksi replikoinnin tai partitioinnin keinoin.
Tämän opinnäytetyön tavoitteena oli parantaa Oulun yliopiston Lovelace-oppimisympäristön skaalautuvuutta kehittämällä uusi ohjelmointirajapinta (Application Programming Interface, API) vastaustietojen hajautettuun tallentamiseen ja lukemiseen sekä tutkia kehitetyn ratkaisun soveltuvuutta tähän tarkoitukseen.
Työssä suunniteltiin ja toteutettiin ohjelmointirajapinta REST-arkkitehtuurimallin mukaisesti Python-ohjelmointikielellä hyödyntäen Django REST framework -kirjastoa. Toteutettu API tukee valtaosaa Lovelacen nykyisistä vastaustyypeistä ja mahdollistaa tämän vastausdatan tallentamisen, lukemisen, päivittämisen ja poistamisen.
Työn testaus suoritettiin CSC:n cPouta-pilvipalvelun virtuaalikoneilla, joihin kehitetty API asennettiin. Palvelun suorituskykyä arvioitiin vertailemalla yhden API:n suorituskykyä useaan yhtäaikaiseen API:in, kun palvelua rasitettiin simuloimalla yhtäaikaisia käyttäjiä Locust-työkalun avulla.
Työn tulokset osoittavat, että API:en monistaminen ja niihin tiedon jakaminen laskee pyyntöjen vasteaikoja sekä mahdollistaa suurempien käyttäjämäärien hallinnan. Nämä tulokset vahvistavat oletusta siitä, että vastausten hajauttaminen usealle palvelimelle voi toimia tehokkaana ratkaisuna Lovelacen skaalamisessa.
Tämän opinnäytetyön tavoitteena oli parantaa Oulun yliopiston Lovelace-oppimisympäristön skaalautuvuutta kehittämällä uusi ohjelmointirajapinta (Application Programming Interface, API) vastaustietojen hajautettuun tallentamiseen ja lukemiseen sekä tutkia kehitetyn ratkaisun soveltuvuutta tähän tarkoitukseen.
Työssä suunniteltiin ja toteutettiin ohjelmointirajapinta REST-arkkitehtuurimallin mukaisesti Python-ohjelmointikielellä hyödyntäen Django REST framework -kirjastoa. Toteutettu API tukee valtaosaa Lovelacen nykyisistä vastaustyypeistä ja mahdollistaa tämän vastausdatan tallentamisen, lukemisen, päivittämisen ja poistamisen.
Työn testaus suoritettiin CSC:n cPouta-pilvipalvelun virtuaalikoneilla, joihin kehitetty API asennettiin. Palvelun suorituskykyä arvioitiin vertailemalla yhden API:n suorituskykyä useaan yhtäaikaiseen API:in, kun palvelua rasitettiin simuloimalla yhtäaikaisia käyttäjiä Locust-työkalun avulla.
Työn tulokset osoittavat, että API:en monistaminen ja niihin tiedon jakaminen laskee pyyntöjen vasteaikoja sekä mahdollistaa suurempien käyttäjämäärien hallinnan. Nämä tulokset vahvistavat oletusta siitä, että vastausten hajauttaminen usealle palvelimelle voi toimia tehokkaana ratkaisuna Lovelacen skaalamisessa.
Kokoelmat
- Avoin saatavuus [38618]