Hvad er serverless?

Af Weapp · Opdateret

Serverless er en driftsmodel hvor cloududbyderen passer serverne for dig og du betaler pr. kørsel i stedet for pr. oppetid. Serverne findes, men er ikke dit ansvar. Nul trafik koster tæt på nul, og spidsbelastninger skaleres automatisk. Det passer til hændelsesstyrede jobs og API’er med ujævn belastning, med cold starts som bagside.

Serverless dukker op overalt i samtaler om moderne drift, men ordet er forvirrende: Det lyder som om serverne er forsvundet. Det er de ikke. Her er hvad serverless faktisk betyder, hvordan økonomien fungerer og hvornår det er det rigtige valg.

Serverne findes, men de er ikke dit problem

Serverless er en driftsmodel hvor cloududbyderen tager sig af serverne for dig. Din kode kører stadig på rigtige servere et sted, men du behøver aldrig at se dem, installere dem, opdatere dem eller bekymre dig om hvorvidt de kan klare trafikken.

Navnet skal altså læses som “serverløst for dig”, ikke “uden servere”. Forskellen fra traditionel drift er hvem der bærer ansvaret. Har du din egen server, skal du (eller din leverandør) holde den kørende, sikker og passende stor. Med serverless overlader du alt det til andre og tænker kun på din kode: Leverandøren sørger for at den kører når den bliver kaldt, og skalerer automatisk.

Det fritager teamet for en hel kategori af arbejde. Men den virkelige forskel mærkes i økonomien.

Økonomien: Nul trafik koster tæt på nul

Den måske mest tiltalende egenskab ved serverless er måden du betaler på. I stedet for at betale for kapacitet døgnet rundt betaler du pr. kørsel, altså for det der faktisk sker.

Konsekvensen er slående. En tjeneste som ingen bruger lige nu, koster i praksis næsten ingenting; der er ingen server der står og koster penge i tomgang. Og når trafikken pludselig kommer, måske i en kraftig spids, skalerer platformen selv op og håndterer belastningen. Du betaler for den spids, men slipper både for at holde dyr kapacitet i beredskab og for at risikere at tjenesten går ned når presset endelig kommer.

SituationHvad det koster
Ingen trafikTæt på nul, intet står og koster penge i tomgang
Pludselig spidsSkaleres automatisk op, du betaler for forbruget
Jævn, meget høj belastningKan blive dyrere end en server der kører døgnet rundt

Bagsiden ligger i den nederste række: Ved meget høj og jævn trafik kan summen af alle de små gebyrer overstige hvad det ville have kostet at holde kapacitet kørende. Serverless er billigt til det ujævne, ikke automatisk til alt.

Typiske anvendelser

Serverless kommer bedst til sin ret hvor workloaden er hændelsesstyret eller ujævn, altså hvor kapacitet ellers mest ville have stået og ventet.

  • Hændelsesstyrede jobs. Kode der skal køre når noget sker: en fil bliver uploadet og skal behandles, en betaling kommer ind og skal registreres, en række bliver tilføjet og skal sendes videre.
  • Planlagte opgaver. Et natligt job der sammenstiller rapporter eller rydder op i data. Det kører én gang i døgnet, og at holde en server kørende døgnet rundt til det ville være spild.
  • API’er med ujævn belastning. En grænseflade hvis trafik svinger kraftigt over døgnet eller ugen, hvor du gerne vil slippe for at gætte på kapaciteten på forhånd.

I alle disse tilfælde passer det naturligt sammen: Du betaler for arbejde der faktisk bliver udført, og slipper både for at overdimensionere og for at underdimensionere.

En note om cold starts

En ærlig gennemgang må nævne cold starts. Når en serverless-funktion har stået ubrugt et stykke tid, “falder den i søvn”, og det næste kald må vække den, hvilket giver en lille ekstra forsinkelse før koden svarer. Derefter er den hurtig igen indtil den atter får lov at hvile.

For et baggrundsjob betyder det intet om starten tager lidt ekstra tid. Men for en tjeneste hvor et menneske venter på svar i realtid, kan forsinkelsen på det første kald mærkes, og det er værd at tage med i overvejelserne. Det er sjældent en forhindring, men det er en egenskab man bør kende.

Samlet set er serverless et stærkt værktøj til den rigtige workload, med en økonomi der belønner det ujævne. Det erstatter ikke traditionelle servere til alt: Det er et supplement der gør nogle ting billigere og enklere, og andre dyrere. Vil I vide om det passer til netop jeres tjenester, kigger vi hos Weapp gerne på driftsmodellen sammen med jer før I vælger vej.

Ofte stillede spørgsmål

Betyder serverless at der ikke er nogen servere?

Nej, og navnet er lidt misvisende. Serverne findes stadig og kører din kode, men de er cloududbyderens ansvar, ikke dit. Du behøver aldrig at installere, opdatere eller skalere dem. Pointen er ikke at serverne forsvinder, men at de bliver en andens problem: Du fokuserer kun på din kode.

Hvordan fungerer økonomien i serverless?

Du betaler pr. kørsel i stedet for at betale for kapacitet døgnet rundt. Står tjenesten stille, koster den tæt på nul, og når trafikken kommer, skaleres den automatisk op, og du betaler for netop det forbrug. Det gør serverless billigt til det der kører sjældent eller ujævnt, men det åbner også for dyre overraskelser ved meget høj, jævn belastning.

Hvad passer serverless bedst til?

Hændelsesstyrede jobs og workloads med ujævn belastning. Et baggrundsjob der kører når en fil bliver uploadet, et planlagt natjob eller et API hvis trafik svinger kraftigt, er typiske eksempler. Hvor kapaciteten ellers mest ville have stået og ventet, kommer serverless til sin ret fordi du kun betaler når der faktisk sker noget.

Hvad er en cold start?

En cold start er den forsinkelse der opstår når en serverless-funktion bliver vækket efter at have stået ubrugt. Det første kald må vente lidt ekstra mens koden starter op. For baggrundsjobs mærkes det ikke, men for en tjeneste hvor brugeren venter på svar i realtid, kan den ekstra forsinkelse være mærkbar.

Er serverless altid billigere end almindelige servere?

Nej. Det er billigt ved lav eller ujævn belastning, men ved høj og jævn trafik kan de samlede gebyrer pr. kørsel blive dyrere end en server der kører konstant. Hvad der kan betale sig, afgøres af belastningsprofilen, så det er værd at regne på det faktiske mønster før man vælger.