Blog

Kannattaako siirtyä serverless-malliin? Sudenkuopat ja mahdollisuudet

SEP 26, 2019

Prosessi muistuttaa lapsen leikkiä muotolajittelijalla, vaikka joskus onkin muokattava joko muotoa tai sille sopivaa aukkoa. Siksi DevOps-ammattilaisena on tärkeää arvioida jokaista teknologiaa itse. Pidemmittä puheitta, tässä ajatukseni serverlessistä.

Niklas Tanskanen

A problem-solving superhero who is consulting our customers in the DevOps arena, both when it comes to tools and culture.

Mitä serverless tarkoittaa?

Serverless-laskenta (eli Function as a Service, jota kutsutaan joskus myös Lambda Functionsiksi) on ollut olemassa jo jonkin aikaa. Jos et vielä tiennyt, tässä yllätys: serverless-teknologiat toimivatkin palvelimella! Serverless tarkoittaa kuitenkin sitä, että palvelin on abstrahoitu pois – se tarjotaan sinulle palveluna. Samalla tavalla kuin virtuaalikone abstrahoi laitteiston.

Kypsimmät serverless-teknologiat löytyvät julkipilvestä. Google App Engine, Amazon Lambda ja Azure Functions ovat erittäin tehokkaita työkaluja. Avoimen lähdekoodin ratkaisuista suosituin on Apache OpenWhisk.

Miten serverless-arkkitehtuuri toimii?

Serverless tarjoaa toimittajalta kehyksen sovelluksen rakentamiseen. Kun rakennat sovelluksen tämän kehyksen avulla, toimittaja huolehtii sen ajamisesta täysin hallinnoidussa ympäristössä – tästä nimi serverless.

Ja tässä syy, miksi sitä kutsutaan serverlessiksi: sovelluksesi ei ole käynnissä, jos kukaan ei käytä sitä! Tämä tuo luonnollisesti kustannussäästöjä ja helpottaa hieman operointia, sillä et enää vastaa koodisi ajamisesta.

Koska pilvi on usein paras vaihtoehto resurssien säästämiseen, sovelluksesi suoritetaan vain tarpeen mukaan. Seuraava kuva havainnollistaa, mitä tapahtuu:

  1. Kehittäjä lataa koodin pilveen

  2. Käyttäjä kutsuu palvelua

  3. Pilvi käynnistää koodista instanssin ja tarjoaa sovelluksen käyttäjälle

  4. Käyttäjä lopettaa sovelluksen käytön

  5. Pilvi sulkee palvelun, kunnes seuraava käyttäjä saapuu

Kannattaako valita serverless? Muutamia huomioitavia asioita

Kuten kaikissa teknologioissa, myös serverlessissä on muutamia haasteita. Ajattelen, että jokainen tekninen ongelma on vain mahdollisuus valepuvussa. Käydään läpi muutamia serverlessin haasteita ja sitä, miten ne voi muuttaa mahdollisuuksiksi.

Fakta 1: Älä tuo monoliittejasi serverless-maailmaan!

Tämä ei yksinkertaisesti toimi eikä siinä ole järkeä. Yksi serverlessin parhaista puolista on, että se pakottaa luomaan Cloud Native -ohjelmistoja. Ajattelutavan on oltava sellainen, että sovellus voidaan sulkea milloin tahansa.

Älä siis yritä tuoda tilallista sovellustasi serverlessiin, ellet ole valmis siirtymään aidosti Cloud Native -maailmaan. Muutos ei ole vain tekninen, vaan se muuttaa myös tapaa, jolla kehität ohjelmistoja.

Fakta 2: Se tulee olemaan hitaampi

Serverlessiä ei ole suunniteltu mahdollisimman suorituskykyiseksi. Kun ensimmäinen pyyntö saapuu, koodi on ladattava muistiin tai virtuaalipalvelimelle, jonka odotetaan käsittelevän pyyntösi ja joka on ensin käynnistettävä. Tämä kaikki voi hidastaa sovellustasi.

Ratkaisu? Älä käytä serverlessiä sovelluksiin, jotka vaativat lyhyitä viiveitä. Jos serverless hidastaa vastausaikojasi, serverless-teknologiat eivät todennäköisesti ole oikea ratkaisu sinulle.

Fakta 3: Monitorointi ja lokitus ovat haasteita

Serverlessin luonteeseen kuuluu, että sovellusinstanssit ovat lyhytikäisiä. Mitä jos sovelluksessasi ilmenee ongelma? Olet ehkä lisännyt asianmukaisen lokituksen, mutta koska instanssit ovat niin lyhytikäisiä, lokit ovat jo kadonneet, kun käyttäjäsi ilmoittaa ongelmasta.

Tämä tarjoaa jälleen uuden mahdollisuuden: panosta Cloud Native -lokitukseen. Lähetä lokit välittömästi alustalle, kuten AWS CloudWatchiin tai Google Stackdriveriin, jotka on suunniteltu juuri tähän tarkoitukseen.

Fakta 4: Serverless tuo mukanaan toimittajalukon

Toimittajalukko on yleensä asia, joka on otettava huomioon, kun rakennat liiketoimintaasi pilvialustan varaan. Mitä enemmän investoit julkipilvitoimittajan tarjoamiin serverless-teknologioihin, sitä vahvemman toimittajalukon rakennat itsellesi.

Toimittajalukkoon ei ole yleispätevää ratkaisua. Tavallaan olet aina jonkinlaisessa lukossa. Jo sovellukselle valittu framework tai käyttöjärjestelmä luo tietynlaisen lukon.

Tärkeintä on tiedostaa lukko ja lieventää sitä, jos pidät sitä ongelmana. Serverless-ympäristössä yksi vaihtoehto on hyödyntää pilviriippumattomia ratkaisuja, kuten Apache OpenWhiskiä.

Fakta #5: Tietoturvasta on edelleen huolehdittava

Tietoturva ei ole musta laatikko, jonka voi vain ostaa valmiina hyllystä (kunpa olisikin!). Tämä pätee myös serverless-ratkaisuihin.

Jos serverless-sovelluksesi hyödyntää pilvipalvelujen ominaisuuksia, kuten blob-tallennusta, määritä huolellisesti sovellusten käyttöoikeudet resursseihisi. Varmista myös, että ymmärrät, miten serverless-käyttöönotot tehdään, jotta huono koodi todella korvautuu korjauksillasi.

Älä myöskään luota tietoturva-asioissa pelkästään pilvipalveluntarjoajaan. Mielestäni kenenkään ei pitäisi hoitaa sitä puolestasi.

Serverless: yksi tapa lisää tuottaa arvoa asiakkaille

Kaiken kaikkiaan serverless on yksi työkalu muiden joukossa. Sitä ei ole tarkoitettu korvaamaan mitään.

Se ei korvaa kontteja. Se ei korvaa mikropalveluita. Se on vain yksi tapa tarjota asiakkaillesi erinomainen käyttökokemus.

Nykyisen pilvi-infrastruktuurin täydentäminen älykkäillä serverless-teknologioilla voi olla toimiva ratkaisu, kun rakennat palveluita asiakkaillesi. Jos taas rakennat greenfield-projektia, tarkastele kokonaisuutta: sopiiko serverless visioonne?

  • Software development
  • DevOps

Subscribe to our newsletter