Suorituskykyinen Suomi.fi-palveluväylä

Suomi.fi-palveluväylä tarjoaa vakioidun tavan tietojen siirtoon organisaatioiden välillä mahdollistaen turvallisten palvelukokonaisuuksien rakentamisen kansalaisille, yrityksille ja viranomaisille. Tämän palveluväylä tarjoaa ja lupaa. Mitä sanan ”siirtoon” taakse kätkeytyy? Minkälaista dataa palveluväylässä voidaan itseasiassa siirtää ja miten suorituskykyinen se on? Yritän kirjoituksessani avata asiaa, koska useissa keskusteluissa useiden eri tahojen suunnalta on kysytty tätä ja toivottu selkeytettävän.

Historiaa

On totta, että X-Roadissa käytettävä SOAP-tiedonsiirtoprotokolla on alun perin suunniteltu pienten sanomien siirtoon. Moni on ihmettelyt, miksi ylipäätään SOAP-tiedonsiirtoprotokollaa käytetään X-Roadin perustekniikkana. Eikö olisi järkevämpää käyttää jotain nykyaikaisempaa protokollaa, vaikkapa REST/JSON-pohjaista tekniikkaa? Lyhyt vastaus on, että kun koko X-Road-järjestelmää aloitettiin suunnittelemaan 90-luvun loppupuolella Virossa, mietittiin, mikä olisi hyvä ja luotettava tapa siirtää dataa silloisissa tietoverkoissa ja käytössä olevilla protokollilla. Siihen aikaan kun varteenotettavia ja jo hyväksi koettuja protokollia ei ollut liiemmälti. Silloin päätettiin valita käyttöön XML-pohjainen XML-RPC-protokolla. XML oli tullut silloin jo laajemmalti käyttöön (vuonna 1996 julkistettiin ensimmäinen luonnosversio XML-spesifikaatiosta ) ja näytti, että siitä tulee valtaprotokolla tiedon siirtoon tietoverkoissa, joten valinta oli luonteva.

Vuonna tehtiin 2002 SOAP RPC/encoded -tuki, SOAP document/litteral wrapped -tuki valmistui vuonna 2010. Viron puolella nykyisen SOAP-protokollan vakiintuminen ja laaja käyttö ovat valideja perusteluja sille, miksi SOAP- protokollaa edelleenkin käytetään X-Roadin pohjana. Suomen puolella ei ole toistaiseksi lähdetty tekemään poikkeavaa linjausta, koska se vaatisi aika ison kehitystyön. Ajatus- ja ideatasolla tätä on jo mietitty.

REST/JSON-sovitin saatavilla

REST/JSON-pohjaisten järjestelmien liittäminen Suomi.fi-palveluväylään on kuitenkin mahdollista niin sanotun Rest Gateway -sovittimen avulla. Komponentti on saatavilla ilmaiseksi avoimena lähdekoodina Github repositoriosta. Komponenttia on testattu ja koestettu paljon ja sitä käytetään jo useissa erilaisissa palveluväyläliitynnöissä kytkemään REST/JSON-pohjainen tietojärjestelmä palveluväylään.

Suorituskyvyn parantaminen syksyn teemana kehitystyössä

Syksyn aikana Suomessa tehdyssä Palveluväylän kehitystyössä on keskitytty suorituskyvyn parantamiseen, jotta palveluväylän siirtokyky tukee paremmin erityisesti Suomessa väylään liittyviä organisaatioita. Suorituskykyä on parannettu mm. optimoimalla tietokantahakujen suorittamista, kehittämällä varmenteiden tarkistuksessa käytettävän OCSP-palvelun (Online Certificate Status Protocol) toimintaa ja parantamalla välimuistin käyttöä. Viimeisimpänä isona parannuksena on julkistettu ohjeistus siitä, miten muistiasetuksia kannattaa säätää omalla palvelinalustalla. Ohjeistus auttaa jokaista palveluväylään liittynyttä organisaatiota parantamaan oman liityntäpalvelimensa suorituskykyä, koska liityntäpalvelimen asennuspaketissa asetettavat vakioasetukset eivät useinkaan sovellu suoraan käyttöön, ainakaan optimaalisella tasolla. (Lisää muistiasetuksien optimoinnista täältä). Ohjeiden lukeminen ja käyttöönotto todellakin kannattaa, koska se auttaa parantamaan liityntäpalvelimen suorituskykyä merkittävästi.

