# H2. Virtualisatie & cloud --- ## Inhoud 1. Wat is virtualisatie? 2. Concepten van virtualisatie 3. Multi-tenancy 4. Cloud computing --- # 2.1 Wat is virtualisatie? --- > Virtualisatie is technologie die je kan gebruiken om virtuele representaties te maken van servers, opslag, netwerken en andere fysieke machines. Virtualisatiesoftware **bootst de functies van fysieke hardware na** om meerdere virtuele machines gelijktijdig te laten draaien op één enkele fysieke machine. Bedrijven gebruiken virtualisatie om hun hardwarebronnen efficiënt te benutten en een hoger rendement uit hun investering te halen. Het vormt ook de basis van cloud computing diensten, die organisaties helpen om hun infrastructuur efficiënter te beheren. > > ~ https://aws.amazon.com/what-is/virtualization/ (vertaald) --- ## Traditionele vs. virtuele architectuur
Notes: Traditioneel gebruiken we op een computer één besturingssysteem, zoals Microsoft Windows. Het besturingssysteem spreekt de hardware aan, en één of meerdere applicaties draaien bovenop het besturingssysteem. Het is wel mogelijk om op één computer verschillende besturingssystemen naast elkaar te installeren, maar deze kunnen niet tegelijk opgestart worden. Om te wisselen moet je de computer dus opnieuw opstarten. Door de opkomst van virtualisatie is het echter wel mogelijk om meerdere besturingssystemen gelijktijdig te gebruiken. Met behulp van virtualisatiesoftware is het mogelijk om op één computer meerdere computers te laten draaien. Dit zijn geen fysieke computers, maar virtuele computers. Deze virtuele computers werken net zoals afzonderlijke computers, maar delen dus onderliggend de fysieke hardware. --- ## Virtuele hardware
Notes: Een traditionele computer bestaat uit verschillende hardwarebronnen, zoals de processor, het geheugen, de netwerkkaart en harde schijven. Met behulp van virtualisatiesoftware gaan we een virtuele versie maken van deze bronnen. Elke virtuele machine heeft onder andere een virtuele processor (vCPU), virtueel geheugen (vRAM), één of meerdere virtuele netwerkkaarten en één of meer virtuele schijven (virtual disks). De virtualisatiesoftware zorgt ervoor dat de fysieke hardware gedeeld kan worden door de virtuele hardware. Zo worden virtuele harde schijven bewaard als bestanden op de fysieke harde schijf, zal elke virtuele machine een stukje van het fysieke geheugen reserveren, en zullen virtuele processoren met behulp van scheduling (zie later) elk een deel krijgen van de beschikbare processorcapaciteit. --- ## Voordelen van virtualisatie - **Efficiënter** gebruik van de beschikbare hardware - **Goedkoper** dan aparte fysieke systemen - **Lagere** ecologische voetafdruk Notes: Met behulp van virtualisatie kunnen we dus meerdere virtuele computers op één toestel laten draaien, die de onderliggende fysieke hardware delen. Het belangrijkste voordeel van virtualisatie is dat we hierdoor de hardware van een machine optimaal kunnen benutten. Wanneer we op een krachtig computersysteem, zoals bv. een server in een datacenter, maar één besturingssysteem en een beperkt aantal applicaties zouden draaien, zal vaak een groot deel van de beschikbare capaciteit niet gebruikt worden. Door virtualisatie toe te voegen op een dergelijke krachtige machine kunnen we dus de beschikbare hardware bronnen veel efficiënter gaan gebruiken, omdat we verschillende besturingssystemen naast elkaar kunnen draaien, elk met hun eigen applicaties. Voor virtualisatie worden vaak vrij dure en krachtige computersystemen gebruikt, die wel een grotere investering zijn dan "normale" computers. Doordat er echter verschillende virtuele computers naast elkaar kunnen draaien zijn er veel minder fysieke computers nodig, waardoor de meerprijs snel terugverdiend is. Daardoor is het gebruik van virtuele computers dus uiteindelijk veel goedkoper dan het gebruiken van aparte fysieke computers. Een ander voordeel van virtualisatie is de mogelijke stroombesparing. Een krachtig computersysteem zal relatief wel iets meer stroom verbruiken dan een normale computer, maar toch verbruikt zo'n systeem veel minder stroom dan wanneer je zou werken met verschillende afzonderlijke machines. Dit is niet alleen goed voor de kostprijs, maar ook voor het milieu. Om aan de slag te gaan met virtualisatie heb je trouwens niet noodzakelijk een super krachtige computer nodig! In datacenters worden weliswaar vaak heel krachtige servers gebruikt, die meer dan 10 virtuele machines gelijktijdig kunnen laten draaien, maar op een moderne laptop of desktop computer kan je tegenwoordig ook reeds 2 tot 5 virtuele computers gelijktijdig opstarten. --- ## Nadelen van virtualisatie - **Compatibiliteit**: niet alle software is geschikt voor virtualisatie - **Prestaties**: applicaties kunnen trager werken door de overhead van virtualisatie - **Complexiteit**: virtualisatie vereist technische kennis en een goede strategie Notes: Natuurlijk zijn er ook een paar nadelen verbonden aan virtualisatie: - Niet alle software leent zich (reeds) tot virtualisatie. Software die bijvoorbeeld zeer intensief gebruik maakt van de hardware, zoals bijvoorbeeld grafische software of games, kan minder goed werken in een virtuele omgeving. - Performantie van applicaties lijdt soms onder virtualisatie. Applicaties kunnen trager werken door de overhead die virtualisatie veroorzaakt op het systeem. - Virtualisatie vereist technische kennis en een goede strategie rond de opzet ervan binnen een bedrijf, zeker in combinatie met cloud computing. Anders kan dit leiden tot een wildgroei aan virtuele servers met als gevolg hogere beheerskosten en verminderde kostenbesparing. --- ## Virtualisatiesoftware
Notes: Virtualisatie bestaat in vele maten en vormen, en er is tegenwoordig een groot gamma aan virtualisatiesoftware. Eén van de bekendste spelers op de markt is VMware, de eerste fabrikant was die virtualisatie op het Intel-platform mogelijk maakte. Ook Microsoft heeft zijn eigen set aan virtualisatiesoftware, bekend onder de naam Microsoft Hyper-V. Xen, KVM (Kernel-based Virtual Machine) en Oracle VirtualBox zijn gratis alternatieven om virtuele machines te laten draaien. Parallels Desktop is geoptimaliseerd voor Mac en wordt vooral gebruikt om Windows te draaien bovenop MacOS. Docker is vrij nieuw en is ook een speciale vorm van virtualisatie. Bij Docker worden er geen virtuele machines gebruikt, maar wordt een Linux kernel gedeeld door meerdere containers. --- # 2.2 Concepten van virtualisatie --- ## Virtuele machine - Een virtuele machine (VM) is een computerprogramma dat een **volledige** computer nabootst, waar andere (besturings-)programma's op kunnen worden uitgevoerd.
Notes: Binnen de wereld van virtualisatie wordt vaak gebruik gemaakt van virtuele machines (VMs). Een virtuele machine is een computerprogramma dat een volledige computer nabootst, en je kan binnen een virtuele machine een besturingssysteem en programma's installeren, zoals je dit kan bij een fysieke machine. Je kan binnen een virtuele machine ook verschillende virtuele hardwarebronnen configureren, waaronder: - Virtueel geheugen (vRAM) - Eén of meerdere virtuele processoren (vCPU) - Eén of meerder virtuele harde schijven (virtual disk) Virtuele machines worden beheerd door een hypervisor (zie verder). --- ## Soorten virtuele machines - **Programmeertaal-specifiek** - Java Virtual Machine (JVM) - **Emulator** - VirtualBox - VMWare - ... - **Applicatie-specifiek** - Docker
Notes: Virtuele Machines bestaan echter in verschillende maten en vormen. De bekendste vorm is wellicht de emulator, dit is een virtuele machine die een volledige computer nabootst. - **Programmeertaal-specifiek:** Een virtuele machine voor een programmeertaal biedt een abstractielaag voor de werkelijke computer: een verzameling basisfuncties waar programma's in de programmeertaal gebruik van moeten maken om de functies van de computer aan te spreken. Dit is precies wat een besturingssysteem doet, en een dergelijke machine fungeert dus als besturingssysteem voor in die taal geschreven programma's. De reden dat van een virtuele machine wordt gesproken is dat de virtuele machine zelf vaak een programma is dat wordt uitgevoerd op een bestaand besturingssysteem. De virtuele machine is de verbindende laag tussen de uitgevoerde code en de computerhardware (zoals de microprocessor) waarop het uiteindelijke programma wordt uitgevoerd, eventueel via een ander besturingssysteem. De op een virtuele machine uitgevoerde code spreekt niet direct de "echte" hardware aan, maar gebruikt alleen de functies die worden aangeboden door de virtuele machine. Wanneer voor een bepaald platform (hardware en eventueel besturingssysteem) een virtuele machine gemaakt is, kan elk programma dat voor deze virtuele machine geschreven is, worden uitgevoerd. De implementatie van een virtuele machine kan in elke andere programmeertaal gebeuren. Op deze manier wordt platform-onafhankelijkheid bereikt: programma's kunnen worden uitgevoerd op elk systeem waarvoor de virtuele machine is geïmplementeerd. Overdraagbaarheid wordt een kwestie van het implementeren van een virtuele machine, in plaats van een probleem dat voor elk programma afzonderlijk moet worden opgelost. Een voorbeeld van een programmeertaal-specifieke virtuele machine is de **Java Virtual Machine** (JVM). Het resultaat van de compilatie van een Java programma wordt bytecode genoemd. Een JVM kan dan deze bytecode instructies één voor één interpreteren door ze te vertalen naar één of meerdere echte machine-instructies. Ook zijn er JVM's die de bytecode just in time (JIT) compileren naar de instructies van het platform. Dit levert uiteraard prestatiewinst op in vergelijking met interpretatie. - **Emulatie:** Een virtuele machine die de hardware van de computer emuleert, is niet gericht op een programmeertaal (zoals Java of Pascal), maar emuleert een fysieke computer (dat wil zeggen de processor en andere hardware), zodanig dat een bestaand besturingssysteem op deze emulatie kan draaien, alsof het een fysieke computer betreft. Met een dergelijke virtuele machine is het dus bijvoorbeeld mogelijk om Windows te emuleren in een GNU/Linux-omgeving, of omgekeerd. - **Applicatie-specifiek:** deze vorm is vrij recent en hierbij wordt er meestal geen volledige computer nagebootst. Een bekend voorbeeld van een applicatie-specifieke virtualisatietechnologie is Docker: hierbij draaien de applicaties in een zogenaamde container die rechtstreeks de kernel aanspreekt van een Linux besturingssysteem dat op de host computer draait. --- ## Hypervisor - Software om **virtuele machines** aan te **maken** en op te **starten**.
Notes: Een hypervisor is software die het mogelijk maakt om meerdere virtuele machines (VM's) tegelijk te laten draaien op één fysieke hostcomputer. Hij vormt als het ware de laag tussen de hardware en de VM's en regelt de volledige virtualisatie. Dankzij de hypervisor kunnen verschillende VM's dezelfde fysieke hardware veilig en efficiënt delen, zoals processor (CPU), geheugen (RAM), opslag en netwerk. De hypervisor verdeelt deze bronnen, zodat elke VM onafhankelijk kan werken alsof ze over eigen hardware beschikt. Via de hypervisor kan je ook nieuwe VM's aanmaken, bestaande VM's beheren en hun configuratie aanpassen. Er bestaan twee types hypervisors (zie volgende slide). --- ## Type 1 vs. type 2 Hypervisors
Notes: Een Type 1 Hypervisor ligt direct op de hardware (bare metal), dat wil zeggen dat er geen besturingssysteem ligt tussen de hypervisor en de fysieke apparatuur. Hierdoor kan de hypervisor rechtstreeks de nodige hardware bronnen aanspreken en kunnen er meer resources aan de virtuele machines gegeven worden. Eén van de nadelen van een Type 1 hypervisor is dat je enige technische kennis moet hebben om er mee te kunnen werken. Type 1 hypervisors worden dan vooral ook gebruikt voor en door servers. Enkele voorbeelden zijn VMWare ESXi, Citrix Xen, KVM en Microsoft Hyper-V. Een Type 2 Hypervisor ligt in tegenstelling tot een Type 1 niet direct op de hardware: er ligt wel een besturingssysteem onder. Dit kunnen er verschillende zijn zoals: Windows, macOS en Linux. Voordelen die je hebt bij Type 2 is dat hij aan de praat te krijgen is zonder al te veel technische kennis, meestal kunnen Type 2 Hypervisors geïnstalleerd worden zoals een programma. Een nadeel is dat Type 2 niet zo krachtig en efficiënt zijn als Type1 omdat de hypervisor de hardware moet aanspreken via functies van het besturingssysteem. Enkele voorbeelden van Type 2 Hypervisors zijn Oracle VirtualBox, VMWare Workstation en Parallels Desktop. Wanneer op een toestel een Type 1 Hypervisor geïnstalleerd is, kan je er geen Type 2 naast installeren. Daarentegen is het wel mogelijk om meerdere Type 2 hypervisors op hetzelfde fysieke toestel te installeren. --- # 2.3 Multi-tenancy --- ## Single-tenant vs. Multi-tenant
- Single-tenant omgeving: - Voor één gezin - Lager gebruik van beschikbare ruimte - Meer afscherming - Duurder
- Multi-tenant omgeving: - Meerdere gezinnen - Hoger gebruik van beschikbare ruimte - Minder afscherming - Goedkoper
Notes: Multi-tenancy (meerdere huurders) is een concept dat al veel ouder is dan computers. Wanneer we bijvoorbeeld kijken binnen de immo-markt, kan je ook een onderscheid maken tussen single-tenant en multi-tenant omgevingen. Een alleenstaande woning is een mooi voorbeeld van een single-tenant omgeving. Het gebouw (huis) is typisch gebouwd voor één afzonderlijk gezin, bevat redelijk wat bouwgrond, en biedt meer afscherming dan een appartement, maar tegen een hogere kostprijs. Een appartement is daarentegen een gebouw dat gedeeld is tot meerdere (soms zelfs honderden) gezinnen, en gebruikt de beschikbare oppervlakte dus veel optimaler doordat de gezinnen dichter bij elkaar leven. Hierdoor is er minder afscherming tussen de gezinnen, maar een appartement is dan ook vaak goedkoper dan een alleenstaande woning. Ook binnen de IT-wereld kunnen we dit onderscheid maken. Zo wordt jouw computer bijvoorbeeld enkel door jou gebruikt, terwijl een fysieke server in een datacenter gedeeld kan worden over verschillende klanten, bijvoorbeeld in de vorm van virtuele machines. En ook software kan single- of multi-tenant zijn, zoals bijvoorbeeld Microsoft Word die je lokaal kan installeren voor privégebruik, maar waarvan er ook een gedeelde versie beschikbaar is via Office 365 Web Apps in de web browser. --- ## Kenmerken van Multi-tenancy - Bronnen worden **gedeeld**, in tegenstelling tot een dedicated of isolated omgeving - Een **tenant** (huurder) is een gebruiker of groep van gebruikers met gemeenschappelijke toegang - Multi-tenancy kan geïmplementeerd worden in **verschillende vormen**, zowel op niveau van hardware als software - **Virtualisatie** speelt een belangrijke rol bij multi-tenancy - Multi-tenancy is een belangrijk kenmerk van **cloud computing** Notes: Een fundamenteel kenmerk van multi-tenancy is dat (computer)bronnen mogelijks gedeeld worden over verschillende tenants. Dit in tegenstelling tot een dedicated of isolated omgeving waar elke tenant zijn eigen (fysieke) hardware bronnen heeft, zoals bv. een dedicated server in een datacenter. Een tenant (NL: huurder) is in deze context een individuele gebruiker, of een groep van gebruikers met gemeenschappelijke toegang. Multi-tenancy kan geïmplementeerd worden in verschillende vormen, afhankelijk van wat gedeeld is. Zo kan hardware virtueel gedeeld worden, waarbij elke tenant recht heeft op een deel van de beschikbare hardware (bv. in de vorm van een virtuele machine), maar het is ook mogelijk om multi-tenancy te implementeren op niveau van de software, bijvoorbeeld door een online webapplicatie te ontwikkelen die gebruikt wordt door verschillende klanten (de tenants). Het spreekt voor zich dat virtualisatie een belangrijke rol speelt bij multi-tenancy. Via virtualisatie kunnen we immers fysieke hardware opdelen in virtuele hardware, en dus virtuele bronnen toekennen aan de verschillende gebruikers. Tenslotte is het zo dat multi-tenancy een heel belangrijke rol speelt binnen cloud computing, zoals we verderop in dit hoofdstuk zullen zien. --- ## Voordelen van multi-tenancy - Efficiënter gebruik van de beschikbare bronnen, want meerdere eindgebruikers kunnen bediend worden door één toestel of instantie van de applicatie - Daardoor leidt multi-tenancy tot lagere operationele kosten dus **goedkoper** voor de eindgebruiker Notes: Het toevoegen van multi-tenancy, op niveau van de hardware of op niveau van de software, heeft enkele belangrijke voordelen. Het belangrijkste voordeel van multi-tenancy is dat dit, net zoals virtualisatie, kan zorgen voor een efficiënter gebruik van de beschikbare bronnen. Het spreekt voor zich dat het voordeliger is om één zware fysieke server te delen onder verschillende klanten, dan voor elke klant een aparte fysieke server te installeren en configureren die mogelijks het meeste van de tijd in rust (idle) is. Daarom leidt multi-tenancy dus ook tot lagere operationele kosten (minder servers = minder stroom en minder koeling nodig) wat ook de eindgebruiker ten goede komt, die kan de nodige bronnen namelijk huren aan een lagere prijs. --- ## Nadelen van multi-tenancy - Minder isolatie en verhoogde **beveiligingsrisico's**, in het geval van een inbreuk op de beveiliging op één enkele instantie kunnen meerdere tenants worden getroffen - Minder **prestatie-isolatie**, grote tenants kunnen de prestaties van kleinere tenants negatief beïnvloeden Notes: Doordat bronnen gedeeld zijn brengt multi-tenancy echter ook enkele risico's met zich mee. Het eerste risico situeert zich op vlak van de beveiliging: als een gedeelde server gecompromitteerd is, zal dit mogelijks invloed hebben op verschillende onafhankelijke klanten (de tenants die van deze server gebruik maken), wat niet het geval is bij dedicated hardware. Daarnaast kunnen de verschillende tenants elkaars prestaties negatief beïnvloeden: als een zware/grote tenant intensief gebruik maakt van de fysieke computerbronnen kan het zijn dat kleinere tenants hiervan de impact ondervinden en hun applicaties dus traag zijn ondanks ze amper een belasting plaatsen op de server. --- ## Strikte scheiding tenants - Een multi-tenant omgeving moet zowel een duidelijke **scheiding** van **prestaties** als **gegevens** garanderen. Hoewel één hardware- of software-instantie wordt gedeeld, moet deze zich ten opzichte van elke tenant als een aparte instantie gedragen. Notes: Een goede multi-tenant omgeving moet dus zorgen voor een duidelijke scheiding van zowel de gegevens (data) als de prestaties. Hoewel multi-tenancy draait rond het delen van bronnen, zou dit eigenlijk niet merkbaar mogen zijn voor de eindgebruiker: de gedeelde instantie moet zich dus gedragen als een aparte (dedicated) instantie ten opzichte van elke tenant. --- # 2.4 Cloud computing --- > Cloud computing is het op aanvraag leveren van IT-resources via het internet, met een pay-as-you-go prijsmodel (je betaalt enkel wat je gebruikt). In plaats van zelf fysieke datacenters en servers te kopen, te beheren en te onderhouden, kan je technologische diensten zoals rekenkracht, opslag en databanken gebruiken wanneer je ze nodig hebt via een cloudprovider ... > > ~ https://aws.amazon.com/what-is-cloud-computing/ Notes: Bij cloud computing worden computerbronnen, zoals hardware, software en gegevens, op aanvraag beschikbaar gesteld via een netwerk (vaak het internet). De term is afkomstig uit de schematechnieken uit de informatica waar een groot decentraal netwerk (zoals het internet) met behulp van een wolk wordt aangeduid. --- ## De cloud - "Wolk van computers" - **Virtualisatie** van serveromgeving - Eindgebruiker weet niet ... - ... waar de software precies draait - ... soms ook niet op hoeveel servers - Eindgebruiker is ... - ... geen eigenaar meer van hardware/software - ... niet verantwoordelijk voor onderhoud - **Schaalbare** virtuele infrastructuur Notes: De cloud (Nederlands: wolk) staat voor een netwerk dat met al de computers die erop aangesloten zijn een soort "wolk van computers" vormt, waarbij de eindgebruiker niet weet op hoeveel of welke computer(s) de software draait of waar die computers precies staan. De gebruiker hoeft op deze manier geen eigenaar meer te zijn van de gebruikte hard- en software en is dus ook niet verantwoordelijk voor het onderhoud. De details van de informatietechnologische infrastructuur worden aan het oog onttrokken en de gebruiker beschikt over een "eigen" schaalbare, virtuele infrastructuur. De cloud is dus een techniek waarmee schaalbare online diensten kunnen worden aangeboden. Zonder de mogelijkheid tot schalen heeft een aangeboden online dienst geen betrekking op cloud computing. --- ## Kenmerken van cloud computing - **Bronnen** beschikbaar **op aanvraag** (on demand), vaak zonder tussenkomst van een fysiek persoon - Bronnen: hardware, software en/of opslag - Vaak: groot aantal servers in datacenter die door iedereen gehuurd kunnen worden, bijvoorbeeld als VM's - Vaak via een **pay-as-you-go** pricing model (kostprijs afhankelijk van effectief verbruik) - **Elasticiteit**: mogelijkheid om automatisch aan te passen in functie van vraag - **Multi-tenancy** Notes: Een belangrijk kenmerk van cloud computing is dus dat bronnen op aanvraag beschikbaar worden gesteld aan de eindgebruikers. Wanneer eindgebruikers bronnen aanvragen, bijvoorbeeld in de vorm van een virtuele machine, worden deze ook vaak volledig automatisch geprovisioneerd, dus zonder tussenkomst van een fysiek persoon aan de kant van de aanbieder. Onder bronnen verstaan we hier vooral een combinatie van hardware, software en/of opslag. Een cloud omgeving is dan ook vaak een collectie van een heel groot aantal servers (soms zelfs duizenden of meer), die zich bevinden in één of meerdere datacenters en waarop virtuele machines gemaakt kunnen worden voor de eindgebruikers. Vaak kunnen deze bronnen gehuurd worden via een pay-as-you-go pricing model. Dit wil zeggen dat de eindgebruiker een huurprijs betaalt op basis van de bronnen die hij effectief gebruikt, of op basis van het aantal bronnen dat voor hem gereserveerd is. Een ander belangrijk kenmerk van cloud computing is elasticiteit, wat wil zeggen dat het aantal voorziene bronnen automatisch aangepast kan worden op basis van de huidige belasting of vraag (zie verder). Cloud computing is daarnaast een mooi voorbeeld van multi-tenancy. --- ## Deployment modellen - **Publieke** cloud omgeving - beschikbaar voor iedereen, via het internet - **Private** cloud omgeving - toegang beperkt tot één of meerdere organisaties - kan in privaat (self hosted) of publiek (colocated) datacenter - **Hybride** cloud omgeving - combinatie van meerdere modellen - Er bestaan ook vele afgeleide vormen - bv. community cloud, distributed cloud, multi-cloud, ... Notes: Een cloud omgeving kan uitgerold worden volgens verschillende deployment modellen. In de traditionele zin van cloud computing werkt men publiek of extern. De software en data staan dan volledig op de servers van de externe dienstverlener en er wordt een generieke (voor alle afnemers gelijke) functionaliteit geleverd. De publieke cloud omgeving is dus beschikbaar voor iedereen, en wie wil kan dus virtuele bronnen aanvragen via het internet. Bij een private "cloud" werkt men op een (virtueel) private ICT-infrastructuur. In deze wolk heeft de gebruiker volledige controle over data, beveiliging en kwaliteit van de dienst. De applicaties die via de private cloud beschikbaar worden gemaakt, maken gebruik van gedeelde infrastructuurcomponenten die worden ingezet voor meerdere afnemers, bijvoorbeeld afdelingen van een bedrijf, maar worden zelf niet gedeeld met andere klanten. De verantwoordelijkheid voor het onderhouden van de private cloud kan worden uitbesteed aan een leverancier van ICT-diensten. De fysieke locatie van de infrastructuurcomponenten kan zowel de cloud leverancier als de klant zelf zijn. Vaak worden er meerdere cloud omgevingen met verschillende deployment modellen gecombineerd, om de voor- en nadelen van beide te combineren. Als meerdere interne en/of externe cloud omgevingen samen worden gebruikt wordt er gesproken van een hybride cloud. Dit kan bijvoorbeeld nodig zijn om legale redenen: als gevoelige data door een bepaalde wetgeving niet bewaard mag worden op een server in het buitenland, kan deze opgeslagen worden binnen een private cloud omgeving, terwijl zwaar rekenwerk verricht kan worden op een publieke cloud omgeving met een grotere pool aan computerbronnen. In het algemeen zijn publieke cloud omgevingen veel groter dan private cloud omgevingen en beschikken deze dus over veel meer computerbronnen (zie ook verder). Om een private cloud omgeving op te zetten heb je echter niet veel nodig en tegenwoordig kan je dit zelfs al doen op één krachtig toestel met enkele virtuele machines, bijvoorbeeld via de gratis OpenStack software. --- ## Publieke cloud service modellen - **Infrastructure** as a Service (IaaS) - **Platform** as a Service (PaaS) - **Software** as a Service (SaaS) Notes: Binnen de cloud worden diensten vaak aangeboden volgens één van bovenstaande 3 service modellen. Er bestaan ook vele afgeleide modellen (BPaaS, FaaS, DaaS, DBaaS, SECaaS, ...), maar deze zijn altijd afgeleid van één van deze basismodellen. --- ## Infrastructure as a Service (IaaS) - Infrastructuur virtueel beschikbaar voor gebruiker - Gebruiker heeft controle over besturingssysteem, software en (virtuele) hardware - Amazon EC2, ... Notes: Bij infrastructure as a service (IaaS) wordt infrastructuur aangeboden via virtualisatie of hardware-integratie. In deze vorm heeft de gebruiker volledige vrijheid over de hardware en kan de gebruiker dus onder andere het besturingssysteem, de software en (virtuele) hardware kiezen. Typisch worden bij IaaS virtuele machines aangeboden aan de eindgebruiker waarop deze extern kan inloggen (bv. via SSH). --- ## Platform as a Service (PaaS) - Platform en diensten (bv. toegangsbeheer) aangeboden - Gebruiker heeft controle over software, maar geen controle over onderliggende hardware - Microsoft Azure App Service, Google AppEngine, ... Notes: Bij platform as a service (PaaS) worden door de aanbieder een aantal diensten aangeboden bovenop de infrastructuur. Voorbeelden van diensten in deze laag zijn toegangsbeheer, identiteitenbeheer, portaalfunctionaliteiten en integratiefaciliteiten. De PaaS-laag bevat ook vaak één of meerdere frameworks zoals Python, .NET of Java, waardoor gebruikers wel beperkter zijn in mogelijkheden dan bij IaaS. --- ## Software as a Service (SaaS) - Aanbieden applicaties - Gmail, Office 365, Salesforce, ... Notes: Bij software as a service (SaaS) biedt de aanbieder eindapplicaties aan "via de cloud". Deze applicaties kunnen van allerlei soort zijn zoals bv. e-mail, klantenbeheer, personeelsbeheer, videoapplicaties, ... . De dienstaanbieder heeft de volledige controle over de applicaties, maar de klant of een derde partij die het beheer uitvoert voor de klant kan in veel gevallen wel de applicatie configureren en functioneel beheren. In veel gevallen zijn de SaaS-applicaties te gebruiken via een webbrowser op een computer. --- ## Overzicht publieke cloud service modellen
Notes: Bovenstaande figuur toont het onderscheid tussen de verschillende deployment modellen. Het belangrijkste verschil tussen de modellen is welke delen (lagen) beheerd worden door de cloud provider en welke beheerd worden door de gebruiker van de cloud-diensten. Bij public cloud computing heeft de eindgebruiker dus de meeste controle binnen IaaS, maar dit vereist ook de meeste technische kennis van de eindgebruiker. Binnen SaaS daarentegen is de controle door de eindgebruiker vrij beperkt. --- ## Elasticiteit van de cloud - De mate waarin het **aanbod** zich **afstemt** op een stijgende of dalende **vraag** - Automatische **provisie** van benodigd aantal **instanties** - Publieke cloud: **"oneindige"** hoeveelheid **bronnen** Notes: Elasticiteit is een belangrijk begrip dat cloud computing onderscheidt van andere vormen zoals grid computing. Elasticiteit is de mate waarin het aanbod zich afstemt op een stijgende of dalende vraag. Concreet wil dit zeggen dat er meer (virtuele) bronnen ingezet worden wanneer er meer gebruikers de cloud applicatie gebruiken (piekbelasting), en er eventueel bronnen vrijgegeven kunnen worden wanneer de belasting op de applicaties daalt. Sommige cloud omgevingen bieden de mogelijkheid om dit proces te automatiseren. Hierbij wordt er automatisch een aantal instanties voorzien en kan dit aantal wijzigen in de tijd afhankelijk van de belasting. Een uitdaging hierbij is om het aantal benodigde instanties correct in te schatten. Dit kan zowel proactief (voorspellen op voorhand) als reactief (als antwoord op wijziging in vraag) zijn. Vaak wordt hier gebruikgemaakt van AI modellen die op basis van historische data een voorspelling doen voor de mogelijke belasting in de toekomst. Publieke cloud omgevingen bestaan vaak uit duizenden servers en bieden een "oneindige" hoeveelheid aan bronnen. Het werkelijke aantal bronnen is uiteraard eindig, maar dergelijke omgevingen bevatten vaak meer bronnen dan één gebruiker ooit nodig zal hebben, vandaar de term "oneindig". Door deze oneindige hoeveelheid kunnen individuele applicaties dus opschalen of neerschalen naargelang de vraag. Elasticiteit is dus een belangrijk kenmerk van publieke cloud omgevingen! ---
Notes: Idealiter zijn er altijd net voldoende bronnen voorzien voor de verschillende applicaties die draaien, afhankelijk van de huidige belasting van de eindgebruikers. Soms kan het aantal bronnen echter verkeerd ingeschat zijn en spreken we van over- of under-provisioning. **Over-provisioning** wil zeggen dat er meer middelen toegewezen zijn dan nodig. Dit dient vermeden te worden aangezien dit onnodige kosten met zich meebrengt. De applicaties gaan altijd vlot draaien, maar vaak zullen er instanties zijn die niets staan te doen. De meeste cloud providers rekenen echter het aantal voorziene (= provisioned) bronnen aan en dus niet het werkelijke aantal gebruikte bronnen, waardoor over-provisioning dus zorgt voor een meerkost die vermeden kan worden. **Under-provisioning** wil zeggen dat er minder middelen beschikbaar zijn dan nodig om de applicaties correct te laten draaien. Under-provisioning moet vermeden worden, want dit kan er voor zorgen dat applicaties heel traag reageren of soms zelfs volledig crashen, met mogelijks verlies van klanten tot gevolg. Bron: - "Above the Clouds: A Berkeley View of cloud computing", Armbrust et al. --- # 2.5 Cloud platformen: voorbeelden Notes: **_Deze sectie is louter ter info en behoort niet tot de leerstof van het examen._** In de volgende slides zullen we enkele bekende cloud platformen bespreken. Deze platformen bieden een breed scala aan diensten volgens de verschillende cloud service modellen (IaaS, PaaS, enz.). De keuze van een cloud platform hangt af van diverse factoren zoals de behoeften van de applicatie, de prijs, de functionaliteiten, ... . Er bestaan dan ook veel verschillende platformen die elk hun eigen specialiteiten hebben, meer dan we in deze sectie kunnen bespreken. --- ## Amazon Web Services (AWS) - Gelanceerd in 2002 - Grootste cloud provider wereldwijd - Bekende diensten: EC2, S3, RDS, Lambda
_Ontdek AWS in de NPE!_ Notes: Amazon Web Services (AWS), gelanceerd in 2002, is de grootste cloud provider wereldwijd. AWS biedt onder andere Elastic Compute cloud (EC2) voor virtuele machines, Simple Storage Service (S3) voor objectopslag, Relational Database Service (RDS) voor relationele databases en Lambda voor serverless computing. --- ## Microsoft Azure - Gelanceerd in 2008 - Tweede grootste cloud provider - Integratie met Microsoft producten (Windows Server, SQL Server, Active Directory) - Bekende diensten: Virtual Machines, Azure SQL Database, Azure DevOps, Azure OpenAI
_Ontdek Azure bij System Engineering Lab!_ Notes: Microsoft Azure, gelanceerd in 2008, is de tweede grootste cloud provider wereldwijd. Het biedt naadloze integratie met Microsoft producten zoals Windows Server, SQL Server en Active Directory. Azure biedt diensten zoals Virtual Machines, Azure SQL Database, Azure DevOps en Azure OpenAI. --- ## Google cloud Platform (GCP) - Gelanceerd in 2008 - Bekende diensten: Compute Engine, BigQuery, Kubernetes Engine, TensorFlow
Notes: Google cloud Platform, gelanceerd in 2008, staat bekend om zijn data-analyse en machine learning diensten. GCP biedt onder andere Compute Engine voor virtuele machines, BigQuery voor data-analyse, Kubernetes Engine voor het beheren van Kubernetes clusters en TensorFlow voor machine learning. --- ## DigitalOcean - Gelanceerd in 2011 - Gericht op ontwikkelaars en kleine tot middelgrote bedrijven - Bekende diensten: Droplets (virtuele machines), Managed Databases, Kubernetes - Sterk in eenvoud en gebruiksvriendelijkheid
Notes: DigitalOcean, gelanceerd in 2011, richt zich op ontwikkelaars en kleine tot middelgrote bedrijven. Het staat bekend om zijn eenvoud en gebruiksvriendelijkheid. DigitalOcean biedt diensten zoals Droplets voor virtuele machines, Managed Databases en Kubernetes voor het beheren van clusters. ---