Vi har inga servrar, vi kör Serverless
Hyper Converged, Cloud Native, Software Defined, IaC, ServerLess - det är lätt att börja spela floskelbingo i när det börjar diskuteras moln.
Ofta hör jag också dessa molnbegrepp användas som silverkulor, så för att förklara dom så behöver vi gå in på hur molntjänster byggs.
För mig är det två pelare som gör att molnet vilar stadigt i sin leverans: Virtualisering och stor skala. Dessa står till grund för flera av de molntekniker som till slut levereras till dig som kund.
Virtualisering
Servervirtualisering för att kunna köra flera virtuella datorer på en dator, och är den princip all hosting och traditionella datacenter bygger på. Det är ett sätt att utnyttja hårdvarans resurser effektivare och snabba upp tiden för att göra nya resurser tillgänglig för kunder. Tiden då man behöver vänta på att köpa en server från leverantör och att någon stoppar in den i rack är i stort sett förbi och du kan nu få en ny virtuell server på minuter eller timmar.
Vilka typer av virtualisering är vanligt förekommande nu då? Här följer några förenklade bilder på de vanligaste:
För att sammanfatta virtualisering kan man säga att all form av virtualisering också kan kallas Software Defined, det vill säga en mjukvara ersätter hårdvarukomponenter och försöker antingen härma en redan befintlig hårdvara, "emulering", eller skapar en helt egen typ av hårdvara som inte existerar på något annat sätt än i den virtuella världen, "syntetisk". De syntetiska typerna är oftast både snabbare och effektivare och tar mindre plats, men kräver oftast speciell hårdvara eller drivrutiner.
Storskalig drift
Den andra komponenten är massiv skala. För att få ekonomi i det publika molnet behövs riktigt stora och många datacenter. Vi pratar arenastorlek med plats för hundratusentals fysiska servrar och miljontals virtuella. Microsoft har i skrivande stund över 200 datacenter uppdelade på 60 regioner, och de andra ligger inte långt efter. De olika molnleverantörerna räknar såklart sin utbredning på olika sätt för att få den bästa siffran att presentera, och det förekommer även marknadsföring och tester om etablering i både rymden och havet.
För att snabbt etablera och bygga ut dessa datacenter har många tekniker använts, allt från traditionellt serverhallsbygge, open-airkonstruktioner (där servrar sätts i princip utomhus) till containerinstallation (där en container med servrar kopplas in direkt och sedan får gå till de tjänas ut). Den traditionella designen med rack i långa rader verkar dock ha fått ett tillbakasving då den är enkel och billig och är lättare att maximera antalet servrar i. Till detta hör förstås avancerade kylningssystem, stora batterier och dieselsystem för avbrottsfri kraft samt optimerade byggnadsdesigner för att minimera energiförbrukning.
I ett traditionellt datacenter har det vanligast varit att sätta upp servrar för sig och sedan lagringslösningar vid sidan av, men inom molnet används ofta det som kallas Hyper-Converged, där lagringen är integrerad i varje server. För varje tillförd server ökar alltså kapaciteten för både minne, lagring och CPU-resurser, och man slipper flaskhalsar till sin lagringslösning.
Så hur får de fram alla dessa servrar? Till exempel har Microsoft tagit fram en egen serverspecifikation, som är Open Source, som flera leverantörer sedan kan leverera och de slipper då vara beroende av en leverantör.
Att sköta massiva mängder servrar och flera virtualiseringslager tillsammans ställer förstås krav på stora mängder automation, där molnleverantörerna har tagit det till nästa nivå, både i automationsnivån hur de ansluter och underhåller fysisk hårdvara men också i hanteringen. Den höga nivån av automation och standardisering gör att leverantörerna kan interagera och sköta livscykeln för det allra mesta med hjälp av kod. Denna kod blir då ytterligare en virtualiserings/mjukvarunivå kallad IaC(Infrastructure as Code) eller på svenska infrastruktur som kod.
Molnleverantörerna använder också sin storlek och de enorma mängder data som skapas för att analysera och optimera och förutse problem med sina tjänster. Till exempel använder Googles datacenter algoritmer för att förutsäga och hantera kylbehov, vilket drastiskt minskar energikostnader, och Microsoft använder samma tekniker för att förutsäga hårdvarufel och byta ut den fysiska hårdvaran precis innan den är på väg att gå sönder.
Storskalig virtualisering
För att sätta ihop hela kakan till en molnleverans behövs de olika formerna av virtualisering och den massiva skalan sammafogas. Virtualiseringsnivåerna behöver också läggas på varandra:
Genom den storskaliga automationen kan nu flera virtualiseringsnivåer också gömmas för kunden, och upplevelsen av detta blir de olika tjänstenivåerna:
När endast det fysiska lagret döljs får vi en IaaS-tjänst.
När även den virtuella servern döljs börjar vi få olika typer av PaaS-tjänster, allt från denna nivå brukar också kallas Cloud Native och betyder egentligen bara att det är den här tjänstenivån som tidigast såldes som molntjänst.
När alla nivåer görs osynliga för kunden och denne endast kan ladda upp koden som ska exekveras i applikationen kallas det för Serverless.
När det inte heller går att ladda upp sin egen kod så är det en SaaS-tjänst, det vill säga du använder bara mjukvaran.
För att interagera med dessa tjänster på ett effektivt sätt kan du som kund använda leverantörens redan etablerade administrationssätt, Infrastruktur som kod. Faktum är att även om du inte gör det utan öppnar någon av molnleverantörernas portaler så översätts allting du klickar igång ändå till kod i bakgrunden.
Slutligen så kan du som kund dra nytta av den storskaliga datainsamlingen, både i upptiden av dina tjänster men också de ramverk som är etablerade gör att du kan övervaka dina egna tjänster med stor detaljrikedom.
Sammanfattning
De många lagren av virtualisering, hög automatiseringsgrad och den stora skalan är grunden till att molnet kan existera till en effektiv kostnad. Det är dock lätt att fastna i de många begreppen, virtualiseringsnivåer och vilka specifika tekniker som används. I slutändan är det bara en fortsättning på trenden att mjukvara skapar nya lager och nya sätt att abstrahera bort dessa för dig som slutkund. Denna mjukvara skapar också nya förutsättningar för flexibilitet, automation och övervakning samt den skala som gör att du kan köra din applikation nästan vart som helst i världen genom att bara ladda upp kod.
Om du vill ha hjälp att välja rätt molntjänster/tjänstenivå för din organisation eller har andra funderingar kring hur du kan få värde av molnet kontakta mig!