Ystävämme Virossakaan eivät ole lepäilleet laakereillaan, vaan ovat omalta osaltaan tuoneet panoksensa X-Road-väylän suorituskyvyn parantamiseksi. He ovat toteuttaneet mm. uuden SOAP Body parserin, jonka pitäisi tuoda huomattavaa suorituskyvyn parannusta ja muistin käytön optimointia viestien välitykseen. Heiltä saatujen alustavien suorituskykytestien pohjalta puhutaan useiden kymmenien prosenttien parannuksesta varsinkin suurilla (>= 1MB) ja kompleksista rakennetta sisältävillä SOAP-viesteillä. Tämä merkittävä parannus on tulossa seuraavaan julkaistavaan versioon (versio 6.9.0). Tarkempia mittaustuloksia saadaan, kunhan teemme Suomen palveluväylässä omat suorituskykymittauksemme.

Yleinen suorituskyky

Palveluväylän yleisestä suorituskyvystä puhuttaessa voidaan antaa tiettyjä yleislinjauksia siitä, minkälaiseen tiedonsiirtoon palveluväylä on suunniteltu ja missä se on parhaimmillaan. Lopulta väylän siirtokyvykkyys eri järjestelmissä riippuu monesta eri asiasta, kuten: minkälaisia viestejä halutaan siirtää, miten isoja ne ovat, mikä on käytettävän verkon siirtonopeus ja miten paljon yhtäaikaisia käyttäjiä/palvelukutsuja järjestelmässä on. Alla on listattuna muutama ohjenuora, minkälaisiin tiedonsiirtoihin palveluväylä on erityisen soveltuva:

  • Parhaimmillaan siirtokyky on siirrettäessä pieniä synkronisia viestejä
  • Sanomakoolla 100 kt ja alle suorituskyky on paras
  • Yli 500 kt sanomakoolla suorituskyky laskee jonkin verran

Suorituskykymittausten tuloksia

Jotta palveluväylän suorituskyvystä saisi paremman kuvan ja sitä voisi verrata vaikkapa oman järjestelmän tarpeisiin, on alla esitelty suorituskykymittausten tuloksia. Palveluväylän jokainen julkaistava versio suorituskykytestataan kattavasti ja mittaustulokset dokumentoidaan säännönmukaisesti. Saatuja tuloksia analysoidaan ja verrataan esimerkiksi edellisen version mittaustuloksiin, jotta nähdään, miten suorituskyky on muuttunut eri versioiden välillä.

Testit suoritetaan kuvan 1 mukaisella testijärjestelmällä. Kuormageneraattorilla ajetaan pyyntösanomia asiakaspään liityntäpalvelimelle (Security Server 1), joka pyytää sanomiin vastausta palveluntarjoajan liityntäpalvelimelta (Security Server 2). Tämä liityntäpalvelin saa vastaukset testipalvelulta. Testipalvelu tuottaa vakiovastauksen sekä siihen liittyvät liitetiedostot, ja sanomakoot voidaan määritellä testin konfiguroinnilla. Vastaussanoma kulkee samaa reittiä takaisinpäin ja testissä mitataan, miten kauan koko viestiketjun (kyselysanoma – vastaussanoma) suorittamiseen kuluu aikaa.

palveluvayla_blogi_suorituskykytestaus

Kuva 1. Suorituskykymittauksen testijärjestely.

Testit ajetaan niin, että ensin määritetään kyseisessä testiajossa siirrettävä sanomakoko. Tämän jälkeen määritellään, miten yhtäaikaisten käyttäjien määrää lisätään testin aikana. Tyypillinen skenaario on, että testin aluksi käyttäjiä on 1, jonka jälkeen määrää kasvatetaan: käyttäjämäärä nousee askelittain, suurimmillaan yhtäaikaisia käyttäjiä on normaalitapauksessa n. 150-300.

Seuraavissa kuvissa on esitetty kolme eri testimittausta 100 B, 100 K ja 500 K viestipaketeilla uusimmalla liityntäpalvelimen versiolla (versio 6.7.13) suoritettuna ja suositeltavin muistiasetuksin tehtynä. Kumpikin liityntäpalvelin on varustettu samanlaisella alustakokoonpanolla:

  • OS: Red Hat 7
  • Keskusmuisti: 4 Gb
  • 1 CPU (E5-2650 v3, 2.50 GHz)
  • Levytila: 7 Gb

Kuvissa esiintyvä lyhenne TPS tarkoittaa ’Transactions Per Second’, eli montako tapahtumaa sekunnissa tapahtuu ja ’Transactions’ termi tarkoittaa tapahtumien lukumäärää, eli montako viestipakettia on siirretty. Kullekin tietyn kokoiselle viestipaketille on esitetty aina kaksi kuvaa: mittaustulokset vasteajoille ja tapahtumamäärät testin suorituksen aikana.

100B viestipakettien mittaustulokset

palveluvayla_blogi_100b_response_times

Kuva 2. 100B viestipakettien vasteajat.

palveluvayla_blogi_100b_transactions

Kuva 3. 100B viestipakettien tapahtumamäärät.

100K viestipakettien mittaustulokset

palveluvayla_blogi_100k_response_times

