Hvad er skalerbarhed?
Skalerbarhed er et systems evne til at håndtere voksende belastning (flere brugere og mere data) uden at skulle omskrives og uden at udgifterne løber løbsk. Man skalerer enten vertikalt, med en kraftigere maskine, eller horisontalt, med flere maskiner der deler arbejdet. Det er et designvalg der er dyrt at bygge ind bagefter.
Skalerbarhed er et ord der dukker op så snart et system begynder at få succes, eller når man håber at det vil få det. Grundlæggende handler det om et enkelt spørgsmål: Hvad sker der når mange flere vil bruge tjenesten på samme tid? Her er hvad skalerbarhed betyder og hvordan du som kunde bør tænke over det.
Definitionen
Skalerbarhed er et systems evne til at håndtere voksende belastning (flere brugere, mere data, flere transaktioner) uden at skulle omskrives fra bunden og uden at udgifterne løber løbsk. Et skalerbart system kan følge med når forretningen vokser, i stedet for at blive en flaskehals der bremser den.
Pointen er at vækst ikke skal kræve en krise. Et velbygget system går fra hundrede til hundredtusind brugere ved at få flere ressourcer mens et system der skalerer dårligt, rammer loftet og kræver en dyr ombygning netop når alt andet går godt. Skalerbarhed handler altså om at gøre succes håndterbar.
To måder at skalere på: vertikalt og horisontalt
Der findes grundlæggende to måder at give et system mere kapacitet på, og forskellen er let at forstå.
Vertikal skalering betyder at man gør den maskine man allerede har, kraftigere: hurtigere processor, mere hukommelse, mere lagerplads. Det er som at skifte op til en større og stærkere bil. Enkelt og hurtigt, men før eller siden når man grænsen: En enkelt maskine kan kun blive så stor, og til sidst er der ingen større at købe.
Horisontal skalering betyder i stedet at man tilføjer flere maskiner der deler arbejdet. I stedet for én kæmpelastbil sender man flere almindelige lastbiler af sted sammen. Det skalerer i praksis så langt man vil, men kræver at systemet er bygget til at fordele arbejdet over flere maskiner, og det er noget man skal tænke på tidligt, ikke tilføje til sidst.
Skalerbarhed er et designvalg
Her ligger den vigtigste indsigt for en kunde: Skalerbarhed er ikke en knap man trykker på når presset kommer, men et valg der bygges ind i systemets fundament.
Et system der fra starten blev tænkt til en håndfuld brugere, kan være bygget på en måde der ganske enkelt ikke kan skaleres horisontalt. At rette op på det senere kan betyde at store dele skal bygges om: dyrt, tidskrævende og risikabelt, ofte midt i den vækst der udløste behovet. At bygge med skalerbarhed for øje fra start koster derimod sjældent meget ekstra, men sparer enormt hvis succesen kommer. Derfor hører spørgsmålet hjemme i designfasen, ikke i en fremtidig panik.
En nøgtern tommelfingerregel
Samtidig er det let at overdrive i den anden retning. At bygge et system til millioner af brugere når man har tusind, er spild: Det koster tid og penge og gør løsningen mere kompleks og sværere at vedligeholde end den behøver at være. Mange projekter er kørt fast i at løse problemer de aldrig fik.
Den sunde afvejning er at bygge til næste størrelsesorden, ikke til Google. Sigt efter at kunne klare cirka ti gange dagens belastning uden ombygning. Det giver rigelig margin at vokse ind i uden at I betaler for en skala I aldrig når. Når I nærmer jer det nye niveau, tager I det næste skridt. Sådan holder I både udgifter og kompleksitet i skak.
Et konkret scenarie
Tænk på en webshop op til dens første rigtig store kampagne. Den daglige trafik er beskeden, men i løbet af en weekend ventes antallet af besøgende at mangedobles. Et skalerbart system håndterer det ved midlertidigt at starte flere maskiner der deler belastningen, og skalerer derefter ned igen når travlheden har lagt sig: Man betaler kun for den ekstra kapacitet når der er brug for den.
Et system uden den evne står i stedet over for et valg mellem at gå ned under presset eller på forhånd at købe (og betale for) en kæmpemaskine der for det meste står ubrugt. Forskellen er netop skalerbarhed, og den er bygget længe før kampagnen. Vil I vide om jeres system er rustet til vækst, kigger vi hos Weapp gerne på arkitekturen som en del af vores ydelser før belastningen sætter den på prøve.
Ofte stillede spørgsmål
Hvad er skalerbarhed, forklaret enkelt?
Det er et systems evne til at vokse uden at gå i stykker. Når flere brugere logger ind og mængden af data stiger, skal tjenesten blive ved med at fungere lige så godt uden at blive langsom eller kræve at alt bygges om. Et skalerbart system kan gå fra hundrede til hundredtusind brugere ved at man giver det flere ressourcer, ikke ved en total omskrivning.
Hvad er forskellen på vertikal og horisontal skalering?
Vertikal skalering betyder at man giver den eksisterende maskine mere kraft: hurtigere processor, mere hukommelse. Det er enkelt, men før eller siden når man grænsen, for en maskine kan kun blive så stor. Horisontal skalering betyder i stedet at man tilføjer flere maskiner der deler belastningen. Det skalerer meget længere, men stiller større krav til hvordan systemet er bygget fra starten.
Kan man gøre et system skalerbart bagefter?
Det kan man, men det er ofte dyrt og nogle gange smertefuldt. Skalerbarhed er grundlæggende et designvalg der påvirker hvordan systemet bygges fra starten. Et system der blev bygget ud fra en antagelse om få brugere, må måske bygges fundamentalt om for at klare mange. Derfor betaler det sig at tænke den forventede vækst igennem tidligt selvom man ikke bygger til mere end man realistisk har brug for.
Skal vi bygge til millioner af brugere fra start?
Nej, og det ville ofte være spild. At bygge til en skala I ikke er i nærheden af, koster unødigt tid og penge og gør systemet mere komplekst end det behøver at være. Den nøgterne tommelfingerregel er at bygge til næste størrelsesorden (ti gange dagens belastning), ikke til Google. Det giver margin til at vokse uden at overdimensionere løsningen.
Hvordan ved jeg om mit system er skalerbart?
Spørg hvordan det opfører sig når belastningen mangedobles: Bliver det ved med at fungere når man tilføjer ressourcer, eller kræver det ombygning? Et tegn på god skalerbarhed er at systemet kan vokse horisontalt, med flere maskiner. Hvis svaret er at alt afhænger af én enkelt server der kun kan blive større, er der en grænse for hvor langt løsningen rækker.