Zoals beloofd in mijn vorige post, ga ik vandaag wat dieper in op de betekenis van cloud computing. Er is veel discussie omtrent de exacte betekenis van cloud computing. De hoofdreden voor deze verwarring is het feit dat, in tegenstelling tot vele andere technische termen, cloud computing op zich geen nieuwe technologie is maar eerder een nieuwe manier om bestaande technologieën te combineren en te gebruiken [1]. Het is een fenomeen dat een antwoord vormt op de lang verwachte 1 droom van computer-berekeningen als een nutsvoorziening (“computing as a utility”). Dit houdt in dat rekenkracht op aanvraag, in “oneindige” hoeveelheden en op elk willekeurig tijdstip beschikbaar is net zoals elektriciteit of water uit de kraan. Dit geeft cloud computing het potentieel om op fundamentele wijze de manier waarop we vandaag omgaan met het ontwerpen, ontwikkelen, installeren, schalen, updaten, onderhouden en aankopen van software te veranderen [2, 3].

Omdat cloud computing een vaag omschreven concept is, is het belangrijk om in mijn thesis een goede definitie van cloud computing te hebben. Op basis van verschillende bronnen [2, 4, 5, 6], hanteer ik volgende definitie:

Cloud computing is een informatietechnologie (IT) dienst-verleningsmodel waarin over het netwerk beschikbare IT-middelen – zoals netwerken, servers, opslagcapaciteit, software, ontwikkelingsplatformen en diensten – via een cloud op aanvraag en dynamisch zeer snel kunnen worden aangeleverd of vrijgegeven en dit met een minimale inspanning van zowel de klant als de dienstverlener. Bovendien betaalt de klant enkel voor de verbruikte IT-middelen zonder een voorafgaande verbintenis of investering. Het verbruik wordt hierbij door de dienstverlener gemeten in een overeengekomen meeteenheid (uren, megabyte, CPU cyclussen. . . ).

Een cloud is een parallel en gedistribueerd systeem waarin via virtualisatie technieken met elkaar verbonden IT-middelen gedeeld worden. Hierdoor is de benutting van deze IT-middelen veel hoger en lijkt de beschikbare hoeveelheid oneindig.

Twee sterk gerelateerde paradigma’s zijn grid computing en cluster computing. Het is interessant om het verschil met cloud computing te bestuderen [6, 7]. Een cluster is een parallel en gedistribueerd systeem dat bestaat uit een verzameling van verbonden computers die samenwerken zodat ze één hoogperformante geïntegreerde entiteit vormen. Een cluster wordt beheerd door één organisatie en de nadruk ligt op performantie en data-intensieve toepassingen. Een grid is een parallel en gedistribueerd systeem dat het mogelijk maakt om geografisch verspreide IT-middelen dynamisch te delen en te combineren afhankelijk van hun beschikbaarheid, capaciteit, performantie en kost. De verschillende IT-middelen in een grid worden echter beheerd door verschillende organisaties en de nadruk ligt meer op “Quality-of-Service” en wetenschappelijke toepassingen. Zowel cluster computing als grid computing hebben eigenschappen gemeenschappelijk met cloud computing. Het belangrijkste verschil met cloud computing is dat cloud computing veel meer ondersteuning biedt voor de ontwikkeling door derden van een breed scala aan toepassingen omdat het diensten aanbiedt waarbij de onderliggende infrastructuur volledig wordt afgeschermd.

Binnen cloud computing kunnen we drie dienstenmodellen onderscheiden op basis van hun niveau van abstractie [1, 4, 5]:

  • Infrastructure as a Service (IaaS): In het IaaS model worden infrastructuur IT-middelen – zoals rekenkracht, opslag en netwerken – in een gevirtualiseerde omgeving (virtuele machines) als dienst aan de klant aangeboden. Het abstractieniveau is heel laag omdat de aangeboden diensten sterk relateren aan de onderliggende hardware. Dit biedt een grote flexibiliteit op software niveau (van besturingssystemen tot allerhande applicaties) maar een verhoogde complexiteit in het beheer door de klant (geen automatische updates, geen automatische schalering, beperkte ondersteuning voor applicatieontwikkeling. . . ). Goede voorbeelden van IaaS zijn de Amazon EC2 dienst en de onlangs geïntroduceerde Google Compute Engine dienst.
  • Platform as a Service (PaaS): Bij PaaS is de aangeboden dienst een software ontwikkelingsplatform dat ondersteuning biedt voor bepaalde programmeertalen, bibliotheken, tools en diensten en dat gericht is op een bepaald type applicatie (zoals webapplicaties, business applicaties. . . ). PaaS biedt dus een hoger abstractieniveau waardoor de flexibiliteit beperkt wordt (telkens maar één type van applicaties) maar het beheer en gebruik vereenvoudigd wordt. Het platform zorgt meestal ook voor automatische updates, schalering, installaties. . . Bekende voorbeelden van PaaS zijn het Google App Engine platform en het Force.com platform.

  • Software as a Service (SaaS): SaaS aanbieders bieden applicaties aan die overal en altijd over het Internet beschikbaar zijn. Het abstractieniveau is zeer hoog (geen relatie met de onderliggende infrastructuur) en de flexibiliteit heel laag (elke applicatie heeft immers een bepaald vastgelegd doel). Dit heeft als gevolg dat het beheer van SaaS applicaties sterk vereenvoudigd is. De aanbieder zorgt immers voor het onderhoud en de beschikbaarheid van de applicatie en bovendien is een (lokale) installatie meestal niet nodig. Enkele voorbeelden van SaaS zijn Microsoft Office 365, Smartschool en Salesforce.com.

