Wanneer is een private cloud het overwegen waard?
Het idee om een private cloud te draaien, gehost of on-premise, voor één enkel bedrijf wordt razendsnel gemeengoed. Steeds meer bedrijven leren cloud computing kennen en zien dat het draaien van hun eigen cloudplatform zowel haalbaar als potentieel waardevol voor de onderneming is. Maar door een algemeen gebrek aan kennis over de cloud komt het steeds vaker voor dat clouds worden aanbevolen terwijl ze helemaal niet aansluiten op de behoeften van het bedrijf, en in plaats daarvan worden verward met traditionele beheersystemen voor virtualisatie.
Een cloud is een speciaal type virtualisatieplatform en vervult een unieke niche. Cloud computing neemt traditionele virtualisatie en voegt daar een laag van geautomatiseerde schaalverdeling en provisioning aan toe die snelle, horizontale schaling van applicaties mogelijk maakt. Dit is geen gangbare zakelijke behoefte. De cloud leent zich ook voor, en is vaak verbonden met, selfservice bij het provisioneren van resources, maar dat alleen maakt iets nog geen cloud en rechtvaardigt evenmin de overstap naar een cloudplatform, al kan het wel een extra stimulans zijn. Wat de cloud interessant maakt, is de mogelijkheid om selfserviceportalen aan eindgebruikers te bieden en de mogelijkheid voor applicaties om zichzelf te provisioneren. Dit zijn de cruciale aspecten die een cloudplatform onderscheiden van traditionele virtualisatie.
Wat een cloud niet impliceert, zijn functies zoals vereenvoudigd systeembeheer van een volledig domein vanuit één enkel scherm, grootschalige consolidatie, eenvoudige migratie tussen hardwaresystemen, snelle provisioning van nieuwe systemen, virtualisatie, hoge beschikbaarheid, overcommitment van resources, enzovoort. Deze functies zijn allemaal op andere manieren beschikbaar, voornamelijk via of bovenop standaard platformvirtualisatie (VMware vSphere, Microsofts HyperV, Xen, et al.) Het is niet zo dat deze functies niet beschikbaar gemaakt kunnen worden in een private cloud, maar de functies zijn geen aspecten van de cloud, maar van het onderliggende virtualisatieplatform. De cloudlaag bevindt zich daarboven en geeft simpelweg de voordelen van de onderliggende lagen door.
Vaak wordt de cloud benaderd vanuit een misverstand dat veel van de functies die gewoonlijk met private clouds worden geassocieerd niet in een andere, eenvoudigere vorm beschikbaar zouden zijn. Dat is zelden het geval. Normale virtualisatieplatforms, meestal VMwares vSphere en Microsofts HyperV, bieden al deze mogelijkheden. Ze kunnen worden gebruikt om robuuste clusters van fysieke servers te maken, beheerd vanuit één interface, met een ongelooflijk hoge betrouwbaarheid en snelle provisioning van nieuwe systemen die minimale specialistische kennis van de IT-afdeling vereisen en de traditionele bedrijfsworkflows in stand houden. Wanneer ik spreek met bedrijven die denken dat ze mogelijk geïnteresseerd zijn in het bezit van hun eigen cloud, zijn de functies die ze werkelijk willen meestal helemaal geen cloudfuncties.
De term “cloud” is de laatste tijd simpelweg zo populair geworden dat mensen gaan aannemen dat functies die voor vrijwel iedereen belangrijk zijn eraan moeten worden toegeschreven om de plotselinge opmars in belangrijkheid te verklaren, maar dat is gewoon niet het geval. De cloud blijft, en zal blijven, een overwegend niche-oplossing die slechts voor een zeer klein aantal bedrijven geschikt is om zelf te bezitten. Het gebruik van publieke clouds of het gebruik van gehoste diensten die vanaf cloudplatforms worden geleverd, zal vrijwel alomtegenwoordig worden, en is dat in feite al. Maar het bezit van een private cloud voor het gebruik door één enkel bedrijf is voor de meeste bedrijven of bedrijfsonderdelen nog lang geen zakelijke noodzaak, en zal dat in veel gevallen, vermoed ik, ook nooit worden.
Private clouds blinken uit op twee belangrijke gebieden. Het eerste is een bedrijf dat regelmatig een groot aantal tijdelijke of ad hoc systemen moet “opspinnen”. Dit komt vaak voor bij grote ontwikkelteams en groepen voor applicatietests, vooral als deze groepen zich op meerdere besturingssystemen richten. De mogelijkheid om snel tijdelijke testsystemen of labsystemen te provisioneren kan zeer voordelig zijn, en de eigenschap van cloud computing om eenvoudig provisioningtools beschikbaar te stellen waarmee zakelijke klanten hun eigen systeeminstanties kunnen aanmaken, beheren en vernietigen met, naar verwachting, ingebouwde verrekeningsmechanismen, kan zeer gunstig zijn voor de bedrijfsefficiëntie, omdat de interactie tussen de IT-afdeling en de eindgebruikers voor deze transactie vrijwel wrijvingsloos wordt. De verantwoordelijkheid voor het onderhoud van de cloud als geheel kan eenvoudig worden gescheiden van de verantwoordelijkheden voor het onderhoud van afzonderlijke systemen. Op deze manier zelden gebruikt voor productieworkloads, maakt dit een selfservicebenadering mogelijk waar veel bedrijfsonderdelen vandaag de dag wanhopig naar op zoek zijn. Onpraktisch op kleine schaal vanwege de overhead van het opzetten en onderhouden van het cloudplatform zelf, maar op grote schaal kan het enorm productief zijn. Naast technische voordelen kan dit aspect van cloud computing dienen als model om IT te zien als een interne dienstverlener en afdelingen als klanten. We bespreken IT en andere bedrijfsonderdelen al lang in deze termen, maar we denken er zelden werkelijk op deze manier over.
Het tweede gebied waar cloud computing echt tot zijn recht komt, en datgene waarvoor het concept oorspronkelijk werd ontwikkeld, is het afhandelen van automatische provisioning voor horizontaal schalende applicaties. Dat wil zeggen, applicatieworkloads die hun capaciteit kunnen vergroten door nieuwe instanties van zichzelf te genereren. Op kleine schaal doen veel webapplicaties dit, vanwege hun stateless aard, binnen één enkel systeem door nieuwe thread-workers te genereren om extra verbindingen af te handelen. Een Apache-webserver kan beginnen met acht listeners die klaarstaan om verzoeken te bedienen, maar naarmate die threads uitgeput raken, start hij automatisch nieuwe threads om extra inkomende verbindingen af te handelen, zodat hij binnen de grenzen van één enkele server kan schalen. Om dit concept uit te breiden, toegepast op cloud computing, zou diezelfde applicatie, wanneer ze aanvoelt dat thread-uitputting op systeembreed niveau nadert (of op basis van andere metingen zoals een gebrek aan vrij geheugen of prestatieverlies), een API gebruiken die door het cloud-computingplatform beschikbaar wordt gesteld om het cloudbeheersysteem te signaleren een nieuwe kopie aan te maken van het systeem dat de aanroep deed – zichzelf in wezen ter plekke klonend. Binnen enkele seconden zou een nieuwe virtuele server, identiek aan de eerste, draaien en zich bij zijn ouder voegen om inkomende verzoeken te bedienen. Dit kind- of kloonsysteem zou eveneens intern nieuwe threads genereren wanneer nodig, en als het zelf ook uitputting zou aanvoelen, zou het het cloudplatform aanroepen om weer een nieuw systeem aan te maken om nog meer threads af te handelen. Op deze manier kan de applicatie zichzelf vrijwel onbeperkt laten groeien (binnen de hardwaregrenzen van het volledige cloudplatform), waar nodig, ter plekke, automatisch. Vervolgens kan, naarmate afzonderlijke systemen inactief raken en workloads afnemen, één voor één een systeem aan het cloudbeheersysteem signaleren dat het niet langer nodig is, waarna het systeem wordt uitgeschakeld en vernietigd, aangezien het slechts een stateless kloon was, waarmee systeemcapaciteit vrijkomt voor andere applicaties en workloads die mogelijk van de reservecapaciteit gebruik willen maken.
Zoals we kunnen zien, is cloud computing enorm krachtig, vooral nu het overgrote deel van de huidige publieke en enterpriseapplicaties op een stateless manier wordt geschreven om gebruik te maken van webprotocollen en eindgebruikersinterfaces. Webapplicaties zijn bijzonder bedreven in het benutten van het schaalbaarheidsmodel van cloud computing, en de meeste grootschalige webapplicaties maken vandaag de dag gebruik van deze elastische uitbreiding en inkrimping van capaciteit. Er beginnen veel nieuwe NoSQL-modellen op te komen die erop wijzen dat databases, naast verwerkingsnodes voor de applicatie-frontend, mogelijk binnenkort op grote schaal van soortgelijke modellen kunnen profiteren. Dit kan zeker worden benut voor interne applicaties en voor publiek toegankelijke, maar interne applicaties hoeven zelden verder te schalen dan één enkel systeem, en daarom is het vrij zeldzaam om private clouds op precies deze manier te zien benutten.
De gevaren rond cloud computing komen in de vorm van extra complexiteit bovenop normale virtualisatie. Er is de mogelijkheid van complexe opslag die nodig is om het platform te ondersteunen en meer lagen om te leren en te onderhouden. Het vermogen van cloud computing om snel systemen aan te maken en te vernietigen kan het verleidelijk maken voor gebruikers om te proberen cloudresources te gebruiken alsof het persistente systemen zijn, wat ze kunnen worden, wat kan resulteren in gegevensverlies doordat gebruikers gedrag ondervinden dat sterk afwijkt van wat traditioneel en verwacht is. Misschien wel de grootste zorg rond de cloud is een menselijke, namelijk de toegenomen kans op ongecontroleerde systeemwildgroei doordat eindgebruikers ongebreideld steeds meer nieuwe systemen opspinnen die, omdat ze door eindgebruikers en niet door IT worden aangemaakt, waarschijnlijk niet strak worden beheerd en bewaakt, waardoor systemen in een ongeautoriseerde en vaak vergeten staat achterblijven. Dit kan leiden tot een nachtmerrie op het gebied van onderhoud en beveiliging, doordat systemen ongepatcht en onverzorgd blijven, wat het risico vergroot en resources uitput. En het meest zorgwekkend is de mogelijkheid dat systemen worden aangemaakt en vergeten en mogelijk bestaan zonder de juiste licenties. Het volgen van en rapporteren over automatisch geprovisioneerde systemen brengt procesrisico met zich mee, veroorzaakt door de enorme verschuiving in de manier waarop systemen worden aangemaakt. IT-afdelingen zijn gewend aan de zware licentieprocessen die nodig zijn om compliance te handhaven, maar bij cloud computing bestaat de mogelijkheid dat dit proces aan de bedrijfsonderdelen wordt blootgesteld op een manier waarvoor zij absoluut niet zijn toegerust. Er zijn voorzieningen voor de licentiebehoeften van cloud computing, maar dit is extra complexiteit en beheer dat moet worden aangepakt. Systemen laten bestaan zonder direct toezicht van de IT-afdeling brengt duidelijk een risico van mogelijk onvoorziene aard met zich mee.
Het bezit van een private cloud brengt veel opwindende mogelijkheden met zich mee, maar het is duidelijk dat deze voordelen en kansen niet voor iedereen zijn weggelegd. Ze zijn geschikt voor grotere bedrijven, voor bedrijven met goede procesbeheersing, voor bedrijven die speciaal aangepaste applicaties draaien die in staat zijn gebruik te maken van de elasticiteit van de resources op systeemniveau, en voor bedrijven die grootschalige ad hoc aanmaak en vernietiging van systemen nodig hebben, geleverd als dienst, zodat eindgebruikers zelf kunnen provisioneren. De meeste grote ondernemingen zullen intern slechts beperkt nut vinden in cloud computing. Kleinere organisaties zullen cloud computing in de nabije toekomst zelden voordelig vinden, als dat ooit al het geval is.