Skip to content

Serverless-tekniikka

Kuvauksen kirjoitti: N4915, Björklund Jake

Lyhyt kuvaus käsitteestä tai aiheesta

Serverless-tekniikka antaa ensin mielikuvan palvelimettomuudesta, mutta käytännössä näin ei tietty ole, vaan serverless-tekniikassa on kyse erikoistuneesta pilvipalvelusta, jossa käyttäjän ei tarvitse huolehtia palvelimen ylläpidosta lainkaan. Markkinoiden ensimmäinen serverless-tekniikka oli Amazonin AWS Lambda, jossa asiakas lataa palvelimelle omat funktionsa ja häntä laskutetaan sen perusteella montako kertaa hänen funktioitaan on kutsuttu ja kauanko niitä on ajettu 100 millisekunnin tarkkuudella. Täten asiakkaan täytyy huolehtia vain oman koodinsa toiminnallisuudesta ja palvelinympäristö itsessään on abstraktoitu häneltä, mistä serverless-tekniikka saa nimensä. Nykyään serverless-tekniikoita tarjoavat useat tahot, joista Amazonin lisäksi merkittävimmät ovat Microsoftin Azure Functions ja Googlen Cloud Functions. Serverless-tekniikka perustui alunperin pelkkien funktioiden ajamiseen ja tämä on tänäpäivänäkin yleisin serverless-tekniikan käyttötarkoitus, mutta vastikään serverless-tekniikan alle on julkaistu myös kattavampia backend-ratkaisuja.

Serverless-tekniikan edut

Palvelinympäristön abstraktointi on yksi merkittävimpiä etuja serverless-tekniikassa. Tämä pätee sekä rautaan että softaan, eli käyttäjän ei tarvitse huolehtia esimerkiksi palvelimen resurssien riittävyydestä tai käyttöjärjestelmän päivityksistä, sekä perinteiseen kontitukseen verrattuna serverless-tekniikassa myös ajoympäristö abstraktoidaan pois. Asiakkaan ylläpidettäväksi jää tällöin vain heidän koodinsa, jota ajetaan tapahtumalähtöisesti, eli reaktiona määrättyyn tapahtumaan kuten internet-osoitekutsuun. Täten koodin ylläpito on helppoa ja uusia ominaisuuksia voidaan ottaa käyttöön välittömästi. Ajettavien funktioiden lukumäärää voidaan myös skaalata dynaamisesti, joten serverless-tekniikalla pystytään käytännössä täysin torjumaan pullonkaulan syntyminen, eli esimerkiksi Black Fridayn kaltainen normaalista radikaalisti poikkeava rasitustila ei tuki palvelua. Tämän vastakohtana pitkien inaktiivisten aikajaksojen aikana asiakas ei maksa turhasta, koska laskutus perustuu käyttöön. Serverless-tekniikka on siis ideaalinen ratkaisu tilanteisiin, jossa tarvitaan välittömästi ajettavia funktioista koostuvia palveluita.

Serverless-tekniikan ongelmat

Funktioista koostuvat palvelut toimivat funktionaalisen ohjelmoinnin pelisäännöillä, eli perinteisesti serverless-tekniikan palvelut ovat olleet täysin tilattomia, vaikka uusissa serverless-ratkaisuissa onkin tuotu tilanhallintaa mukaan. Tilattomuudella viitataan ohjelman datan muuttumattomuuteen sen ajon aikana, eli funktioille ainoastaan syötetään data ja ne palauttavat käsitellyn datan. Serverless-tekniikan funktiot ovat myös tarkoitettu tarjoamaan kertaluonteisia palveluita ja esimerkiksi AWS Lambda asettaa funktion maksimisuoritusajaksi 5 minuuttia. Funktioiden suhteen on huomioitava myös niin sanottu "cold start" ilmiö, eli kun funktiota ei ole kutsuttu hetkeen, niin sen instanssi suljetaan ja uuden instanssin luomisessa voi kestää kymmeniä millisekunteja. Tämä voi luoda käyttäjälle näkyvän viiveen erityisesti ketjutettaessa funktioita, mutta tämä ilmiö pystytään myös torjumaan ennakoimalla funktiokutsuja liikenteen perusteella ja käynnistämällä etukäteen sopiva määrä funktioiden instansseja. Pelkästä koodista koostuvassa ratkaisussa voi olla vaikea huomioida kaikkia turvallisuusnäkökohtia, sekä palvelun testaus ja debuggaus voi osoittautua hyvin haastavaksi käytännössä. Palveluntarjoasta riippuen serverless-tekniikalla toteutetusta palvelusta voi tulla jossain määrin alustariippuvainen. Laskutuksen perustuessa käyttöön joissain ohjelmistoissa perinteisemmät palvelinratkaisut voivat tulla edullisemmiksi.

Muuta aiheeseen liittyvää

Linkit ulkopuolisiin lähteisiin

Avainsanat harjoitustehtävän repositoriossa