Blogi

Serverless – Ohjelmistot ilman palvelimia

Mikä ihmeen serverless? Miten ohjelmistot voivat muka toimia ilman palvelimia? Tässä jutussa avaamme kasvavaa serverless-trendiä oman toimintamme näkökulmasta. Kerromme, mitä hyötyjä ja mahdollisia rajoituksia serverittömässä arkkitehtuurissa on, ja kuinka hyödynnämme sitä projekteissamme Karu Softwarella.

“Serverless” on hieman harhaanjohtava termi. “Palvelittomalla” ohjelmistolla on kyllä palvelimet olemassa, mutta niihin ei ole suoraa pääsyä. Sen sijaan tietty palveluntarjoaja hoitaa kaikki palvelimiin liittyvät asiat asiakkaiden puolesta. Tämä tarkoittaa sitä, että palveluntarjoaja huolehtii muun muassa palvelinten ylläpidosta, skaalaamisesta, virhetilanteista ja asetuksista. Serverless-arkkitehtuuri näin ollen helpottaa sovellusten kehittämistä ja ylläpitoa, kun yksi osa projektista saadaan käytännössä kokonaan ulkoistettua.

Serverless - Ohjelmistot ilman palvelimia

Käytämme tässä blogissa esimerkkinä Amazon Web Servicen Lambda-palvelua. Se on Amazonin oma serverless-palvelu, jota käytämme laajasti projekteissamme. Kun ohjelmistolle on otettu käyttöön Lambda-palvelu, ei tarvitse kuin kertoa Amazonille, että ohjelmistoa on tarkoitus pyörittää serverlessinä. Tämän jälkeen Amazon hoitaa kaikki tarvittavat palvelinasiat.

Miten serverless toimii?

Käytännössä serveritöntä tekniikkaa voi verrata kauppaan, jossa kassat ovat kuin palvelimia, ja niillä asioivat asiakkaat kuin ohjelmiston käyttäjiä.

Perinteinen palvelin vastaa tilannetta, jossa jokaisella kassalla on aina henkilökuntaa – silloinkin, kun asiakkaita ei ole. Asiakkaat puolestaan muodostavat automaattisesti jonoja kassoille. Mikäli asiakkaita on paljon, myös jonot pitenevät. Samalla tapaa jos ohjelmiston käyttäjiä on liikaa suhteessa palvelinten määrään, ohjelmisto hidastuu ja kaikki käyttäjät eivät välttämättä edes pääse lataamaan sitä. Toisaalta jos kassoja on aina sama määrä ja niissä on jatkuvasti henkilökuntaa, jokaisesta kassasta aiheutuu koko ajan kuluja. Näin ollen uusien kassojen tai palvelinten avaamiseen ei välttämättä ole varaa asiakas- tai käyttäjämäärien kasvaessa.

Serverless-arkkitehtuuri on kuin kaupan pitämistä niin, että kassa avataan vasta sitten, kun ensimmäinen asiakas marssii sisään. Asiakkaan poistuttua kassaa pidetään auki vartin verran, minkä jälkeen kassa suljetaan, kunnes uusi asiakas tulee paikalle. Mikäli asiakkaita on paljon ja jonoja alkaa syntyä, voidaan avata uusia kassoja. Jonojen pienetessä kassat jälleen sulkeutuvat. Toisin sanoen näin varmistetaan, että palvelimia on aina sopivasti käyttäjiin nähden, sillä ohjelmisto skaalautuu eli mukautuu käyttäjämäärän mukaan. Tällöin ei myöskään synny kustannuksia, jos käyttäjiä ei ole.

Serverlessin hyödyt

Serverless-arkkitehtuurin hyödyt ovat suuret, kunhan siihen sisältyvät rajoitukset huomioidaan ohjelmiston toteutusvaiheessa. Projektiemme aikana olemme todenneet ainakin seuraavat hyödyt:

  1. Pienentyneet kustannukset, kun palvelimet eivät ole turhaan päällä

Koska Amazon laskuttaa palveluista kulutuksen mukaan, ei serverless-mallissa palvelimista synny kustannuksia, jos palvelimelle ei ole tarvetta.

  1. Palveluntarjoaja huolehtii palvelinten ylläpidosta

Amazon hoitaa esimerkiksi palvelinten päivitykset kokonaan meidän puolestamme. Tämä tarkoittaa samalla sitä, että tietoturva on aina ajan tasalla.

  1. Skaalautuvuus

Ohjelmisto mukautuu automaattisesti käyttäjämäärän mukaan, joten ruuhka ei hidasta sitä.

  1. Palvelinten helppo pystyttäminen ja nopeat päivitykset

Ohjelmistokehityksen näkökulmasta palvelimet saadaan helposti pystytettyä, ja niihin voidaan helposti tehdä päivityksiä. Lambdan päivittäminen kestää yleensä vain joitakin minuutteja, joten ohjelmistoon ajettavat päivitykset menevät läpi nopeasti ja katkoksia harvoin syntyy. Käytämme Lambdan päivittämiseen Serverless Frameworkia

Serverlessin rajoitukset

Palvelittomaan arkkitehtuuriin liittyy myös joitakin rajoituksia, jotka tulee ottaa huomioon projektia koodatessa. Esimerkiksi vanhempiin ohjelmistoihin täytyy niiden ominaisuuksista riippuen tehdä usein muutoksia, jotta ne voi siirtää serverittömään maailmaan.

Lambda-palveluun ladattavien tiedostojen koko on rajattu 6 megatavuun. Itse ohjelmiston koko ei saa olla yli 250 megatavua, eikä sitä ylläpitävälle palvelimelle voi tallentaa tiedostoja, koska ne katoaisivat palvelimen sammuessa. 

On myös hyvä tietää, että serverittömälle ohjelmistolle joudutaan aina tekemään niin kutsuttu “cold boot” eli kylmäkäynnistys, jos sillä ei ole ollut käyttäjiä vähään aikaan. Tämä johtuu siitä, ettei palvelimia ole tauosta johtuen välttämättä lainkaan päällä. Käyttäjän näkökulmasta tämä tarkoittaa hieman pidempää ensimmäistä latauskertaa, mutta todellisuudessa viive on kuitenkin vain joitakin sekunteja. Kun ohjelmistolla on taas käyttäjiä, se toimii normaalisti ja nopeasti.

Näihin kaikkiin haittoihin on olemassa ratkaisunsa, mutta niistä on kuitenkin hyvä olla tietoinen, kun ohjelmistoa aletaan kehittää tai päivittää serverless-arkkitehtuuriin.

Serverlessin käyttö Karulla

Serveritöntä tekniikkaa käytetään Karun projekteissa paljon, ja kokemukset siitä ovat olleet hyvin positiivisia. Aiomme myös jatkossa hyödyntää palvelittomuuden etuja, ja uskomme, että se tekee töistämme käyttäjille ja asiakkaille parempia.

Täältä voit lukea lisää projekteista, joissa olemme käyttäneet serverlessiä.

Me

Karu Software on luova järjestelmätoimittaja, jonka metodilla onnistuu laajakin hanke. Kehitämme verkkopalveluita, mobiilisovelluksia ja integraatioita ohjelmistojen välillle.

Kysy lisää! info@karusoftware.fi tai soita +358 50 355 5150.

    Ota yhteyttä