Applicaties in de cloud:

Google Cloud Platform (GCP)

.

We hebben een flinke berg ervaring met het Google Cloud Platform (GCP). Op GCP brengen we al onze ontwikkelde maatwerk applicaties onder die we hebben gemaakt voor klanten.

Stabiliteit in de Google Cloud

De webapplicaties die we ontwikkelen worden in Docker containers geplaatst. Deze containers zijn volledig geïsoleerd met als grote voordeel dat er geen invloeden van buitenaf zijn. De Docker container bevat alle informatie en instructies die er nodig zijn (inclusief werkende code, besturingssysteem et cetera) om de applicatie stabiel te kunnen draaien. Het grote voordeel hiervan is dat een Docker container lokaal dan ook exact hetzelfde werkt als een container die in de cloud draait. Immers, alle instructies zitten binnen de container. Hierdoor kunnen we snel (automatisch) opschalen in capaciteit – voor applicaties die nieuwe servers nodig hebben.

Deze containers kunnen zelfs op verschillende locaties en in verschillende landen worden geplaatst, waarmee een wereldwijd netwerk ontstaat die de zogeheten ‘requests’ af kunnen handelen per regio. Dit maakt onze cloud oplossingen vrij ongevoelig voor storingen. Met deze werkwijze kunnen we kwaliteit garanderen en voldoen aan de hoogste standaarden die er zijn voor hosting. Eventuele calamiteiten worden op deze manier zoveel mogelijk voorkomen maar kunnen – indien ze toch onverhoopt optreden – razendsnel worden opgelost.

Testen is eenvoudiger met Docker

Een van de grootste problemen met testen is reproductie, een probleem wat ergens op een server ontstaat ook lokaal te reproduceren, om het vervolgens aantoonbaar te kunnen oplossen.

Omdat Docker containers lokaal dus exact op dezelfde wijze functioneren als dat het gehost zou worden in Berlijn bestaat dit verschil eigenlijk niet. Een incident die op een server optreedt zal ook lokaal op een laptop in Amsterdam voorkomen.

Kubernetes (k8s)

Het verdelen van Docker containers over verschillende servers doen wij middels Kubernetes (kortweg k8s). Kubernetes biedt de mogelijkheid om containers te “orchesteren”. Dit gaat uit van het principe dat het niet uitmaakt wáár een Docker container draait; of dit nu op Amazon Web Services (AWS), Google Cloud Platform (GCP) óf Microsoft Azure is. Een combinatie van deze verschillende cloud aanbieders is zelfs mogelijk met Kubernetes.

Kubernetes draait bovenop Docker en zorgt ervoor dat containers in groepen kunnen worden geactiveerd of opgeschaald.

Schaalbaarheid van Google cloud applicaties

Met ongeveer 2,5 miljoen fysieke servers heeft het Google Cloud Platform altijd voldoende computerkracht beschikbaar, verspreid over de gehele wereld. Door slimme keuzes te maken kunnen we er altijd voor zorgen dat onze applicaties snel kunnen regeren op drukte of het uitvoeren van lastige berekeningen on demand. We kijken daarvoor of we applicaties bijvoorbeeld serverless kunnen hosten of juist geavanceerde autoscaling methoden moeten toepassen, om zo de piekmomenten goed aan te kunnen en dat er op rustigere momenten geen dure servers niets staan te doen.

Kosten

Cloud oplossingen worden vaak als een dure oplossing gezien. Wij zijn van mening dat dit enorm mee kan vallen en lichten het graag voor specifieke gevallen toe. Een van de redenen dat wij denken dat het goed mee kan vallen is dat er geen verlies is op ongebruikte capaciteit. Er zijn verschillende “pay as you grow” constructies te bedenken waardoor vooral startups of corporates met een pilot app eerst kunnen zien of het bedachte concept daadwerkelijk aanslaat.

Als een applicatie het druk krijgt kost het meer, maar dan is er ook omzet (of een andere vorm van winst) om de extra kosten te compenseren en verantwoorden. Tegelijkertijd hoeven we geen extra werk te verrichten zodra dit gebeurt, door de applicaties automatisch op (en ook neer) te laten schalen zullen er nooit te veel resources vooraf worden ingekocht.

Zodra er duidelijkheid is over de vereiste capaciteit kunnen we alsnog vooraf inkopen bij GCP, dit levert weer een aanzienlijke korting op.

We kunnen tevens gebruik maken van het door ons beheerde YipYip cluster zodat er nog meer schaalvoordeel te behalen valt.

Vergelijking met co-located en dedicated servers

Je eigen hardware bezitten (ook wel “metal” genoemd) is een grote kostenpost op zichzelf. Enerzijds zijn er de hoge kosten voor aanschaf, vaak worden prijzen opgedreven door chiptekorten i.c.m. de grote vraag. Maar ook moet je er rekening mee houden dat hardware stuk kan gaan. Die moet vervolgens worden vervangen, als de hardware volledig defect is geraakt en de server niet meer reageert is er direct downtime tot en met het moment dat de hardware vervangen is. Dit kan op zeer ongunstige momenten gebeuren.

Daarnaast staat een groot deel van alle servers wereldwijd in de avonduren “stil”, ze staan aan maar verwerken geen requests en hebben dus 0% load. Er is vaak weinig dataverkeer en de meeste organisaties opereren ook niet wereldwijd, waardoor klanten zich vaak concentreren in een select aantal tijdzones. Dit is tijd die je alsnog (indirect) betaalt, dit gaat zowel op voor co-located servers als dedicated servers.

