Programmering i molnet
Att utforma program som är avsedda för molnet kräver särskilda överväganden. Beroende på typen av program och den förväntade belastningen kan utvecklare använda vissa av de funktioner som tillhandahålls av molntjänstleverantörer för att förbättra skalbarheten och underhållet av programmen. Med hjälp av automatiska skalningssystem och lastbalanserare kan utvecklare dynamiskt utöka eller minska infrastrukturen, baserat på användningen av maskinvara eller en programberäknad belastningsfaktor.
Det finns flera saker som en utvecklare måste ta hänsyn till vid utvecklingen eller migreringen av ett program till molnet, särskilt sådana som berör prestanda och säkerhet.
Prestandafaktorer för program i molnet
Miljön i ett molnbaserat datacenter skiljer sig från den som utvecklare använder för att utforma och distribuera program i en egen infrastruktur. Vissa utvecklare tycker att det är svårt att finjustera eller förbättra programmets prestanda, eftersom de inte har åtkomst till den fysiska maskinvarulayouten eller specifikationerna i offentliga moln. Vi kommer att visa några av de viktigaste problemen, med särskild tonvikt på faktorer som påverkar programmets prestanda i molnet:
Resursbandbredd och svarstid
En primär fråga vid utvecklingen och distributionen av molnprogram är svarstiden. Utvecklare måste planera sina program med strikta svarstidskrav i åtanke. En metod är att kompilera distributionen av klientplatser. På så sätt kan utvecklarna hitta den optimala uppsättningen datacenterplatser som kan användas för att optimera prestanda och svarstider för slutanvändarna. Detta gäller särskilt webbappar, där enskilda HTTP-begäranden om statiskt webbinnehåll kan utgöra en viktig del av webbsidans belastningstider.
Förutom svarstiderna kan program också ha strikta krav på bandbredd, särskilt sådana som hanterar innehållsrikt multimedieinnehåll som ljud och video. Hos många molntjänstleverantörer kan molnutvecklare att ange prestandaparametrar under etableringen i form av IOPS-krav för beräkning och lagringsresurser. Dessutom tillåter många molntjänstleverantörer att utvecklarna konfigurerar virtuella nätverk. Implementering och införande av programvarudefinierade nätverk och lagring (beskrivs i senare moduler) ger ytterligare insikter om nyare tekniker som används av datacenter till att hantera trafik från flera klienter, samtidigt som man hanterar enskilda krav som anges i klientens tjänstnivåmål.
De tekniker som nämns ovan är främst riktade mot statiskt innehåll. Ett mycket svårare problem är att optimera svarstiden för åtkomst till distribuerade datalagringssystem, särskilt sådana som måste hantera skrivningar och uppdateringar. Vi kommer att beskriva dessa problem lite mer i senare moduler.
Flera innehavare
Program i offentliga datacenter körs vanligtvis i en delad infrastruktur. Den här aspekten av molntjänster visar på flera viktiga frågor. Även om modern virtualiseringsteknik ger en isolerad miljö vad gäller programmiljö och säkerhet, kan de normalt sett inte garantera en prestandaisolering. De virtualiserade resurserna i molnen kan därför inte garantera konsekvent prestanda hela tiden. Prestandan för en resurs vid en viss tidpunkt påverkas av den totala belastningen på resurserna från alla klienter, även kallat interferens som upplevs av andra klienter som delar samma maskinvara.
Vissa molntjänstleverantörer, exempelvis Azure, ger klienterna möjlighet att etablera vissa typer av resurser (t.ex. virtuella datorer) på dedikerad maskinvara. Detta ger skydd mot stora variationer i resursprestandan och ger ganska konsekvent prestanda för resurserna. Men dedikerade maskinvaruinstanser kostar betydligt mer än vanliga instanser på begäran, eftersom Azure måste tilldela en server exklusivt för resurserna.
En närliggande aspekt vid flera innehavare är problemet med etableringsvariation, där identiska begäranden om virtuella resurser i offentliga moln inte mappas identiskt till fysiska resurser, vilket leder till variationer i prestandan.1 Till exempel kan två identiska begäranden om virtuella datorer (VM1
och VM2
) dirigeras till två olika fysiska datorer (A
och B
). Den fysiska datorn A kan ha fyra andra klienter som konkurrerar om resurserna på samma dator, medan dator B bara har två. Klienten debiteras på samma sätt för de virtuella datorerna VM1
och VM2
, men kan eventuellt uppleva olika prestanda på datorerna.
Säkerhetsinställningar
Offentliga moln kan utsättas för ökade angreppsvektorer, som vi såg i lektion 1. Utvecklarna måste vara mycket försiktiga och följa rekommenderade metoder, protokoll och procedurer när de distribuerar och underhåller program i molnet. Det innebär att ytterligare prestandaomkostnader kan uppstå på grund av användningen av säkerhetsprotokoll som krävs för offentliga moln.
Eftersom vi har diskuterat dessa protokoll i en tidigare modul, går vi inte igenom dem i detalj. All kod som distribueras i ett offentligt moln bör genomgå en strikt process för manuell och automatiserad källkodsgranskning och statisk analys, samt dynamiska sårbarhetsanalyser och intrångstester. Riktlinjer för att distribuera program på ett säkert sätt visas på nästa sida.
Referenser
- M.S Rehman och M.F Sakr (2010). Inledande resultat för etableringsvariation i molnbaserad databehandling från 2010 IEEE Second International Conference on Cloud Computing Technology and Science (CloudCom)