Järjestelmäarkkitehtuuri

Peda.net-palvelun järjestelmäarkkitehtuurin kuvaus

Yleistä Peda.net-palvelusta

Peda.net palvelu tuotetaan käyttäjille Software as a Service (SaaS) -palveluna. Kaikki palvelun käyttö tapahtuu verkkoselaimella. Erillisiä asennettavia sovelluksia (App) ei ole, eikä käyttö ole mahdollista ilman Internet-yhteyttä (offline).

Tärkeimmät Peda.net palvelun tuottamiseen käytetyt ohjelmistokomponentit

Verkkototeutus

Peda.net palvelimien verkkototeutus koostuu neljästä erillisestä loogisesta verkko-osiosta.

  1. Julkinen verkko Internetistä kuormantasaajille.
  2. Jyväskylän yliopiston sisäverkko palvelimien ylläpitoon.
  3. Yksityinen verkko kuormantasaajien ja sovelluspalvelimien väliseen liikennöintiin.
  4. Yksityinen verkko palvelimien väliseen liikennöintiin.

Kuormantasaimet

Kaikki Peda.net palvelun käyttäjäliikenne kulkee kahden HAProxy-kuormantasaimen kautta, joille liikenne jakautuu round robin DNS:n avulla. Lisäksi selaimet vaihtavat automaattisesti toiselle kuormantasaimelle huoltokatkon, verkkohäiriön tai laitevian yhteydessä. Kuormantasaimet huolehtivat liikenteen TLS-salauksesta ja jakavat liikenteen sovelluspalvelimille yksityiseen sisäverkkoon. Peda.net-palvelu on listattuna selaimien HSTS preload -listalle, joten modernilla selaimilla hyökkääjä ei voi pakottaa tietoliikenteen salausta pois päältä vaikka pääsisi käyttäjän lähiverkkoon. Salauksen teknistä toteutusta voi tarkastella Qualys SSL Labs -palvelintestin tuloksista.

Sovelluspalvelimet

Sovelluspalvelimet ajavat kaiken Peda.net palvelun toimintaan liittyvän PHP-koodin.

Tietokantapalvelimet

Tietokantapalvelimet ajavat Peda.net palvelun tarvitsemat PostgreSQL-tietokannat sekä Elasticsearch-hakupalvelut.

Tiedostopalvelimet

Tiedostopalvelimet tallentavat ja jakelevat NFS-tiedostojärjestelmällä kaikki Peda.net palveluun tallennetut käyttäjien tiedostot.

Varmuuskopiopalvelin

Varmuuskopiopalvelin huolehtii koko Peda.net järjestelmän tietojen varmuuskopioinnista ja varmuuskopioiden säilytyksestä. Varmuuskopiopalvelin on yliopiston tiloissa eri rakennuksessa kuin varsinainen palvelinjärjestelmä. Varmuuskopiopalvelimen sisällöstä tehdään vielä erillinen varmuuskopio CSC:n varmuuskopiointipalveluun.

Extras apupalvelin

Virtuaalipalvelimena Jyväskylän yliopiston omassa palvelinsalissa toteutettu extras-palvelin huolehtii @peda.net-sähköpostitileistä, palvelinjärjestelmän toiminnan seurantajärjestelmästä sekä Peda.net järjestelmän PHP-koodin päivityksestä versionhallinnasta tuotantoon sovelluspalvelimille. Lisäksi tämä palvelin toimii myös Peda.netin lähdekoodin versiohallinnan pääpalvelimena. 

Testipalvelin

Testipalvelimella ajettavissa virtuaalipalvelimissa suoritetaan Peda.net järjestelmän tuotekehitys ja testaus.

Tuotekehityksestä

Peda.net järjestelmän tuotekehityksessä käytetään Git-versiohallintaa. Git toimii myös merkittävässä roolissa (DevOps) lähdekoodin ja asetusten julkaisussa sovelluspalvelimille.

Sovelluskehityksen tarpeisiin käytetään virtuaalikoneeseen rakennettua Peda.net-järjestelmän kaikki merkittävät komponentit sisältävää palvelinta. Näin tuotekehitys voidaan tehdä mahdollisimman tarkaan tuotantoympäristöä vastaavassa ympäristössä.

Historia

Versio

Tila / Muutokset

Päiväys

Tekijä

0.9

Ensimmäinen versio

17.4.2018

Juha Lahti

1.0

Hyväksyntä

17.4.2018

Tero Pelkonen

1.1

Päivitetty tieto vaihtamisesta HAProxy-kuormanjakopalvelimiin, lisätty tietoa HSTS preload -tuesta, päivitetty tiedostopalvelimien protokolla NFS:ksi ja päivitetty varmuuskopioinnin toteutus

27.10.2020

Mikko Rantalainen

1.2

 

Päivitetty testipalvelimen kuvaus

8.6.2020

Juha Lahti

1.3

Lisätty TinyMCE käytettyjen komponenttien listaan ja linkit projektien sivuille

26.1.2022

Mikko Rantalainen

1.4

Korjattu versionhallinnan pääpalvelimen tieto, joka oli kirjattu väärän palvelimen kohdalle.

7.4.2022

Mikko Rantalainen

Peda.net käyttää vain välttämättömiä evästeitä istunnon ylläpitämiseen ja anonyymiin tekniseen tilastointiin. Peda.net ei koskaan käytä evästeitä markkinointiin tai kerää yksilöityjä tilastoja. Lisää tietoa evästeistä