Hva er serverless?
Serverless er en driftsmodell der skyleverandøren tar seg av serverne for deg, og du betaler per kjøring, ikke for tiden serverne står på. Serverne finnes, men de er ikke ditt ansvar. Null trafikk koster nesten null, og trafikktopper tas unna automatisk. Det passer for hendelsesdrevne jobber og API-er med ujevn last, med cold starts som en bakside.
Serverless dukker opp overalt i samtaler om moderne drift, men ordet er forvirrende: Det høres ut som om serverne har forsvunnet. Det har de ikke. Her går vi gjennom hva serverless faktisk betyr, hvordan økonomien fungerer og når det er riktig valg.
Servere finnes, men ikke som ditt problem
Serverless er en driftsmodell der skyleverandøren tar seg av serverne for deg. Koden din kjører fortsatt på fysiske servere et sted, men du trenger aldri å se dem, installere dem, oppdatere dem eller bekymre deg for om de tåler trafikken.
Navnet skal altså leses som «serverløst for deg», ikke «uten servere». Det som skiller serverless fra tradisjonell drift, er hvem som har ansvaret. Har du en egen server, må du (eller leverandøren din) holde den i gang, sikker og riktig dimensjonert. Med serverless setter du bort alt det og tenker bare på koden din. Leverandøren sørger for at den kjøres når den kalles, og skalerer automatisk.
Det fritar teamet for en hel kategori oppgaver. Men den store forskjellen viser seg i økonomien.
Økonomien: null trafikk koster nesten null
Kanskje den mest tiltalende egenskapen ved serverless er måten du betaler på. I stedet for å betale for kapasitet døgnet rundt betaler du per kjøring, altså for det som faktisk skjer.
Konsekvensen er slående. En tjeneste som ingen bruker akkurat nå, koster i praksis nesten ingenting; det finnes ingen server som går på tomgang og koster penger. Og når trafikken plutselig kommer, kanskje i en kraftig topp, skalerer plattformen opp av seg selv og tar unna belastningen. Du betaler for toppen, men slipper både å holde dyr kapasitet i beredskap og å risikere at tjenesten går ned når trykket først kommer.
| Situasjon | Hva det koster |
|---|---|
| Ingen trafikk | Nesten null; ingenting står og koster penger på tomgang |
| Plutselig topp | Skaleres opp automatisk, og du betaler for bruken |
| Jevn, svært høy last | Kan bli dyrere enn en server som går døgnet rundt |
Baksiden ligger i den nederste raden: Ved svært høy og jevn trafikk kan summen av alle de små avgiftene bli større enn kostnaden for kapasitet du holder i gang hele tiden. Serverless er billig for det ujevne, ikke automatisk for alt.
Typiske bruksområder
Serverless kommer best til sin rett der arbeidslasten er hendelsesdrevet eller ujevn, altså der kapasitet ellers mest ville ha stått og ventet.
- Hendelsesdrevne jobber. Kode som skal kjøres når noe skjer, for eksempel når en fil lastes opp og skal behandles, når en betaling kommer inn og skal registreres, eller når en rad legges til og skal sendes videre.
- Planlagte oppgaver. En nattlig jobb som setter sammen rapporter eller rydder i data. Den kjøres én gang i døgnet, og å holde en server i gang døgnet rundt for det ville være sløsing.
- API-er med ujevn last. Et grensesnitt der trafikken varierer kraftig gjennom døgnet eller uken, og der du vil slippe å gjette kapasiteten på forhånd.
I alle disse tilfellene passer modellen naturlig: Du betaler for arbeid som faktisk utføres, og slipper både å overdimensjonere og å underdimensjonere.
En merknad om cold starts
En ærlig gjennomgang må nevne cold starts. Når en serverless-funksjon har stått ubrukt en stund, «sovner» den, og neste kall må vekke den. Det gir en liten ekstra forsinkelse før koden svarer. Etter det er den rask igjen til den får hvile på nytt.
For en bakgrunnsjobb spiller det ingen rolle om oppstarten tar litt ekstra tid. Men for en tjeneste der et menneske venter på svar i sanntid, kan forsinkelsen på det første kallet merkes, og det er verdt å ta med i vurderingen. Det er sjelden et hinder, men det er en egenskap det er lurt å kjenne til.
Samlet sett er serverless et kraftig verktøy for den rette arbeidslasten, med en økonomi som belønner det ujevne. Det erstatter ikke tradisjonelle servere for alt. Det er et supplement som gjør noen ting billigere og enklere, og andre dyrere. Vil dere vite om det passer for akkurat de tjenestene dere har, ser vi i Weapp gjerne på driftsmodellen sammen med dere før dere velger vei.
Ofte stilte spørsmål
Betyr serverless at det ikke finnes noen servere?
Nei, og navnet er litt misvisende. Serverne finnes fortsatt og kjører koden din, men de er skyleverandørens ansvar, ikke ditt. Du trenger aldri å installere, oppdatere eller skalere dem. Poenget er ikke at serverne forsvinner, men at de blir noen andres problem. Du konsentrerer deg bare om koden din.
Hvordan fungerer økonomien i serverless?
Du betaler per kjøring i stedet for å betale for kapasitet døgnet rundt. Står tjenesten stille, koster den nesten null. Når trafikken kommer, skalerer den automatisk opp, og du betaler for akkurat den bruken. Det gjør serverless billig for det som kjøres sjelden eller ujevnt, og kan gi dyre overraskelser ved svært høy, jevn last.
Hva passer serverless best for?
Hendelsesdrevne jobber og arbeidslaster med ujevn belastning. En bakgrunnsjobb som kjøres når en fil lastes opp, en planlagt nattjobb eller et API med sterkt varierende trafikk er typiske tilfeller. Der kapasiteten ellers mest ville ha stått og ventet, kommer serverless til sin rett fordi du bare betaler når noe faktisk skjer.
Hva er en cold start?
En cold start er forsinkelsen som oppstår når en serverless-funksjon vekkes etter å ha stått ubrukt. Det første kallet må vente litt ekstra mens koden startes opp. For bakgrunnsjobber merkes det ikke, men for en tjeneste der brukeren venter på svar i sanntid, kan den ekstra forsinkelsen være merkbar.
Er serverless alltid billigere enn vanlige servere?
Nei. Det er billig ved lav eller ujevn last, men ved høy og jevn trafikk kan summen av alle avgiftene per kjøring bli høyere enn for en server som står på hele tiden. Hva som lønner seg, avgjøres av formen på lasten, så det er verdt å regne på det faktiske mønsteret før man velger.