26.01.2017Blogi

Serverless – mitä se tarkoittaa ja miksi siitä pitäisi kiinnostua?

Serverless-arkkitehtuuri on jo jonkin aikaa ollut paljon hypetetty aihe IT-alalla. Usein kumminkin tuntuu, että eri osapuolet puhuvat eri asioista siitä puhuessaan, eikä serverless-toteutusten idea ja hyödyt oikein konkretisoidu. Puhutaan taloudellisista säästöistä ja skaalautuvuudesta, mutta kuinka ne käytännössä toteutuvat?

Serverless -termi saattaa hämätä luulemaan, että palvelimilla ei ole osaa eikä arpaa toteutuksessa. Tosiasiassa serverless-teknologiaan ei liity sen kummempaa taikuutta, vaan useimmiten serverless tarkoittaa käytön perustella maksettua palvelinkapasiteettia pilvipalvelussa.

Mitä on serverless?

Serverless-palveluja ovat muun muassa Amazon lambda, Azure functions ja Google Cloud Functions. Nämä ovat koodia ja funktioita, jotka eivät sijaitse millään tietyllä palvelimella tai levynkulmalla, vaan funktiot saavat ”valita” mitä servereitä käyttävät, niille määritetyissä rajoissa. Palveluntarjoaja hoitaa liikenteen jakamisen vapaille palvelimille, joten kehittäjän ei tästä tarvitse murehtia.

Mutta mitä hyötyä tällaisen teknologian käytöstä yritykselle voi olla? Miettiessäsi serverless-ratkaisujen liiketoimintahyötyjä, muista ainakin nämä pointit:

  1. Säästät kiinteissä kuluissa, sillä maksat vain siitä mitä käytät (esim. API-kutsuista, tietokantatauluista, tiedostojen ja kuvien säilyttämisestä)
  2. Kehityksen aloittaminen on nopeaa – ei palvelimien konfigurointia ja ylläpitoa
  3. Korostunut ennakoinnin tarve pienenee skaalautuvuuden ansiosta

1. Hinnoittelu – maksat siitä mitä käytät 

Jos teet IT-hankintoja tai työskentelet taloushallinnossa, sinua kiinnostaa varmaankin mitä mikäkin maksaa. Serverless-ratkaisujen avulla kuluissa on mahdollista säästää paljonkin verrattuna ns. perinteiseen ohjelmistokehitykseen, kun kiinteästä palvelintilasta ei tarvitse maksaa. Tämä toki on yleisesti ottaenkin pilvipalveluiden etu, vaikka ei puhuttaisikaan varsinaisesta serverless-kehityksestä. Serverless vie tämän ajatuksen kuitenkin vielä pidemmälle, ja esimerkiksi AWS:n Lambda-funktioista maksat sen perusteella, kuinka monta kertaa funktio on ajettu ja kuinka pitkän ajan.

Jos yritykselläsi on vaikkapa asiointilomake netissä, yksi funktioajo voi millisekunneissa hoitaa lomakkeen vastaanoton ja tallennuksen, ja lähettää asiakkaalle ilmoituksen lomakkeen vastaanottamisesta.

Esimerkiksi AWS:n Lambda-ohjelman hinta (ilman muiden palveluiden, kuten tietokannan kuluja) voi olla seuraavanlainen: Sovelluksessa on funktio, jolla on käytössä 512MB muistia, ja jolla menee koodin suorittamisessa sekunti. Jos tätä funktiota kutsutaan 2 miljoonaa kertaa kuukauden aikana, kulut tulisivat olemaan vajaa 10 euroa kuukaudessa.*

Toisaalta jotkut palvelut voivat tulla yllättävän kalliiksi, mikäli palvelua käytetään epäoptimaaliseen tarkoitukseen.

Esimerkiksi DynamoDB:ssä (Amazonin palveluna tarjoama NoSQL-tietokanta) maksetaan tauluun kirjoittamisesta ja lukemisesta. DynamoDB:tä käyttäessä joutuukin hieman miettimään luku- ja kirjoituskapasiteetin skaalaamista, ja joihinkin tarkoituksiin esimerkiksi perinteisempi relaatiotietokanta voi olla sopivampi ratkaisu.

2. Nopeasti jotain näkyvää

Pilvipalveluissa kehitys on nopeaa ja muutoksia tulee jatkuvasti. Tuettujen ohjelmointikielien valikoima kasvaa, palvelujen ominaisuuksia parannellaan ja bugeja korjataan. Myös uusia palveluita tulee kovaa kyytiä. Esimerkiksi Amazon Web Services –konsolissa palveluita on PALJON, ja tämä voi hämmentää ensinäkemältä. Alkuun pääsee kumminkin helposti, ja esimerkiksi AWS:ssä eri toimittajat voivat tehdä yrityksen tileillä kehitystyötä yhtäaikaisesti. Jossain vaiheessa on hyvä miettiä tarkemmin tilien hallinnointia ja pilviarkkitehtuuria, mutta kokeilemaan pääsee hyvinkin nopeasti.

Serverless-kehityksen aloittaminen on nopeaa ja helppoa ennen kaikkea siksi, että kehittäjien ei tarvitse miettiä niin paljoa palvelimia ja niiden hallintaa.

Tämä yksinkertaistaa kehitystä monessa mielessä. Kuitenkin, mitä enemmän funktioita ja muita palveluita sovellukseen liittyy, sitä monimutkaisemmaksi sovellus kasvaa. Tällaisten kokonaisuuksien hallintaan on olemassa koko ajan kehittyviä työkaluja, kuten Serverless Framework tai AWS:n CloudFormation.

