Kubernetes eller serverless?

Af Weapp · Opdateret

Serverless er oftest det rigtige udgangspunkt for mindre teams: I betaler efter forbrug og slipper for at drifte servere. Kubernetes giver portabilitet og fuld kontrol, men til en mærkbar omkostning i drift og kompetencer. For mange er det egentlige svar en mellemform: managed containere som Cloud Run eller Fargate.

Har I lagt de traditionelle servere bag jer, dukker det næste spørgsmål hurtigt op: Skal skaleringen ske med Kubernetes eller serverless? De to repræsenterer hver sin filosofi for hvordan en moderne applikation skal drives: Den ene handler om kontrol, den anden om at slippe for at bekymre sig. Her er afvejningen, og hvorfor svaret ofte ligger midt imellem.

Serverless: det rigtige udgangspunkt for mindre teams

Serverless betyder at cloududbyderen kører din kode for dig. Du uploader funktionerne eller applikationen, og platformen klarer resten: starter op når der sker noget, skalerer automatisk under belastning og skalerer ned til nul når der er stille. Du betaler kun for det faktiske forbrug.

For et mindre team er det svært at slå. Der er ingen server at patche, ingen kapacitet at dimensionere og ingen vagtordning for selve platformen. Ved ujævn eller lav belastning er det desuden meget billigt, for det koster intet når der ikke sker noget. Det giver teamet mulighed for at bruge tiden på produktet i stedet for på infrastrukturen.

Prisen er todelt. Dels en tættere kobling til udbyderens måde at gøre tingene på, hvilket gør en fremtidig flytning sværere. Dels visse begrænsninger, f.eks. på hvor længe en kørsel må vare. For de fleste mindre produkter vejer enkelheden alligevel tungest, og serverless er et godt udgangspunkt.

Kubernetes: portabilitet og kontrol, til en pris

Filosofisk er Kubernetes det modsatte. Det er et system til at køre og koordinere containere hvor du styrer platformen, ned i mindste detalje. Det giver to reelle fordele.

  • Portabilitet. Et Kubernetes-setup kan køre næsten hvor som helst, hos en hvilken som helst cloududbyder eller på egne servere. Det mindsker fastlåsningen og giver forhandlingsrum.
  • Kontrol. Du bestemmer præcis hvordan services køres, skaleres og kobles sammen. Krav som serverless ikke tillader, f.eks. meget lange kørsler eller særlige netværksbehov, kan opfyldes.

Men kontrollen koster. Kubernetes er i sig selv en platform der skal driftes, opgraderes, sikres og overvåges, og den kræver kompetencer der er specialiserede og ikke gratis at rekruttere. For et lille team med en håndfuld services bliver det ofte mere maskineri end gevinsten kan retfærdiggøre. Kubernetes betaler sig når kompleksiteten allerede er høj, ikke som en måde at fremtidssikre et simpelt produkt på.

Et scenarie: når valget vender

Forestil jer en startup med en applikation og ujævn trafik. Serverless er det oplagte valg: lav udgift, ingen drift, og teamet fokuserer på produktet. Så vokser virksomheden. Der kommer snesevis af services, belastningen bliver høj og jævn døgnet rundt, og et par komponenter kræver kørsler der er længere end serverless tillader. Nu begynder serverless-regningen at kunne mærkes, og begrænsningerne begynder at gnave. På et tidspunkt vender regnestykket: Den kontrol og den jævne kapacitet som Kubernetes giver, bliver driftsomkostningen værd. Pointen er at valget ikke er for livet. Det rigtige svar kan ændre sig med størrelsen.

Mellemformerne der ofte er det egentlige svar

Her er det vigtigste og mest oversete: Valget står sjældent mellem de to yderpunkter. Midt imellem findes managed containere, tjenester som Cloud Run og Fargate.

Idéen er at du pakker din applikation i en container præcis som i Kubernetes-verdenen, men slipper for at drifte selve Kubernetes-maskineriet. Udbyderen kører og skalerer for dig, ofte ned til nul ligesom serverless. Du får containerverdenens fleksibilitet med en enkelhed der minder om serverless.

AlternativPasser når
ServerlessLille team, ujævn belastning, fokus på produktet
Managed containereI vil have containere, men slippe for at drifte Kubernetes
KubernetesMange services, multi-cloud, egne driftskompetencer

For en stor del af alle teams er den midterste række det rigtige svar. Den giver fleksibilitet uden Kubernetes’ fulde driftsbyrde og skalerer smidigt uden serverless’ snævreste begrænsninger.

Sådan vælger du

Start med serverless eller managed containere. De dækker de fleste behov for mindre og mellemstore produkter, med lidt drift og betaling efter forbrug. Gå over til Kubernetes når kompleksiteten virkelig kræver det (mange services, behov for portabilitet eller krav som serverless ikke kan klare) og når I har kompetencerne til at drifte og vedligeholde det.

Vil I have hjælp til at vælge den rigtige driftsmodel til netop jeres produkt, ser vi hos Weapp gerne på det som en del af vores cloudarkitektur. Kontakt os, så drøfter vi hvad der er fornuftigt før I binder jer til en bestemt opsætning.

Ofte stillede spørgsmål

Hvad er forskellen på Kubernetes og serverless?

Kubernetes er et system til at køre og koordinere containere hvor du selv styrer og drifter platformen. Serverless betyder at cloududbyderen kører din kode for dig og skalerer automatisk. Du betaler kun for det faktiske forbrug. Kubernetes giver kontrol og portabilitet; serverless giver enkelhed og en lav driftsbyrde, men prisen er en stærkere binding til udbyderen.

Er serverless altid billigere?

Ikke altid. Serverless er meget omkostningseffektivt ved ujævn eller lav belastning fordi du ikke betaler når der ikke sker noget. Ved høj og jævn belastning døgnet rundt kan udgiften derimod blive højere end ved et veldimensioneret container-setup. Det er belastningsprofilen der afgør det: Svingende belastning taler for serverless, stabil høj belastning kan tale imod.

Hvornår er Kubernetes sin kompleksitet værd?

Når I har mange services der skal koordineres, har brug for at køre ens på tværs af flere clouds eller på egne servere, eller har krav som serverless ikke tillader, f.eks. meget lange kørsler. Og når I faktisk har kompetencerne til at drifte det. For et lille team med en håndfuld services er Kubernetes som regel mere maskineri end gevinsten kan retfærdiggøre.

Hvad er managed containere som Cloud Run og Fargate?

Det er en mellemvej: Du pakker din applikation i en container som normalt, men slipper for at drifte det underliggende Kubernetes-maskineri. Udbyderen står for det og skalerer for dig. Du får meget af containerverdenens fleksibilitet med en enkelhed der minder om serverless, og det er ofte det praktiske svar for teams der ikke vil have nogen af yderpunkterne.

Hvad menes der med vendor lock-in i det her valg?

Serverless-tjenester er ofte bygget på en bestemt cloududbyders måde at gøre tingene på, hvilket gør det sværere at flytte til en anden cloud senere. Kubernetes er derimod portabelt og kan køre næsten hvor som helst, hvilket mindsker fastlåsningen. Kontrollen har altså en værdi, men den skal vejes op mod den drift og de kompetencer den kræver.