Publieke clouds hebben de afgelopen jaren een ongekende groei doorgemaakt. En dat geldt in het bijzonder voor Amazon Web Services (AWS). In april 2015 publiceerde Amazon voor het allereerst de omzetcijfers van AWS. Hieruit bleek dat er in zijn dochteronderneming maar liefst vijf miljard dollar omging. Dit vertegenwoordigt 8 procent van de totale omzet van Amazon.
In 2015 opende het bedrijf zijn eerste Nederlandse vestiging in Den Haag, waar Kamini Aisola leiding heeft over alle activiteiten voor de Benelux. In een recent interview met Computable vertelde zij dat zij Nederland als ‘de poort naar Europa’ ziet.
Het kloppende hart van AWS is S3, de Simple Storage Service. Deze online object store is inmiddels tien jaar oud en wordt gebruikt voor de opslag van biljoenen objecten. Volgens de laatste cijfers uit 2013 was er sprake van twee biljoen objecten, en het aantal opgeslagen objecten verdubbelt elk jaar.
S3 is een doorslaand succes gebleken en vormt de basis voor veel bekende internetdiensten als Dropbox en Pinterest. Een van de redenen voor dit succes is de relatieve eenvoud waarmee data in S3 kan worden opgeslagen. Klanten komen niet rechtstreeks met de onderliggende storage-infrastructuur in contact. Ze krijgen in plaats daarvan toegang tot een reeks van application programming interfaces die S3 API worden genoemd. Het zijn de eenvoud en het alomtegenwoordige gebruik van S3 API die de object store van Amazon zo succesvol maken.
S3 in een notendop
De S3 API is een application programming interface die het mogelijk maakt om objecten (oftewel binaire bestanden) in S3 op te slaan, op te halen, in kaart te brengen en te verwijderen. Bij de introductie van de S3 API in 2006 bood deze ondersteuning voor Rest-, Soap- en Bittorrent-protocollen en een software development kit voor populaire programmeertalen als Java .NET, PHP en Ruby. Het opslaan en opvragen van data verloopt verrassend eenvoudig. Objecten worden gegroepeerd in logische containers die buckets worden genoemd, en kunnen worden benaderd via een platte hiërarchie die simpelweg verwijst naar de naam van het object, de naam van de bucket en de zone binnen AWS waarin de gegevens liggen opgeslagen. Als het Rest-protocol wordt gebruikt, kunnen deze elementen worden gecombineerd binnen een URL die een unieke verwijzing naar het object bevat. Objectbewerkingen kunnen worden uitgevoerd op basis van simpele put- en get-instructies die de data en respons invoegen in de http-header en -body.
De functies van S3 worden weerspiegeld in de api en hebben inmiddels het volwassenheidsstadium bereikt. Voorbeelden zijn:
- Metadata – dit omvat metadata voor het systeem en aanvullende informatie die door de gebruiker wordt toegevoegd wanneer deze een object opslaat.
- Multi-tenancy – S3 biedt ruimte voor talloze klanten, die elk een geïsoleerde en veilige weergave van hun data krijgen te zien.
- Beveiliging en beleidsregels – de toegang wordt beheerd op het niveau van accounts, buckets en objecten.
- Levenscyclusbeheer – objecten kunnen tijdens hun levensduur in uiteenlopende versies in een bucket worden opgeslagen en verspreid over opslaglagen worden beheerd.
- Automatische updates – objecten worden op basis van één transactie/instructie geüpload, bijgewerkt of gekopieerd.
- Zoeken – accounts en buckets kunnen tot op objectniveau worden doorzocht.
- Logging – alle transacties kunnen binnen S3 worden vastgelegd.
- Kennisgevingen – gebruikers kunnen triggers instellen die in het geval van wijzigingen van data in S3 een melding genereren.
- Replicatie – gegevens kunnen tussen AWS-locaties worden gerepliceerd.
- Encryptie – data wordt tijdens de overdracht versleuteld en kan optioneel tijdens opslag worden versleuteld met encryptiesleutels die door het systeem of door de gebruiker worden gegenereerd.
- Facturatie – de tarieven die voor S3 in rekening worden gebracht, zijn gebaseerd op de capaciteit die is benut voor het opslaan en opvragen van data.
Voordelen
Omdat de S3 API al jarenlang zijn marktpositie weet te behouden en zijn functionaliteit het volwassenheidsniveau heeft bereikt, is de oplossing uitgegroeid tot de norm voor objectgebaseerde storage-interfaces. Vrijwel elke leverancier van oplossingen voor object storage biedt naast in eigen beheer ontwikkelde API’s wel een of andere vorm van ondersteuning voor S3. Want deze ondersteuning biedt een aantal voordelen:
- Standaardisatie – gebruikers/klanten van S3 kunnen gebruikmaken van een object store op locatie door simpelweg de objectlocatie in de url te wijzigen (hiervoor moeten de beveiligingsconfiguratie in de cloud wel stroken met de beveiligingsconfiguratie op locatie). Al hun bestaande programmatuur zou met weinig of geen aanpassing in combinatie met S3 moeten werken.
- Volwassenheid – Het functierijke S3 biedt alles wat voor een object store nodig is. Uiteraard is er hier en daar sprake van een paar lacunes (zoals mogelijkheden voor het vergrendelen van objecten, volledige consistentie en het nesten van buckets). Deze ontbrekende mogelijkheden zouden kunnen worden toegevoegd door een beroep te doen op een uitbreidingsmodule van een leverancier van object storage-oplossingen.
- Kennis – organisaties die een beroep willen doen op object store hoeven daarvoor geen speciale platformexpertise aan te trekken. In plaats daarvan kunnen ze een medewerker of partner inschakelen die reeds vertrouwd is met S3.
De compatibiliteit van S3
De huidige S3 API Developer Guide telt 625 pagina’s en wordt maandelijks bijgewerkt. De claims van leveranciers dat hun oplossing compatibel is met S3 API moeten daarom met een korreltje zout worden genomen. Zowel Eucalyptus als SwiftStack beweren ondersteuning te bieden voor S3 API. Als we echter kijken naar hun specifieke functionele ondersteuning blijkt er sprake te zijn van de nodige ontbrekende functionaliteit, met name op het gebied van buckets en objectgebaseerde access control lists (tamelijk belangrijk voor de beveiliging). Wat beveiligingsreferenties betreft maakt AWS momenteel gebruik van twee versies voor digitale ondertekening (v2 en v4), die qua functionaliteit licht van elkaar afwijken (zoals de mogelijkheid om de identiteit van de aanvrager te verifiëren).
Naast de functionaliteit van S3 is er sprake van vraagtekens rond de compatibiliteit wat betreft de opslagprestaties en de manier waarop de interface van S3 wordt geïmplementeerd. Sommige leveranciers vertalen de aanroepen van de S3 API naar hun eigen api in plaats van ze direct te verwerken. Dit kan resulteren in prestatieproblemen als object stores op locatie niet naar behoren functioneren en niet de foutcode of feedback retourneren die verwacht wordt bij een rechtstreeks gebruik van S3.
De S3 API is uitgegroeid tot de standaardmethode voor het opslaan en opvragen van data in object stores. Volwassen ondersteuning voor S3 biedt eindgebruikers aanzienlijke voordelen op het gebied van compatibiliteit en gebruikseenvoud.
Chris Evans, tech blogger
Artikel geschreven in samenwerking met Cloudian.