Scaling in de cloud

Waarom Scaling?

Scaling (of schalen) is interessant omdat de nodige capaciteit niet op voorhand aangekocht moet worden, maar on-demand aangevraagd kan worden op het moment een applicatie meer resources nodig heeft. Het grote voordeel is de prijswinst. Een applicatie of database hoeft alleen maar geschaald te worden wanneer er een hogere vraag naar resources is. Voor een webshop kan dit bijvoorbeeld koopjesdagen zijn, voor andere applicaties bepaalde events. Voor nog anderen kan dit totaal onverwacht gebeuren.

Met publieke cloud kan de applicatie zo opgezet worden dat er alleen maar extra resources (bvb instances) afgenomen worden wanneer een bepaalde threshold (indicator) overschreden wordt, bijvoorbeeld het CPU verbruik, het dataverkeer verbruik, het aantal requests per seconde, of de latency van de applicatie. Wanneer deze threshold bereikt wordt, dan wordt extra capaciteit toegevoegd om de piek op te vangen. Nadien, wanneer de extra capaciteit niet meer nodig is, kan deze weer worden afgebouwd.

Capaciteit bijvoegen wordt scale-out genoemd, capaciteit weer verwijderen is een scale-in operatie. Sommige applicaties of databases kunnen echter niet geschaald worden door extra capaciteit bij te voegen, maar dienen vervangen te worden door een instance of database met meer capaciteit. Dit wordt dan scale-up genoemd. Scale-up is vaak nodig wanneer de applicatie oorspronkelijk niet voor de cloud ontwikkeld werd. Scale-up is een alternatief voor scale-out, maar een scale-up gaat vaak gepaard met outages van enkele minuten, waarbij een scale-out zonder onderbreking naar de eindgebruiker uitgevoerd kan worden. Veel applicaties zijn onderverdeeld in tiers (bestaande uit een applicatie tier en een database tier), waardoor scaling uitgevoerd kan worden op elke afzonderlijke tier, waarbij de applicatie tier gemakkelijk scale-out zal ondersteunen en de database tier vaak alleen maar een scale-up model.

Het beschikbaar hebben van de juiste hoeveelheid resources heeft ook een positieve impact naar de gebruiker van de applicatie. Responstijden zullen lager liggen en de gebruiker zal een positievere ervaring hebben wanneer het de applicatie gebruikt.

Scheduled scaling

In sommige gevallen is het ook interessant om tijdsgebonden te gaan schalen. Veel applicaties die gebruikt worden in organisaties hebben ‘s nachts amper capaciteit nodig. Zo kunnen enkele simpele scaling-rules er al voor zorgen dat er een positieve impact is op de operationele kosten. Net voor de kantooruren doet de applicatie een scale-out operatie om de benodige capaciteit te hebben voor tijdens de werkuren. Na de kantooruren kan er een scale-in operatie uitgevoerd worden om het teveel aan resources te verwijderen. Deze manier van schalen zorgt al snel voor een besparing van 50% en meer op de infrastructuurkosten.

Automated scaling

Om automatisch te gaan schalen is het nodig om enkele thresholds te configuren. Zo kan het aantal gebruikers van een applicatie als maatstaf genomen worden om meer capaciteit te gaan toevoegen. In de afbeelding hieronder is het aantal instances weergegeven dat automatisch een scale-out operatie uitvoerde wanneer de applicatie meer capaciteit nodig had.

_images/scaling-1.png

Om geen impact te hebben naar de eindgebruiker toe wordt gebruik gemaakt van applicatie load balancers. Deze load balancers bieden cloud providers aan als een service, zodat deze niet zelf beheert moeten worden. Hieronder is de load balancer weergegeven in een scaling operatie:

_images/scaling-2.png _images/contact-in4it.png