Virtuella ägg och korgar
I samtal med IT-proffs på småföretag visar det sig att en av de viktigaste orsakerna till tveksamhet kring att införa virtualisering bottnar i det som brukar beskrivas som att “lägga alla ägg i en korg”.
Jag kan förstå varifrån den oron kommer. Virtualisering gör det möjligt att rymma många gästoperativsystem i ett enda fysiskt system som, i händelse av ett maskinvarufel, gör att alla gästsystem som ligger på det slutar fungera samtidigt, allihop på en gång. Det låter illa, men kanske är det inte fullt så illa som vi först antar.
Tanken bakom uttrycket om äggen och korgarna är att vi inte bör utsätta alla våra resurser för risk samtidigt. Detta tillämpas i allmänhet på investeringar och uppmuntrar investerare att diversifiera och investera i många olika företag och typer av värdepapper, såsom obligationer, aktier, fonder och råvaror. När det gäller ägg (eller pengar) talar vi om en utbytbar handelsvara. Ett ägg är lika bra som ett annat. En uppsättning ägg är av naturen redundant.
Om vi har ett dussin ägg och slår sönder sex kan vi fortfarande göra en omelett, kanske en mindre, men vi kan ändå äta. Att äta en mindre omelett är sannolikt nästan lika tillfredsställande som en större – vi går i vilket fall inte hungriga. Att lägga våra redan redundanta ägg i flera korgar gör att vi kan gardera oss. Ja, att bära två korgar innebär att vi har mindre tid att hålla uppsikt över vardera, vilket ökar risken att tappa några av äggen men minskar risken att tappa alla äggen. När det gäller ägg är det verkligen ett klokt upplägg. På samma sätt är det ett smart sätt att förbereda sig inför pensionen.
Eftersom denna teori upprepas som ett talesätt utan noggrann analys eller riktig förståelse, tillämpas den sedan på orelaterade områden såsom servervirtualisering. Servrar är dock inte som ägg. Servrar, särskilt i mindre företag, är sällan utbytbara handelsvaror där det räcker att ha sex i funktion i stället för de vanliga tolv. Vanligtvis spelar varje server en unik roll och alla är relativt kritiska för verksamhetens funktion. Om en server inte är kritisk är det osannolikt att den kan motivera kostnaden för att anskaffas och underhållas över huvud taget, och därför skulle den förmodligen inte existera. När servrar är utbytbara, såsom i en stor, tillståndslös webbfarm eller ett beräkningskluster, konfigureras de på det viset som ett sätt att utöka kapaciteten bortom gränserna för en enda fysisk låda och faller därmed utanför ramen för denna diskussion.
IT-tjänster i ett företag är vanligtvis, åtminstone i viss utsträckning, ett “kedjeberoende”. Det vill säga, de är ömsesidigt beroende av varandra och förlusten av en enskild tjänst kan påverka andra tjänster, antingen för att de är tekniskt beroende av varandra (såsom att en verksamhetskritisk applikation är beroende av en databas) eller för att de är beroende av varandra i arbetsflödet (såsom att en kontorsarbetare behöver att filservern fungerar för att kunna tillhandahålla en fil som han behöver redigera med information från ett e-postmeddelande samtidigt som han diskuterar ändringarna över telefon eller snabbmeddelanden). I dessa fall kan förlusten av en enda nyckeltjänst, såsom e-post, nätverksautentisering eller filtjänster, skapa en oproportionerligt stor förlust av arbetsförmåga. Om det finns tio nyckeltjänster och en slutar fungera sjunker företagets produktivitet ur ett IT-tjänsteperspektiv sannolikt med betydligt mer än tio procent, i extrema fall möjligen mot hundra procent. Detta är inte alltid sant; i vissa unika fall lyckas medarbetarna “jobba runt” en förlorad tjänst på ett effektivt sätt, men det är mycket ovanligt. Även om människor kan fortsätta arbeta är de sannolikt långt mindre produktiva än vanligt.
När det gäller fysiska servrar utgör varje server sin egen felpunkt. Så om vi har tio servrar har vi tio gånger så stor sannolikhet för avbrott som om vi bara hade en av dessa servrar. Varje server som vi lägger till för med sig sin egen risk. Om varje fel har en avbrottsfaktor på 2,5 – det vill säga ekonomiskt påverkar verksamheten med tjugofem procent av intäkterna under, säg, en dag – blir vår totala genomsnittliga påverkan över ett decennium likvärdig med två och ett halvt fullständiga driftstopp för hela anläggningen. Jag använder här begreppen faktorer och genomsnitt för att göra det enkelt; att fastställa längden på ett genomsnittligt avbrott eller påverkan av ett genomsnittligt avbrott är inte nödvändigt, eftersom vi i detta fall bara behöver fastställa relativ påverkan för att jämföra scenarierna. Det är bara ett sätt att jämföra den kumulativa ekonomiska påverkan av avbrott av en händelsetyp jämfört med en annan utan att behöva specifika siffror – detta hjälper dig inte att avgöra hur mycket du bör lägga ut, bara den relativa tillförlitligheten.
Med virtualisering har vi den uppenbara möjligheten att konsolidera. I detta exempel antar vi att vi kan slå samman alla dessa tio befintliga servrar till en enda server. När vi gör detta utlöser vi ofta reaktionen om “alla våra ägg i en korg”. Men om vi gör en riskanalys ser vi att detta vanligtvis bara är rädsla och osäkerhet och inte en matematiskt underbyggd risk. Om vi antar samma risker som i exemplet ovan kommer vår enda server i genomsnitt att drabbas av endast ett enda fullständigt driftstopp för hela anläggningen, en gång per decennium.
Jämför detta med det första exemplet, som åstadkom skada motsvarande två och ett halvt fullständiga driftstopp för hela anläggningen – risken med den virtualiserade, konsoliderade lösningen är endast fyrtio procent av den traditionella lösningens.
Tänk nu på att detta bygger på antagandet att förlusten av vissa tjänster innebär en ekonomisk förlust som är större än det strikta värdet av den tjänst som gick förlorad, vilket nästan alltid är fallet. Även om den förlorade tjänsten inte motsvarar mer än förlusten av en enskild tjänst hamnar vi bara på nollresultat och behöver inte oroa oss. I sällsynta fall kan påverkan av att förlora ett enskilt system vara mindre än dess “andel av kakan”, normalt för att människor är flexibla och kan jobba runt det havererade systemet – som när snabbmeddelanden slutar fungera och folk helt enkelt går över till att använda e-post tills snabbmeddelandena är återställda, men dessa fall är sällsynta och är normalt begränsade till några få system av många, medan merparten av systemen, säg ERP, CRM och e-post, har oproportionerligt stor påverkan i händelse av ett avbrott.
Så vad vi ser här är att under normala omständigheter kommer flytten av tio tjänster från tio servrar till tio tjänster på en server i allmänhet att sänka vår risk, inte öka den – i direkt motsats till teorin om “äggen i en korg”. Och detta enbart ur ett maskinvarufelsperspektiv. Konsolidering erbjuder dock flera andra viktiga tillförlitlighetsfaktorer som kan ha en betydande inverkan på vår fallstudie.
Med konsolidering minskar vi mängden maskinvara som behöver övervakas och hanteras av IT-avdelningen. Färre servrar innebär att mer tid och uppmärksamhet kan ägnas åt dem som återstår. Mer uppmärksamhet innebär större chans att fånga problem tidigt och bättre möjlighet att hålla reservdelar i lager. Bättre övervakning och underhåll leder till bättre tillförlitlighet.
Den kanske viktigaste faktorn med konsolidering är dock att det medför betydande kostnadsbesparingar, och dessa kan, om de hanteras rätt, ge möjligheter till förbättrad tillförlitlighet. Med den dramatiska minskningen av den totala kostnaden för servrar kan det vara frestande att fortsätta hålla budgetarna strama och försöka utnyttja kostnadsbesparingarna rakt av. Det är förståeligt, och för vissa företag kan det vara rätt tillvägagångssätt. Men det är inte det tillvägagångssätt som jag skulle rekommendera när man brottas med föreställningen om ägg och korgar.
Genom att i stället tillämpa ett mer måttfullt tillvägagångssätt, där man behåller betydande kostnadsbesparingar men ändå spenderar relativt sett mer på en enda server, kan du anskaffa en server i högre prisklass (läs: mer tillförlitlig), använda bättre komponenter, ha reservdelar på plats och så vidare. Kostnadsbesparingarna från virtualisering kan ofta omvandlas direkt till ökad tillförlitlighet, vilket ytterligare förskjuter ekvationen till förmån för enserverlösningen.
Som jag konstaterade i en annan artikel är det mer sannolikt att ett tegelhus klarar en storm än vad antingen ett eller två halmhus gör. Att ha fler av något gör det inte nödvändigtvis till det mer tillförlitliga valet.
Dessa fördelar kommer enbart från konsolideringsaspekten av virtualisering och inte från virtualiseringen i sig. Virtualisering tillhandahåller dessutom utökade funktioner för riskreducering separat. Systemavbildning och snabb återställning, liksom återställning till annan maskinvara, är stora fördelar med i stort sett alla virtualiseringsplattformar. Detta kan spela en viktig roll i en strategi för katastrofåterställning.
Naturligtvis syftar alla dessa resonemang enbart till att visa att virtualisering och konsolidering på en enda låda kan slå det gamla tillvägagångssättet med “en applikation per server” och ändå spara pengar – vilket visar att exemplet med ägg och korgar är vilseledande och inte är tillämpligt i detta scenario. Det bör finnas föga betänklighet kring att gå direkt från en traditionell miljö till en virtualiserad sådan utifrån dessa faktorer.
Det bör noteras att virtualisering därefter kan utöka tillförlitligheten hos traditionell standardmaskinvara genom att tillhandahålla failover-funktioner i stordatorklass som är långt bortom vad icke-virtualiserade plattformar förmår erbjuda. Detta för standardmaskinvara närmare i linje med de större, mer kostsamma RISC-plattformarna. Dessa funktioner kan medföra en extrem skyddsnivå, men är ofta långt utöver vad som är lämpligt för IT-avdelningar som inledningsvis migrerar från en äldre maskinvarumiljö utan failover. Hög tillgänglighet är en utmärkt funktion men är ofta kostsam och mycket ofta onödig, särskilt när företag går från, som vi har sett, relativt opålitliga miljöer förr till mer tillförlitliga miljöer i dag. Eftersom vi redan har ökat tillförlitligheten utöver vad som tidigare ansågs nödvändigt är det mycket sannolikt att ett extremt språng i tillförlitlighet inte behövs nu, men på grund av det stora prisfallet för hög tillgänglighet är det fullt möjligt att det kommer att vara kostnadsmässigt motiverat där det tidigare inte kunde vara det.
I samma anda fruktas virtualisering ofta eftersom den ses som en ny, oprövad teknik. Detta är förvisso osant, men det finns ett sådant intryck inom småföretags- och standardserversfären. I verkligheten introducerades dock virtualisering först av IBM på 1960-talet och har alltsedan dess varit en hörnsten i avancerade stordatorer och RISC-servrar – de system som kräver bästa möjliga tillförlitlighet. Inom standardserversfären var virtualisering en större teknisk utmaning och det tog mycket lång tid innan den kunde implementeras tillräckligt effektivt för att vara användbar i den verkliga världen. Men även inom standardserversfären har virtualisering varit tillgänglig sedan slutet av 1990-talet och är därmed ungefär femton år gammal i dag, vilket är långt bortom punkten för att vara en framväxande teknik – i IT-världen är den positivt vördnadsvärd. Virtualisering på standardplattformar är ett moget område med flera högt ansedda, ytterst avancerade leverantörer och produkter. Användningen av virtualisering som standard för alla eller nästan alla serverapplikationer är ett sedan länge etablerat och accepterat “enterprise-mönster”, och ett som nu enkelt kan tas i bruk av företag av alla storlekar.
Virtualisering är, kanske kontraintuitivt, faktiskt en mycket kritisk komponent i en tillförlitlighetsstrategi. I stället för att tillföra risk kan virtualisering nästan betraktas som en plattform för riskreducering – en verktygslåda för att öka tillförlitligheten hos dina datorplattformar längs många olika vägar.
