Serverivaba andmetöötlus

**Serverivaba andmetöötlus** (inglise keeles *serverless computing*) on pilveandmetöötluse (inglise keeles *cloud computing*) laiendusmudel, milles pilveteenuse pakkuja toimib serverina, jaotades dünaamiliselt masina ressursse. Serverivaba andmetöötluse puhul määratakse hind sõltuvalt vajalikest vahenditest, mida rakendus kasutab töö tegemiseks, tarbimisele erinevalt pilveandmetöötlusest, kus hinnakujundus põhineb eelnevalt ostetud ruumil.    

Serverivaba andmetöötluse nimetus tuleneb sellest, et serveri haldamise ja võimsuse planeerimise otsused on täielikult peidetud arendaja või operaatori eest. Serverivaba koodi saab kasutada koos traditsioonilistes stiilides kasutatavate koodidega, näiteks mikroteenustega. Enamik, kuid mitte kõik, serveriversioonide pakkujaid esitavad arvutamisperioodi, mis on tuntud ka kui FaaS-platvormid (inglise keeles *[[:en:Function_as_a_service|Function as a Service]]*), mis täidavad rakenduste loogikat, kuid ei salvesta andmeid.    

## Ajalugu

Esimene platvorm, mis pakkus serverivaba andmetöötlust, oli 2006. aastal Zimki, mis aga ei leidnud piisavalt tunnustust ega saanud äriliselt edukaks. Google avaldas 2008. aastal Google App Engine, mis tutvustas mõõdetud arveldamist rakendustele, mis kasutasid kohandatud Pythoni raamistikku. Microsoft andis 2010. aastal välja Microsoft Azure, mis pakub pilve- ja serverivaba andmetöötluse platvormi. 2014. aastal Amazoni loodud AWS Lambda oli esimene pilveandmetöötluse müüja, pakkudes lisaks sellele ka abstraktset serverivaba andmetöötlust. IBM on avaldas 2014. aastal OpenWhiski, mis on avatud lähtekoodiga serverivaba andmetöötluse platvorm. OpenWhisk toetab mitmeid programmeerimiskeeli, nagu Node.js, ja pakub veel paljusid teisi programmeerimiskeeli, kasutades selleks Dockerit. Google Cloud Platform pakub Google Cloud funktsioone alates aastast 2016. Oracle tutvustas 2017. aastal Fn Projekti – avatud lähtekoodiga serveriteta andmetöötluse raamistik, mis on pakutud Oracle Cloud Platformile ja on saadaval GitHubis vajadusel kasutamiseks teistel platvormidel.   

## Eelised
Serverivaba andmetöötlus võib osutuda kulutõhusamaks kui kindlaksmääratud arvu serverite rentimine või ostmine. Kaob vajadus väljaminekuteks operatsioonisüsteemide paigaldamise, hoolduse ja muude üldkulutuste peale. Seda võib kirjeldada ka kui ümberjaotuse põhimõttel toimivat (inglise keeles *pay-as-you-go)* digitaalarvutamist, kus tasu võetakse ainult sõltuvalt koodi käivitamiseks ja käitamiseks tuleneva aja-ruumi kulu eest (maksad siis, kui tarbid).

Lisaks väiksematele kuludele tähendab serverivaba andmetöötluse arhitektuur, et arendaja ja operaatorid ei pea veetma aega süsteemide seadmistamiseks ja häälestamiseks. Pilveteenuse pakkuja vastutab nõudlusele vastava võimsuse suurenemise võimaldamise eest. Lisaks sellele suudavad väikesed arendusrühmad  käivitada koodi sõltumata infrastruktuurirühmadest ja tugitehnoloogiatest. 

## Puudused
Vähese kasutusega serverivaba kood võib kannatada suurema vastuse hilinemisega (inglise keeles *response latency*) kui kood, mis töötab järjest spetsiaalses serveris, virtuaalses masinas või konteineris. Seda seetõttu, et erinevalt autoskaleerimisest (inglise keeles *autoscaling*) vähendab serverivaba andmetöötluse teenusepakkuja tavaliselt vähekasutatud koodi valmidust käivituda serveris või lülitab selle täielikult välja. See tähendab, et kui käivitusaeg (näiteks Java Runtime) on märkimisväärselt pikk, luuakse see täiendava latentsusajaga. 

Tõhususe või ülemäärase ressursikasutuse probleemide diagnoosimine serverivaba koodi puhul võib olla keerulisem kui tavapärase serveri koodi korral. Kõiki funktsioone saab küll ajastada, kuid puudub võimalus süvitsi probleemi siseneda. Selleks saab kasutada silurit või APM-tööriistu.

Serverivaba koodi peetakse mõnikord ekslikult turvalisemaks kui traditsioonilisi arhitektuure. Kui pilveteenuse pakkuja hoolitseb OS-i haavatavuste eest, siis kogu rünnaku pind on oluliselt suurem, kuna võrreldes tavapäraste arhitektuuridega on palju rohkem komponente, millest igaüks on serverivaba rakenduse sisendpunkt. Turvaliste lahenduste kasutamine muutub ebaoluliseks, kuna kliendid ei saa lõpp-punktil (inglise keeles *endpoint*) või võrgu tasemel, nagu IDS/IPS, midagi kontrollida ega nendele installeerida.

## Vaata ka

* Pilveandmetöötlus

## Viited