Kuva 4. 100K viestipakettien vasteajat.

palveluvayla_blogi_100k_transactions

Kuva 5. 100K viestipakettien tapahtumamäärät.

500K viestipakettien mittaustulokset

palveluvayla_blogi_500k_response_times

Kuva 6. 500K viestipakettien vasteajat.

palveluvayla_blogi_500k_transactions

Kuva 7. 500K viestipakettien tapahtumamäärät.

Mittaustuloksista lyhyesti

Kuvista nähdään, että palveluväylän datan siirtokyky on hyvä tai varsin hyvä, kun viestipakettien koko ei nouse isoksi (<=500 K) ja kun yhtäaikaisten käyttäjien määrä pysyy maltillisena (<=50 yhtäaikaista käyttäjää). Edellä mainittuja arvoja suuremmilla pakettikooilla ja isommilla määrillä yhtäaikaisia käyttäjiä palveluväylän suorituskyky heikkenee. Data siirtyy, mutta jonkin verran huonommalla suorituskyvyllä. Suorituskykyyn on tulossa huomattavaa parannusta version 6.9.0 myötä. Silloin voidaan odottaa merkittävästi parempia mittaustuloksia.

Liitetiedostojen siirrosta ja suorituskyvystä

Kun on tarve siirtää väylän yli jotain muuta kuin SOAP-viestiin sisään menevää XML-dataa tai halutaan siirtää isoja tiedostoja (yleensä >=1 Mb), oikea ratkaisu on käyttää ns. SOAP Attachment -siirtotapaa. Data siirretään silloin siis liitetiedostoina väylän yli. Alla muutamia liitetiedostojen siirtoon ja suorituskykyyn liittyviä seikkoja:

  • Palveluväylän kautta siirrettävien liitetiedostojen siirtoaika muodostuu lineaarisesti tiedoston koon mukaan.
  • Ylärajaa tiedostokoolle ei ole rajoitettu, vain levytila ja käytettävissä oleva aika rajoittavat.
    • Palveluväylän kehitysympäristössä on siirretty testimielessä 30 Gt liitetiedosto ongelmitta.
  • Liitetiedostojen siirtoaika riippuu myös käytetystä laitteistosta, pääasiassa CPU:sta ja levy-IO:n ja verkko-IO:n nopeudesta.
  • Palveluväylällä saadaan useimmissa tilanteissa riittävän hyvä suorituskyky isojenkin tiedostojen siirtoon, kunhan liityntäpalvelimet ovat riittävän tehokkaita.
  • Palveluväylän kautta tehtävä tiedonsiirto on jonkin verran suoraa SOAP-kutsua tai esimerkiksi SFTP-siirtoa hitaampi. Palveluväylän kautta tiedonsiirtoon menee noin 3,3 kertaa enemmän aikaa verrattuna SFTP:n yli tiedostoa siirrettäessä.

Alla olevassa taulukossa on muutamia mittaustuloksia, joita tekemissämme testeissä on saatu.

palveluvayla_blogi_liitetiedostojen_koot

Taulukko 1. Liitetiedostojen mittaustuloksia.

Taulukossa esiintyvät termit:

SOAP direct: suora palvelukutsu tietojärjestelmien välillä (palveluväylän liityntäpalvelimet eivät osallistu viestin välitykseen)

SOAP xroad: testipalvelua käytetään palveluväylän kautta (ns. normaali tapa käyttää palveluväylää)

SFTP: siirretään tiedosto SFTP:llä

568 Mbit/s: laskennallinen siirtoaika verkon maksiminopeudella

Yhteenveto

Palveluväylä on varsin suorituskykyinen tapa siirtää tietoa. Pitää muistaa, että palveluväylä tuo tiedonsiirtoon muun muassa tietoturvaa, aikaleimausta, varmenteita ja vakioituja ratkaisuja palveluiden liittämiseksi ja käyttämiseksi väylässä. Tällöin väistämättä suorituskykyyn tulee pientä alenemaa. Kaikkea kun ei voi saada yhdessä paketissa. Palveluväylä tarjoaa siis siirtokyvykkyyttä tietoturvalla varustettuna. Ja mikä parasta: tämä kaikki on saatavilla valmiina paketoituna kokonaisuutena ja vieläpä käytettävissä ilmaiseksi! Liity mukaan täältä: Liity Palveluväylään

Hannu Hakala

Kirjoittaja työskentelee IT-alan palveluyritys Cybercomin palveluksessa ja on Suomi.fi-palveluväylän tuoteomistaja. Hän on innokas digitalisoitumisen puolestapuhuja: ”Mikä onkaan hienompaa, kuin tehdä digitalisaatiota kotimaan hyväksi”.

0 replies

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

Vahvistus * Aikaraja ylittyi. Lataathan CAPTCHAn uudelleen painamalla päivitys-ikonia.