Nykyisin suosittu tapa toteuttaa ohjelmistoja on käyttää mikropalveluarkkitehtuuria. Siinä yhden suuremman suoritettavan ohjelmiston (monoliitti) sijaan sovellukset toteutetaan pienempinä palasina, mikropalveluina. Näitä varsinainen sovellus voi sitten hyödyntää yksittäisen asian toteuttamiseen. Mikropalveluita voidaan myös hajauttaa eri sijainteihin, eli kutsua niitä verkon kautta. Kun avaamme nettiselaimen käyttääksemme tiettyä palvelua, avautuva sivusto onkin voinut kutsua verkon kautta eteemme avautuvaa sisältöä hyvin monesta eri paikasta.
Olipa kyse perinteisestä monoliitista tai mikropalveluiden avulla toteutetusta sovelluksesta, viive on kaikille yhteinen vihollinen.
Viiveisiin vaikuttavat monet eri seikat. Kyse voi olla ohjelmistokoodissa tehdyistä valinnoista, sovelluksen ajoalustana käytetyn palvelimen suorituskyvystä ja sijainnista tai yhtäaikaisten käyttäjien määrästä. Viiveeseen vaikuttaa myös se, millainen verkkoyhteys niin käyttäjällä kuin vaikkapa ohjelmiston eri osia palvelevilla mikropalveluillakin on käytössään. Jotkut sovellukset ovat luonteeltaan viiveherkempiä kuin toiset.
Olen sitä mieltä, että koodarin tai sovelluksen ylläpitäjän voisi olla hedelmällistä keskustella viiveistä myös verkko-operaattorin kanssa. Tässä muutama operaattoripään keino taklata viivettä:
1. Mittaus ja analysointi. Varsinkin viiveherkkien sovellusten yhteydessä on eduksi, jos ohjelmistokehittäjä, sovelluksen ylläpitäjä ja verkkoasiantuntija jo varhaisessa vaiheessa kokoontuvat tarkastelemaan viivettä: kuinka mitataan käyttäjälle saakka näkyvää sovelluksen viivettä ja missä eri komponenteissa sitä syntyy minkäkin verran eri tilanteissa. Näin voidaan analysoida, missä osissa viiveeseen voidaan ylipäätään vaikuttaa kustannustehokkaimmin. Viiveen ”päästä päähän” mittaukseen on operaattoreilta saatavilla tukea.
2. Verkon liityntätekniikan valinta. Asia saattaa tulla eteen vaikkapa vanhojen kuparikaapelipohjaisten yhteyksien poistuessa, kuin mietitään, mitä tilalle. Kuitukaapelia käyttävät liittymävaihtoehdot kannattaa katsoa ensimmäisenä. Kuitua ei kuitenkaan ole joka paikkaan valmiiksi saatavilla, ja sen tuominen kohteeseen voi olla hyvin kallista. Seuraavat vaihtoehdot ovat tyypillisesti kaapeli-TV-verkko ja varsinkin meillä Suomessa mobiiliverkko. Joku saattaa muistella aiempia kokemuksiaan siitä, että 3G- tai 4G-verkossa viive on ollut liian pitkä ja aiheuttanut hankaluuksia sovellusten toiminnassa. Kannattaa kuitenkin antaa mobiiliverkolle uusi mahdollisuus: 5G-verkoissa viiveet ovat aiemman sukupolven mobiiliverkkoja alemmat.
Paras suorituskyky saavutetaan Kiinteällä 5G -toteutuksella (Fixed Wireless Access, FWA), jolloin kohteen ulkoseinään asennetaan kiinteä ulkoyksikkö. Mobiiliverkossa viivettä voi vähentää myös lisäämällä verkkoon alueellisia kytkentäpisteitä (regional breakout), jolloin vaikkapa ambulanssista saadaan mahdollisimman lyhyt, pieniviiveinen reitti oman alueen sairaalan tietojärjestelmiin.
3. Pilvikytkentä. Yksi viiveeseen vaikuttava yleistrendi on pilvipalveluiden käytön lisääntyminen. Pilvi voi tehostaa jotain osuutta, kun vaikkapa useita eri mikropalveluita keskitetään ajettavaksi samassa pilvipalveluympäristössä. Samalla pilvipalvelukonesali voi kuitenkin sijaita paljon kauempana, esimerkiksi Keski-Euroopassa, kun vanha sovelluksen ajoalusta on ollut kotimaisessa konesalissa. Vaihtoehtoisesti osa sovelluksen käyttämistä mikropalveluista voi sijaita lähempänä, osa kauempana olevissa konesaleissa, tai eri mikropalvelut olla kokonaan eri pilviekosysteemeissä. Samoin yhteyksiä näkee välillä muodostettavan Internetin yli. Operaattoreilla on tähän tarjota suoria pilvikytkentäyhteyksiä, jolloin pilvipalvelukonesalit, perinteiset kotimaiset konesalit ja yrityksen verkko voidaan yhdistää suoraan toisiinsa tasalaatuisella yhteydellä, jossa ei ole internetille tyypillisiä suorituskyvyn vaihteluita.
4. Reunalaskenta. Yksi uusi nouseva vaihtoehto kokonaisratkaisun tukemiseen on reunalaskenta (edge computing) Viiveherkkä sovellus tai sen osa voidaan tällöin sijoittaa palvelinalustaan lähemmäs käyttäjää. Tällaisia pilottitoteutuksia on nähty monesti liikkuvan työn ratkaisuissa. Ne hyödyntävät esimerkiksi 5G-yksityisverkkoja. Vastaavaa reunalaskennan suorituskyky toimii yhtä hyvin kiinteän dataverkon yhteydessä käytettäville sovelluksille.
Koodarin näkökulmasta olisi varmasti ihanaa vain ilmoittaa verkkotiimille, että tilatkaa meille niitä viiveettömiä verkkoyhteyksiä. Kuten edellä todettiin, viiveitä kuitenkin syntyy eri paikoissa. Verkko on kieltämättä yksi niistä, mutta ei ainoa. Viiveisiin vaikuttavat monet tekijät, joten myös ratkaisuiden hakeminen on tehokkainta yhteistyössä. Ohjelmistokehittäjän ja sovellusylläpitäjän kannattaa keskustella verkko-operaattorin kanssa. Näin saadaan yhdessä luotua paras palvelukokemus loppukäyttäjille!
Lue lisää: Privaattiverkko lyhentää bitin matkaa – ja siksi se mahdollistaa erittäin pienen viiveen