Serverless eller traditionella servrar?

Av Weapp · Uppdaterad

Serverless betyder att du betalar per anrop och slipper sköta servrar, medan traditionell drift innebär att du betalar för kapacitet dygnet runt. Serverless vinner vid ojämn eller låg last, traditionell drift vid hög och jämn belastning. Väg in cold starts och leverantörslåsning innan du väljer driftmodell.

Serverless mot traditionell drift är i grunden en fråga om hur du betalar för och tar ansvar för datorkraft. Bakom teknikorden döljer sig ett enkelt vägval: hyra kapacitet per gång den behövs, eller hålla kapacitet igång och betala för den. Här är jämförelsen i kostnads- och ansvarstermer.

De två modellerna

Traditionell drift innebär att du har servrar – egna eller hyrda i molnet – som är igång dygnet runt. Du betalar för kapaciteten oavsett om den används, och du (eller din leverantör) ansvarar för att installera, skala och underhålla dem. Du har full kontroll och full förutsägbarhet, men också fullt ansvar.

Serverless vänder på det. Molnleverantören sköter servrarna, din kod körs bara när den anropas, och du betalar per körning. Servrarna finns kvar – “serverless” är delvis en missvisande etikett – men de är inte ditt problem. Du slipper drift och skalning, mot att du ger upp en del kontroll.

Skillnaden i ansvar är hälften av historien. Den andra hälften är ekonomin, och där blir det konkret.

Ekonomin: betala per anrop mot betala för kapacitet

Kärnan är enkel. Serverless är betala-per-anrop: står tjänsten stilla kostar den nära noll, och vid en topp skalar den upp automatiskt och du betalar för just den trafiken. Traditionell drift är betala-för-kapacitet: servern kostar detsamma dygnet runt, oavsett om den kör tusen anrop eller inga alls.

Vilken som är billigast avgörs av lastens form. Två räkneexempel gör det tydligt:

  • Ojämn last. En intern rapporttjänst som körs några gånger om dagen. Serverless kostar bara för de körningarna – i praktiken småpengar. En server igång dygnet runt för samma jobb betalar du för 24 timmar för att använda den i minuter.
  • Jämn, hög last. Ett populärt API som tar emot miljontals anrop varje dygn, jämnt fördelat. Här kan summan av alla per-anrop-avgifter överstiga vad en handfull servrar som är igång konstant hade kostat. Vid förutsägbar tung last vinner ofta kapacitet du håller igång.
LastprofilOftast billigast
Låg eller ojämn (skov, sällan)Serverless
Hög och jämn (konstant trafik)Traditionell drift
Oförutsägbar med kraftiga topparServerless (skalar automatiskt)

Serverless baksidor: cold starts och inlåsning

Serverless låter nästan för bra i det ojämna fallet, så det är värt att vara ärlig med priset.

Cold starts. När en funktion stått oanvänd måste den startas upp vid nästa anrop, och den första körningen får en fördröjning. För ett bakgrundsjobb spelar det ingen roll. Men för en användarnära tjänst där svarstiden märks direkt kan den där extra fördröjningen vid första anropet vara ett verkligt irritationsmoment.

Leverantörslåsning. Serverless-tjänster är ofta tätt vävda in i en specifik molnleverantörs sätt att fungera. Bygger du mycket av din logik den vägen blir du beroende av just den plattformen, och att flytta senare blir ett större projekt. Det är hanterbart, men det är en bindning att gå in i med öppna ögon.

Vilka arbetslaster hör hemma var

Grovt indelat: serverless passar det händelsestyrda och det ojämna. Bakgrundsjobb, schemalagda uppgifter, API:er med sporadisk eller kraftigt varierande trafik, och nya tjänster där du inte vet volymen än – allt det trivs i en modell som kostar efter användning och skalar av sig själv.

Traditionell drift passar det tunga och jämna. Tjänster som körs konstant, som är känsliga för minsta fördröjning, eller där du vill ha full kontroll och en helt förutsägbar månadskostnad, hör hemma på kapacitet du håller igång. Det är också fullt möjligt att blanda – låta en stadig kärna köra traditionellt och lägga skovvisa jobb på serverless.

Det finns alltså inget universellt rätt svar, bara en passform mot hur ert system faktiskt belastas. Vill ni ha hjälp att läsa av lastprofilen och räkna på vad den betyder för notan, tittar vi på Weapp gärna på driftvalet tillsammans innan ni bygger fast en modell.

Vanliga frågor

Vad menas egentligen med serverless?

Serverless betyder inte att det saknas servrar, utan att molnleverantören sköter dem åt dig. Din kod körs bara när den anropas, och du betalar per körning i stället för för uppetid. Servrarna finns, men de är inte ditt ansvar – du slipper installera, skala och underhålla dem.

När blir serverless billigare än traditionell drift?

När lasten är ojämn eller låg. Betalar du per anrop kostar en tjänst som mest används i skov nästan ingenting när den står stilla, och skalar automatiskt vid toppar. En traditionell server debiteras dygnet runt oavsett om någon använder den, vilket blir dyrt för sällan-använda arbetslaster.

När vinner traditionell drift i stället?

Vid hög och jämn last. När en tjänst används konstant och mycket kan den fasta kostnaden för en server som är igång dygnet runt bli lägre än att betala per anrop för miljontals anrop. Vid förutsägbar, tung belastning är kapacitet du äger ofta mer ekonomiskt än kapacitet du hyr per gång.

Vad är cold starts och varför spelar de roll?

En cold start är fördröjningen när en serverless-funktion startar från vila efter att ha stått oanvänd. Första anropet kan ta märkbart längre tid innan koden svarar. För bakgrundsjobb spelar det ingen roll, men för en tjänst där varje millisekund märks för användaren kan det vara ett verkligt problem.

Vad innebär leverantörslåsning med serverless?

Serverless-tjänster är ofta tätt knutna till en specifik molnleverantörs sätt att fungera. Bygger du mycket logik på ett sådant sätt blir det svårare och dyrare att flytta till en annan leverantör senare. Det är inte diskvalificerande, men det är en risk att väga in innan du bygger stort på en enskild plattform.