Andersom gaat het overigens ook op, als servers gebruikt worden om enkel in de nacht zware operaties uit te voeren (voor de dag er na) staan ze het volledige dagdeel óók te draaien. Bij cloud-gebaseerde oplossingen hoeft dit dus niet en betaal je enkel een basis fee plus wat je verbruikt. Wil je iedere avond doordeweeks bijvoorbeeld 10 servers een uurtje laten draaien? Dan kan dat. Wil je iedere keer een server bijschalen op het moment dat de load boven de 70% wordt? Ook dat kan. De clusters zijn zeer intelligent in te regelen en kunnen specifiek worden gemaakt voor iedere organisatie.

De kosten van een server per minuut liggen uiteraard hoger dan als je vooraf een aantal maanden afneemt maar dat is logisch. Je betaalt immers ook niet voor wat je niet gebruikt, of dat voordeliger is zal verschillen per situatie en hierover adviseren we graag.

Pay as you grow

Als het systeem volledig schaalbaar wordt opgezet kunnen de kosten dat ook zijn. Wordt er weinig gebruikt? Dan betaal je ook niet. Als er plotseling enorme hoeveelheden gebruikers bij komen in de app of webapplicatie zullen de kosten ook stijgen.

Ook nachtelijke operaties om bijvoorbeeld grote synchronisaties uit te voeren (die tijdelijk veel processorkracht kosten) kun je op deze manier afvangen. Het is zelfs mogelijk om deze kosten af te rekenen per seconde waardoor je nooit bandbreedte en processorkracht inkoopt die verloren gaat.

De applicatie is dus vanaf het eerste moment volledig voorbereid op de toekomst en wat komen gaat, maar brengt niet vanaf het begin al hoge kosten met zich mee. Mocht de app, het back-end of platform uiteindelijk minder aanslaan dan initieel gedacht zijn de serverkosten geen verliespost, die zijn dan immers ook laag. Andersom, als het gebruik plotseling explodeert; dan schaalt het systeem automatisch de benodigde servers bij.

Dedicated servers

Uiteraard zijn er dus wel mogelijkheden om vooraf capaciteit in te kopen, dit deden we een aantal jaar geleden altijd en is het meeste te vergelijken met een dedicated server. Capaciteit wordt dan vooraf ingekocht en staat dag en nacht klaar voor enkel de applicatie die ze toegewezen krijgen.

Hiervoor kunnen kosten worden vastgezet per maand en zijn er geen verrassingen achteraf. De kosten zijn (afhankelijk van het verbruik) lager maar er is potentieel wel flink wat verlies, als je immers niet 100% gebruik maakt van de servers is het al snel zonde van de gemaakte kosten. Ook is het automatisch opschalen iets lastiger omdat je uitgaat van een vaste set aan services en servercapaciteit met vaste maandbedragen.

Per project zullen we adviseren welke richting het beste past en efficiënt is. We kunnen ook nadenken over eventuele combinaties van een vaste capaciteit én een flexibele schil.

Voor welke bedrijven is GCP interessant?

Google Cloud Platform is voor iedere partij die iets wil hosten wel interessant. Ze bieden capaciteit aan gigantische bedrijven zoals: Twitter, PayPal, UPS, Ebay en Etsy. Maar ook voor kleine ondernemingen en startups is GCP enorm interessant.

Third-party software

GCP heeft de mogelijkheid om te koppelen met een breed scala aan third-party oplossingen.

Optimale schaalbaarheid van web-applicaties

Kleine ondernemingen hebben vaak geen grote capaciteit nodig tot ze het wél nodig hebben, dit is de essentie van schaalbaarheid. Deze vorm van schaalbaarheid is met traditionele hosting op een losse VPS of dedicated server niet haalbaar. Het ecosysteem van GCP voorziet hier volledig in, het onderbrengen van applicaties en kleine servers kosten niet veel maar zijn wel eenvoudig bij te schalen wanneer nodig.

Zelfs als er een relatief eenvoudige WordPress website moet gaan draaien of een kleine webshop is het interessant. Het mooiste aan het ecosysteem is dat je nergens aan vast zit, op ieder gewenst moment kunnen resources weer naar benden worden geschroefd waarmee de kosten dalen.

Lagere onderhoudskosten

De onderhoudskosten van een server zijn in een cloud-oplossing niet van toepassing. Ondanks dat er soms wat onderhoud aan het cluster dient te gebeuren hoeft niet iedere server afzonderlijk geüpdatet te worden qua hardware en software. Iets wat aanzienlijk veel tijd kost bij een dedicated of co-located server.

DevOps

DevOps is een samenstelling van Development (ontwikkeling) en Ops (operations of beheer). Een DevOps engineer houdt zich bezig met alle taken die er voor nodig zijn om development zo vloeiend mogelijk te laten verlopen. Aangezien de kosten voor ontwikkelaars veruit het hoogste zijn binnen een project proberen we alle processen te optimaliseren waar mogelijk.

Een DevOps engineer bij YipYip heeft in de huidige opzet slechts een paar uur nodig voor er een volwaardige applicatieomgeving draait bij GCP.

Interesse

Interesse in het laten uitvoeren van google cloud (gcp)?