Mutta kuten uudessa teknologiassa yleensä, kehitys on niin nopeaa, että kaikki palvelut eivät ole valmiita – sekä bugeja että rajoituksia löytyy. On tosin todennäköistä, että joku muukin on törmännyt havaitsemaasi ongelmaan ja apu löytyy yllättävänkin helposti Googlesta. Tämä on seurausta siitä, että pilvipalvelut ovat kustannustehokkuutensa ansiosta kaikkien ulottuvilla, niin yksittäisten kehittäjien harrasteprojekteille kuin aloitteleville ja suurillekin yrityksille.

3. Skaalaudu yllättävienkin kysyntäpiikkien edessä

Skaalautuvuus serverless-ratkaisuista puhuttaessa tarkoittaa sitä, että sinun ei tarvitse miettiä palvelintilan riittävyyttä tai useimmiten edes logiikkaa automaattiselle skaalaukselle. Voit myös lähettää sähköposti- tai tekstiviestejä asiakkaillesi palveluna, ilman erillisen sähköpostipalvelimen pystyttämistä. Lisäksi serverless-ratkaisut skaalautuvat fyysisesti automaattisesti eri alueille, minkä vuoksi ratkaisujen toiminta ei häiriinny esimerkiksi jotain konesalia kohtaavan häiriön seurauksena.

Skaalautuvuus on olennaista myös asiakaskokemuksen kannalta.

Eräs kokemani esimerkki huonosta skaalautuvuudesta ja ennakoinnin vaikeudesta:

Startup-yritys myy muutamia eri tuotteita, jotka on otettu hyvin vastaan markkinassa. Kysyntää on enemmän kuin tarjontaa, koska tuotantokapasiteettia ei ole mahdollista kasvattaa kysynnän mukana. Yritys mainostaa uuden tuote-erän saataville tulosta etukäteen. Ilmoitetulla ajanhetkellä kuluttajat ryntäävät nettisivuille – sivut kaatuvat. Asiakkaiden ruuduilla vilkkuu ”Palvelumme on ruuhkautunut, yritä hetken kuluttua uudelleen”. Seuraavaa tuote-erää varten palvelinkapasiteettia lisätään, mutta sekään ei riitä. Ollaan taas samassa tilanteessa ja sivut ruuhkautuvat. Jotkut asiakkaista onnistuvat saamaan tuotteensa, toiset jäävät jälleen kerran pettyneinä ilman tuotetta. Asiakkaiden ärsyyntymistä lisää se, että he olivat ”ajoissa paikalla”, mutta eivät saaneet mahdollisuutta teknisten ongelmien vuoksi.

Hyvin suunniteltu serverless-arkkitehtuuri auttaa esimerkiksi tällaisten tilanteiden estämisessä ja ennakoinnissa.

Onko se turvallista?

Serverless saattaa kuulostaa tietoturvan kannalta epäilyttävältä. Jos en tiedä missä päin koodini pyörii, mistä tiedän, ettei siihen pääse kukaan käsiksi?

Tosiasiassa esimerkiksi AWS:ssä Lambdat voidaan määrittää toimimaan virtuaalisessa sisäverkossa. Tämä onnistuu VPC:n (Virtual Private Cloud) avulla, joka on käytännössä verkkoavaruus, jonka sisällä voit määrittää omat palomuurisi. Serverless-ratkaisut voidaan yhdistää myös yrityksen on-premises -järjestelmiin (eli vaikkapa yrityksen sisäverkossa oleviin tietokantoihin) esimerkiksi VPN-yhteyden avulla. Tämä tuo toki omat haasteensa.

Serverless-palvelut saadaan kyllä keskustelemaan perinteisempien järjestelmien kanssa, mutta tällöin täytyy ottaa huomioon joitain serverless-ratkaisujen ominaispiirteitä, kuten että Lambda-funktion maksimi suoritusaika on 5 minuuttia. Siksi täytyy miettiä mitä tehdään, mikäli on-premises -järjestelmät eivät esimerkiksi vastaa tarpeeksi nopeasti.

Serverless-kehitys ei ole niin mystistä miltä se saattaa kuulostaa, ja kenties tulevaisuudessa se on kokeilujen sijasta valtavirtaa.

Ennakkoluulottomia edelläkävijöitä löytyykin enenevissä määrin ja serverless-ratkaisuja toteutetaan koko ajan enemmän.

* Lambda-funktion suoritushinta on $0,00001667/GBs. 1 (sekunti/funktion suoritus) * 2 000 000 (funktiokutsua) * 512MB/1024 = 1 000 000 GB-s, josta 400 000 GB-s/kk ilmaista (sisältyy AWS free-tieriin. Näin ollen lopullinen hinta olisi (1 000 000 GB-s – 400 000 GB-s) * $0,00001667 » $10 -> 9,4 €

Kiinnostuitko? Lue lisää ajankohtaisista blogeistamme ja tutustu ratkaisuihimme verkkosivuillamme. Kurkkaa myös avoimet työpaikkamme. Etsimme jatkuvasti uusia solitalaisia joukkoomme. 

Rita työskentelee Solitalla analytiikan parissa. Hän suhtautuu intohimoisesti data-analytiikkaan ja pilvipalvelujen tuomiin mahdollisuuksiin. Ritasta erityisen koukuttavaa on päästä rakentamaan ihmisten elämää helpottavia palveluita, sekä kaivaa datasta uusia näkökulmia koneoppimisen ja tilastollisen mallintamisen avulla. Työn ohella häntä kiinnostaa musiikki ja liikunta niiden kaikissa eri muodoissa. Rita laulaa mm. kollegoista muodostetussa Big Dada-bändissä. Myös lukeminen maistuu, sekä tietokirjallisuus että fiktio.