Amazon Web Services (AWS) is de verzameling diensten, die samen het cloud computing platform vormen van de Amerikaanse e-commercegigant Amazon. Van webapplicaties tot opslag tot analytics biedt AWS een compleet ecosysteem aan oplossingen. De Amazon cloud is verreweg de grootste ter wereld, met een straatlengte voorsprong op concurrenten als Microsoft en Google. Bekende klanten zijn onder andere: Netflix, Reddit, Quora, FourSquare, Pinterest, NASA, de CIA en natuurlijk Amazon zelf. Kortom, AWS is enorm populair en zeker de moeite waard om eens van dichtbij te bekijken.

 

Diensten

AWS is een ecosysteem van een breed scala aan cloud diensten. Die diensten kun je apart gebruiken, maar je kunt ze ook integreren en met elkaar laten samenwerken. De mogelijkheden zijn zeer uitgebreid; van heel erg specialistische softwarepakketten (voor bijvoorbeeld machine learning) tot de daadwerkelijke kern van de cloud: rekenkracht en opslag. De belangrijkste diensten zijn onder te verdelen in duidelijke categorieën, zoals Compute, Networking, Storage, Database en Analytics. Onder de eerste categorie valt het vlaggenschip van AWS: de Amazon Elastic Compute Cloud (EC2). Zoals de naam al aangeeft, kunnen we op een elastische manier (dat wil zeggen: rekbaar en flexibel) rekenkracht (“compute” kracht) van Amazon krijgen.

Elastisch

De rekenkracht van EC2 kan met een aantal netwerkdiensten worden aangeboden en verdeeld. We kunnen virtuele servers op verschillende locaties neerzetten en de belasting van die servers automatisch verdelen met een load balancer. Voor de dataopslag categorie kent AWS een tweede vlaggenschip: de Amazon Simple Storage Service (S3). EC2 en S3 zijn gemakkelijk aan elkaar te koppelen om combinaties te bouwen van gigantische hoeveelheden rekenkracht en opslag. Naast het bovenstaande biedt AWS een grote hoeveelheid extra “elastische” oplossingen, die daarboven op kunnen (samen) werken: van speciale elastische databases, tot elastisch streamen, tot elastische analytics met Hadoop via Elastic MapReduce.

Wat kun je er mee?

Dat zijn een hoop wolkige termen over cloud computing, maar wat kan je er nou concreet mee? Het korte antwoord is: met AWS wordt het gemakkelijker om websites en webapplicaties te bouwen en te beheren. Een belangrijk gegeven hierbij is dat die websites en applicaties schaalbaar zijn en dus kunnen draaien op één enkele machine of op een gigantische cluster van duizenden computers verspreid over de hele wereld. Mocht je applicatie bijvoorbeeld aandacht krijgen in de nieuwste editie van Linux Magazine (dat vanzelfsprekend leidt tot gigantische hoeveelheden bezoekers), dan hoef je je met AWS geen zorgen te maken dat je server crasht of dat je te weinig rekenkracht tot je beschikking hebt. Particulieren en bedrijven gebruiken AWS onder andere voor: het opslaan van publieke- of privédata, het hosten van websites of webapplicaties, het hosten van databases en grootschalige big data oplossingen, verwerking van zakelijke of wetenschappelijke data en als schaalbare oplossing voor het afhandelen van piekbelasting.

 Jargon

De wereld van AWS gaat gepaard met een flinke hoeveelheid jargon. Een virtuele server is een instance met een Amazon EBS-volume als opslag (EBS staat voor Elastic Block Storage), die draait vanuit een datacentrum in een Availability Zone (het geografische gebied waarin je de virtuele server wilt plaatsen). De instance draait een kopie van een Amazon Machine Image (AMI). Dat is een besturingssysteem image, dat is geconfigureerd om binnen de AWS cloud te draaien. Meerdere virtuele servers bevinden zich in een eigen Virtual Private Cloud (VPC), een virtueel privénetwerk met een eigen adresgroep. Je kunt bijvoorbeeld via een VPN verbinden met je VPC, en zo je eigen privénetwerk verbinden met je cloud netwerk. Het verdelen van inkomend verkeer gaat volgens je opgegeven Security Groups, door middel van de Load Balancer. In feite kun je in alle gevallen simpelweg doen alsof instances fysieke computers zijn, maar dan met het voordeel dat ze goedkoper zijn, geen onderhoud kosten en mee kunnen schalen met je inkomende dataverkeer.

 Kosten