The cloud stack consisting of IaaS, PaaS and SaaS

De cloud stack

Daarnaast kunnen we ook nog een onderscheid in implementatiemodel maken tussen publieke clouds (public clouds), privé clouds (private clouds), gemeenschap clouds (community clouds) en hybride clouds (hybrid clouds) [1, 2, 4]:

  • Een publieke cloud is een cloud die beheerd wordt door een externe dienstverlener en die via het Internet voor het grote publiek beschikbaar is. Een publieke cloud kan worden aangewend voor het snel beschikbaar maken van applicaties en diensten over het Internet zonder een grote investering te moeten doen.

  • Een privé cloud is een cloud die exclusief gebruikt en beheerd wordt door één organisatie. Een privé cloud biedt die organisatie meer controle over haar data en dezelfde voordelen als een publieke cloud (zoals een efficiënter aanwending van de IT middelen door gedeeld gebruik en dynamische schaalbaarheid), maar vergt wel een grote investering en onderhoud door die organisatie. Soms beschouwt men hier ook een subcategorie virtuele privé cloud (virtual private cloud) [2]. Een dergelijke cloud is eigenlijk een platform bovenop publieke clouds dat gebruik maakt van virtual private network (VPN) technologie om een privé cloud te vormen. In zo’n cloud worden niet enkel de servers en de software gevirtualiseerd, maar ook het netwerk op zich. Een voorbeeld is Amazon VPC.

  • Een gemeenschap cloud wordt beheerd en gebruikt door een groep van organisaties met een gemeenschappelijk doel of een bepaalde nood (zoals bijvoorbeeld verhoogde veiligheid). Een voorbeeld van een gemeenschap cloud is Apps.gov dat een IaaS dienst aanbiedt aan de federale, deelstaat- en lokale overheden van de Verenigde Staten.

  • Een hybride cloud is een mengvorm tussen een publieke cloud, een privé cloud en/of een gemeenschap cloud die via bepaalde technologieën met elkaar verbonden zijn zodat overdraagbaarheid van data en applicaties mogelijk is. Meestal worden de niet-kritische data en diensten dan overgebracht naar een publieke cloud en blijven de business kritische applicaties binnen het bedrijf op een privé cloud.

Zoals je ziet is cloud computing niet gemakkelijk eenduidig te definiëren en ik hoop dat ik wat opheldering heb kunnen brengen. In mijn volgende post bekijk ik cloud computing kort vanuit het business perspectief of met andere woorden wat de meerwaarden (en valkuilen) van cloud computing zijn. So stay tuned!

PS: Heb je suggesties, opmerkingen of andere ideeën die me kunnen helpen bij mijn thesis. Twijfel niet om een berichtje achter te laten in de commentaar onderaan!

*laatste aanpassing op 28/12/2012*

Referenties

[1] Q. Zhang, L. Cheng, and R. Boutaba, “Cloud computing: state-of-the-art and research challenges,” Journal of Internet Services and Applications, vol. 1, pp. 7–18, May 2010.

[2] S. Marston, Z. Li, S. Bandyopadhyay, J. Zhang, and A. Ghalsasi, “Cloud computing – The business perspective,” Decis. Support Syst., vol. 51, pp. 176–189, Apr. 2011.

[3] B. Hayes, “Cloud computing,” Commun. ACM, vol. 51, pp. 9 – 11, July 2008.

[4] P. M. Mell and T. Grance, “SP 800-145. The NIST definition of cloud computing,” tech. rep., Gaithersburg, MD, United States, 2011.

[5] M. Armbrust, A. Fox, R. Griffith, A. D. Joseph, R. Katz, A. Konwinski, G. Lee, D. A. Patterson, A. Rabkin, I. Stoica, and M. Zaharia, “Above the clouds: A berkeley view of cloud computing,” Feb 2009.

[6] R. Buyya, C. S. Yeo, S. Venugopal, J. Broberg, and I. Brandic, “Cloud computing and emerging it platforms: Vision, hype, and reality for delivering computing as the 5th utility,” Future Generation Computer Systems, vol. 25, no. 6, pp. 599 – 616, 2009.

[7] G. Coulouris, J. Dollimore, T. Kindberg, and G. Blair, Distributed Systems: Concepts and Design. USA: Addison-Wesley Publishing Company, 5th ed., 2011.

Notes:

  1. Het eerste idee hierover ontstond al in de jaren zestig in het boek “The Challenge of the Computer Utility” door D. F. Parkhill