-
Notifications
You must be signed in to change notification settings - Fork 11
Yleinen arkkitehtuuridokumentaatio
eVaka on varhaiskasvatuksen toiminnanohjausjärjestelmä, jolla voidaan hallita koko varhaiskasvatuksen elinkaari aina varhaiskasvatukseen hakeutumisesta operatiiviseen toimintaan ja tietojen lakisääteiseen säilyttämiseen asti.
eVaka on selainpohjainen järjestelmä, johon kirjaudutaan roolista riippuen erilaisilla tunnistautumisjärjestelmillä. Kuntalainen kirjautuu järjestelmään hyödyntäen vahvaa tunnistautumista. Kunnan työntekijä voi toimia järjestelmässä eri rooleissa, hän kirjautuu järjestelmään tavallisesti hyödyntäen kunnan omaa käyttäjänhallintajärjestelmää.
eVakan infrastruktuuri perustuu julkisen pilvipalvelualustan käyttöön, hyödyntäen tarkoituksenmukaisesti alustan valmiita palveluja, kuitenkin siten, ettei alusta itsessään rajoita kehittämistä. eVakan pilvipalvelualusta on Amazon Web Services (AWS).
Tärkeimmät käytössä olevat palvelut
- Kuormantasaajat (AWS Elastic Load Balancing) ohjaavat liikennettä palveluiden edustalla ja ECS-klustereiden (Amazon Elastic Container Service) sisällä
- Sovelluksen käyttöliittymäkerros (frontend) tarjotaan nginx:n kautta (Docker-kontti ECS-klusterissa) AWS:n S3:sta
- Palvelukerroksen palvelut (service) ajetaan Docker-konteissa ECS-klusterissa
- Tietojen tallentamiseen käytetään PostgreSQL-tietokantapalvelinta RDS:ssä
- Sessioiden tallentamiseen ja palveluiden välimuistina käytetään Redistä (AWS ElastiCache)
- Ajastettujen toimintojen ajamiseen käytetään AWS Lambda:a ja CloudWatch:ia
- Salaisuuksia hallitaan Parameter Storessa (AWS Systems Manager)
eVakan teknologiavalinnoissa on painotettu teknologioiden yleisyyttä ja helppokäyttöisyyttä. Käytössä olevien teknologioiden määrää on tietoisesti pyritty pitämään mahdollisimman pienenä, jotta järjestelmän kehitys olisi yhdenmukaista, loogista ja tehokasta.
Erilaisten ohjelmointikehysten (frameworks) käyttöä on pyritty minimoimaan, koska kehysten tuominen projektiin on lisännyt koodipohjan kompleksisuutta ja riippuvuuksia. Sen sijaan toteutuksessa on tavoiteltu aina mahdollisimman suoraviivaista ja yksinkertaista toteutustapaa, johon yleensä päästään ilman erillisiä apuvälineitä. Tarkoituksenmukaisissa tilanteissa, kuten käyttöliittymäkerroksessa, kehyksiä on kuitenkin hyödynnetty.
eVakan käyttöliittymäkerros, eli nk. frontend-kerros on toteutettu React Framework -kehyksellä. Lisäksi käyttöliittymäkerroksessa on käytetty seuraavia kirjastoja tai teknologioita:
eVakan API Gateway huolehtii käyttäjän autentikoimisesta ja yhdistää tarvittaessa käyttöliittymäkerrokselle lähetettävää dataa. eVakan arkkitehtuuriperiaatteiden mukaisesti API Gateway kuitenkin välittää lähinnä välittää käyttöliittymäkerroksen (frontend) kutsut palvelukerrokselle (service).
API Gateway on toteutettu TypeScript-ohjelmointikielellä, NodeJS-runtime-ympäristössä. Toteutuksessa on hyödynnetty mm. seuraavia kirjastoja:
Palvelukerros (service) vastaa sovelluksen liiketoimintalogiikasta, tiedon tallentamisesta ja välittämisestä muihin järjestelmiin. Service tarjoaa sisäisen HTTP-rajapinnan palveluiden käyttämiseen. Suurin osa palveluiden operaatioista, kuten hakemuksen tallentaminen, on synkronisia. Service palauttaa HTTP-tilakoodina tiedon operaatiosta kutsuvalle osapuolelle (käytännössä aina API Gateway). Tietyt virheenkäsittelyä vaativat toimenpiteet, ja massaoperaatiot on toteutettu asynkronisina operaatioina. Tällöin palvelukerros tallentaa halutun tehtävän erilliseen työjonoon, josta se suoritetaan ajastetusti.
Palvelukerroksen toteuttamista ohjaavat samat arkkitehtuuriperiaatteet, kuin muitakin järjestelmän osia: toteutus pyritään pitämään mahdollisimman yksinkertaisena ja ylimääräisiä komponentteja, kirjastoja ja sovelluskehyksiä pyritään välttämään. Esimerkiksi tietokantatransaktioiden hallinta tehdään yksiselitteisesti (eksplisiittisesti) koodissa, sen sijaan, että hyödynnettäisiin implisiittisiä transaktionhallintamekanismeja.
Tietokannan lisäksi palvelukerros integroituu erillisiin kolmannen osapuolen järjestelmiin. Tällaisia ovat mm. väestötietojärjestelmä (VTJ), valtakunnallinen Suomi.fi Viestit -palvelu, Opetushallituksen Varda- ja Koski-integraatiot, sekä erilaiset kuntakohtaiset taloushallinnon järjestelmät. Järjestelmiin pyritään integroitumaan REST/JSON -mekanismilla, tarvittaessa käytetään XML/SOAP -viestintää.
Palvelukerros on Java-virtuaalikoneessa (JVM) ajettava ns. stand-alone -tyyppinen sovellus, joka on toteutettu Kotlin-ohjelmointikielellä. Sovelluksen ajamiseen ei tarvita erillistä sovelluspalvelinta, mutta ajoympäristössä on oltava Javan ajonaikainen ympäristö (JRE). Toteutuksen kannalta tärkeimpiä kirjastoja ja kehyksiä ovat mm.
- Spring Boot sovelluksen stand-alone -ajamiseen
- Jdbi tietokantayhteyksien käsittelyyn
- Jackson JSON-käsittelyyn Java-ympäristössä
- Flyway tietokantamigraatioiden ajamiseen
Copyright 2017-2024 City of Espoo
Sisältö on lisensoitu LGPL-2.1-or-later -lisenssillä
- eVaka
- Yleinen arkkitehtuuridokumentaatio
- Prosessikaaviot
- Henkilökunnan eVaka:
- Laskujen muodostus
- Laitimmaislaskenta
- Asianhallintaprosessit, metatiedot ja arkistointi
- Päätökset
- Integraatiot:
- Tarkempi tekninen dokumentaatio: