Palveluja ilman palvelimia

 

Menneitä ovat ajat, jolloin yksi rikkoutunut tuuletin, saattoi pysäyttää koko yrityksen toiminnan. 2000-luvun alussa yleistynyt palvelimien virtualisointi vie fyysiset palvelimet pilveen, mutta se ei pelkästään lisännyt vikasietoisuutta, vaan mahdollisti myös laskentaresurssien tehokkaamman käytön. Fyysiset palvelimet jouduttiin monesti mitoittamaan kuormapiikkien mukaan, sillä uuden palvelimen hankkiminen oli päivien, ellei viikkojen työn takana.

 

Virtualisointi mahdollisti palvelimien hankkimisen minuuteissa, jopa täysin automatisoidusti, jolloin niitä voitiin lisätä ja vähentää kuormituksen mukaan. Tämä ei pelkästään lisännyt palvelimien kuormitusastetta vaan toi myös huomattavia kustannussäästöjä, eikä DevOps-kehittäjänkään enää tarvinnut huolehtia fyysisten palvelimien fyysisistä ongelmista.

 

Docker iski kultasuoneen vuonna 2013. Helppokäyttöinen työkalu paketoida palvelinohjelmistoja toisistaan eristettyihin kontteihin (container) tuntui ratkaisevan sovelluskehittäjien kaikki ongelmat. Kehittäjät eivät olleet ainoat Dockerista innostuneet vaan myös Amazonin, Microsoftin ja Googlen kaltaiset jätit julkaisivat nopealla tahdilla omat Docker-kontteja tukevat alustansa. Kontainerisaatio jatkoi siitä mihin virtualisointi jäi ja pilkkoi yhden virtuaalipalvelimen ohjelmistot omiksi konteikseen. Hallittavan yksikön koko pieneni palvelimen kokoluokasta prosessitasolle ja yksittäisen kontin resurssien allokointi voitiin tehdä megatavun ja CPU sekunnin tarkkuudella. Tämä yhdistettynä automatisoituihin hallintatyökaluihin, kuten Kubernetes, saatiin fyysisen palvelimen kuormitusasetetta nostettua entisestään. Kehittäjän huolehdittavaksi jää enää konttien toimivuus palveluntarjoajan huolehtiessa lopusta. 

Nimensä mukaan serverless poistaa palvelimen käsitteen kehittäjältä, toki taustalla on edelleen palvelimia, mutta ne ovat palveluntarjoajan huoli.

Tässä vaiheessa trendi alkaa jo hahmottua. Hallittavan yksikön koko on pienentynyt moniprosessoripalvelimesta yhden prosessin tasolle ja viime vuosina tuulta purjeisiinsa saanut serverless-arkkitehtuuri haluaa pilkkoa sitä entisestään. Nimensä mukaan serverless poistaa palvelimen käsitteen kehittäjältä, toki taustalla on edelleen palvelimia, mutta ne ovat palveluntarjoajan huoli. Nyt pilkottavaksi joutuu itse ohjelmisto, joka pilkotaan toisistaan irrallisiksi funktioiksi ja näitä funktioita suoritetaan vain pyydettäessä. Suorituksen käynnistää aina jokin triggeri, kuten HTTP-kutsu tai työjonoon ilmaantunut tehtävä. Jos triggereitä ei tule, mitään ei myöskään suoriteta, eikä laskuteta. Itse funktiot suoritetaan palveluntarjoajan suurissa klustereissa, jolloin skaalautuvuuden rajat eivät kovin nopeasti tule vastaan suurillakaan kuormapiikeillä. Erityisesti web-sovellusten purskeiset kuormat soveltuvat serverless-arkkitehtuuriin, jossa maksetaan vain käytetystä suoritusajasta, eikä palvelinkustannuksia tule siltä ajalta, kun käyttäjä miettii seuraavaa liikettään. Palveluntarjoajan saamalla mittakaavaetulla saadaan yhä parempi kuormitusaste, sillä sen sijaan että palvelinklusteria skaalattaisiin yhden asiakkaan kuormitustarpeiden mukaan voidaan, nyt käsitellä satojen asiakkaiden kuormaa yhdellä klusterilla. 

 

Dockerin menestyksen takana oli yksi yhtenäinen toteutus, joka oli helppo ottaa käyttöön alustalla kuin alustalla. Servelessiä vaivaa vielä yhtenäisyyden puute, jokainen palveluntarjoaja toteuttaa alustan omalla tavallaan, omilla rajoituksillaan. Nähtäväksi jää löytyykö palveluntarjoajilta yhteinen sävel vai korvaako sen joku toinen, vielä hienompi buzzword. 

 

Jari Ylimäinen

DevOps Specialist, Forenom

 
 
thumbnail_bravedo_banneri_orange.jpg