Er zijn verschillende manieren om virtuele servers aan te schaffen. Dit kan bijvoorbeeld On-Demand, waarbij je per uur betaalt. Dit heeft als voordeel, dat je geen lange termijn verplichtingen aangaat en geen langdurige contracten hoeft te ondertekenen. De allergoedkoopste instance kost $0,0065 per uur. Als je echter weet dat je sowieso voor langere tijd de beschikking over een instance wilt hebben, dan kun je een Reserved Instance nemen met een jaarcontract. Voor de goedkoopste instance betaal je dan $0,0045, dus iets minder dan $3,30 per maand. Je kunt de precieze kosten uitrekenen met behulp van de handige AWS Simple Monthly Calculator tool. Dat kan zelfs met verschillende scenario’s, zoals dat je website wordt genoemd op Reddit en er op eens miljoenen gebruikers jouw kant op komen. Dankzij de felle concurrentiestrijd in de cloud computing wereld, onder andere tussen AWS en Microsoft Azure, zijn de prijzen extreem laag.

 Gratis

Er is ook een compleet gratis plan met een aantal beperkingen. Het gratis plan is de perfecte manier om eens rond te kijken en te experimenteren met AWS. Op de website https://aws.amazon.com/free kun je een account aanmaken om AWS gratis uit te proberen. Je kunt één micro instance op EC2 aanmaken met Linux of Windows, met 30 GB EBS storage en allerlei andere extra’s. Onder het plan kun je voor een jaar lang je eigen virtuele server 24/7 laten draaien. Dat is compleet gratis, tenzij je over één van de datalimieten heengaat. Je kunt je via Amazon CloudWatch overigens laten waarschuwen als je in de buurt komt van die limieten.

 Zelf aan de slag

Laten we zelf eens zo’n EC2 instance opzetten. Maak een gratis account aan en ga vervolgens naar de AWS console. Je ziet daar een gigantische lijst van alle diensten, die onderdeel uitmaken van AWS. Als je op EC2 klikt, krijg je een overzicht van alle draaiende instances en andere resources (in dit geval nog niets natuurlijk). Rechtsboven kun je de Availability Zone kiezen, die in eerst instantie automatisch wordt bepaald. Door op Launch instance te klikken, beginnen we het proces om een virtuele server aan te maken.

 Besturingssysteem

De eerste stap is het selecteren van het besturingssysteem. Je ziet onder Quick Start een flinke lijst van de beschikbare AMI’s en er is duidelijk zichtbaar aangegeven welke van die images onder het gratis plan vallen. Je kunt echter ook voorgeconfigureerde AMI’s kopen op de marktplaats of gratis door de community gebouwde AMI’s installeren. In het laatste geval is er vaak al veel extra software voorgeïnstalleerd. Je kunt dus kiezen voor je favoriete Linux-distributie, maar je kunt ook gebruik maken van Amazon’s eigen Linux-distributie Amazon Linux. Deze speciaal voor AWS gebouwde distributie is gebaseerd op Red Hat Enterprise Linux en CentOS en wordt actief door Amazon ondersteund.

 Launchen

Bij de volgende stappen hebben we iets minder keus voor het gratis plan. We kunnen alleen het t2.micro instance type kiezen, bestaande uit één virtuele CPU en 1 GB geheugen. Vervolgens passeren we een aantal geavanceerde instellingen, voegen een volume van 30 GB aan opslag toe en geven onze instance een passende naam. Als laatste stap definiëren we een security group, die dienstdoet als een soort firewall. Hierin kunnen we aangeven dat we SSH, HTTP en HTTPS verkeer naar onze server willen toestaan. Als we ongeduldig waren geweest, dan hadden we ook na de eerste stap Review and Launch kunnen klikken, waarbij AWS zelf bepaalt wat het beste voor je is. De laatste stap is het downloaden van de private key van de server in een *.pem bestand. Deze gebruik je om via SSH in te kunnen loggen. Nadat we op Launch hebben gedrukt, zien we dat de instance draait. Onder Public DNS zien we de publieke domeinnaam, die we kunnen gebruiken om bij de server te komen.

Nadat onze virtuele server succesvol is opgestart, hebben we een aantal mogelijkheden om met de server te verbinden. Als je op Connect drukt, krijg je een overzicht van de mogelijkheden. Je kunt met een SSH-client op Linux, een PuTTY op Windows of via een SSH-client in de browser met de instance verbinden. Je moet natuurlijk wel de juiste key meegeven om in te loggen.

Om er een functionerende webserver van te maken installeren we een LAMP stack op de server. Dat doen we door middel van de volgende commando’s:

sudo yum update –y

sudo yum install -y httpd24 php56 mysql55-server php56-mysqlnd

sudo service httpd start

sudo chkconfig httpd on

 

We kunnen vervolgens controleren of onze webserver werkt door in de browser naar de publieke domeinnaam van de server te gaan. Eitje!

 Kracht

De echte kracht van AWS zit hem in wat je nu verder met dit soort instances kunt doen. Je kunt bijvoorbeeld verschillende kopieën van dezelfde instance in strategische Availability Zones plaatsen met een load balancer ervoor. Je kunt aparte database-, mail- en storage servers aanmaken, waarmee je webservers communiceren, etcetera. Een steeds vaker voorkomende optie is om verschillende EC2 instances in een ECS (EC2 Container Service) samen te voegen om via een container managementsysteem (zoals Docker) allerlei applicaties te draaien. Je kunt Docker gewoon via yum installeren om je containers te testen op EC2. Vervolgens kun je deze met een simpel commando naar een ECS cluster pushen. Met andere woorden, je hebt met AWS een complete virtuele serverfarm onder je muisknop, die je zo groot en geavanceerd kunt maken als je zelf wilt. Tegen betaling natuurlijk, maar dat zal nog altijd goedkoper zijn dan zelf de fysieke hardware aan te schaffen en te onderhouden.

 Conclusie

Toen Amazon in 2006 begon met het aanbieden van virtuele servers bestond er nog niet zoiets als cloud computing. Sterker nog, de term verkreeg pas bekendheid met de introductie van Amazon’s Elastic Compute Cloud. Inmiddels is het concept niet meer weg te denken uit de moderne IT-wereld. Oorspronkelijk begon Amazon met de dienst om geld te kunnen verdienen aan de overcapaciteit van Amazon-servers. Om het e-commerceplatform draaiende te houden (ook met bijvoorbeeld Black Friday en andere Amerikaanse “shopping holidays”) waren gigantische investeringen in de hardware-infrastructuur nodig. AWS was een goede manier om iets van die investeringen terug te verdienen. De introductie van AWS leidde de weg in naar een on-demand computing industrie waar tegenwoordig duizelingwekkende bedragen in omgaan. Het interessante van AWS is dat Amazon.com het zelf ook gebruikt. Je weet dus dat je goed zit, want de uptime van AWS bereikte in 2014 de “uptime heilige graal” van vijf negens: 99,999%. Als je je bedenkt dat Amazon volgens sommige schattingen ruwweg tien keer meer rekenkracht heeft dan alle grote concurrenten bij elkaar, dan is dat een nog indrukwekkendere statistiek. Kortom, denk je erover na om een applicatie te migreren naar de cloud of om een nieuwe applicatie op te zetten? Dan is AWS de eerste cloud dienst om eens rustig onder de loep te nemen.