Cursus
Effectieve gegevensopslag is een cruciaal onderdeel voor het operationele succes van elk bedrijf, in alle sectoren. Hoe meer data je verzamelt, hoe belangrijker de behoefte aan schaalbare, betrouwbare en kostenefficiënte opslagoplossingen wordt.
De juiste gegevensopslag kiezen kan lastig zijn door het enorme aantal opties, zowel in de cloud als on-premises, elk met z’n eigen voordelen en beperkingen.
Dit artikel heeft niet als doel om alle mogelijke opties te behandelen, maar richt zich op schaalbare, betrouwbare en kostenefficiënte diensten: Amazon Simple Storage Service (Amazon S3) en Amazon Elastic File System (EFS).
We beginnen met uitleggen waarom bedrijven opslagsdiensten zouden moeten gebruiken en behandelen daarna de basisprincipes van opslagsystemen. Vervolgens geven we richtlijnen voor het integreren van opslagsdiensten in een operationeel proces. Het laatste deel is een deep dive in geavanceerde concepten, met name gericht op prestatie- en kostenoptimalisatie.
Zoek je een uitgebreide inleiding tot Amazon Web Services (AWS)? Bekijk dan deze cursus Introduction to AWS.
Waarom AWS voor bestandsopslag?
Met alle opslagopties die er zijn, is het belangrijk om te onderbouwen waarom een bedrijf AWS voor bestandsopslag zou moeten gebruiken, en dat is het doel van dit onderdeel.
We beginnen met een vergelijkende analyse tussen AWS-opslagdiensten en traditionele oplossingen, met korte voorbeelden van toepassingen in de praktijk. Hopelijk versterkt dit de relevantie van AWS S3 en EFS in verschillende scenario’s.
Opslagopties vergelijken
Traditionele opslagdiensten en AWS-opslagdiensten bieden verschillende sets functies en voordelen. Hieronder vind je een vergelijkende analyse in de tabel:
|
Features |
Traditionele opslag |
AWS S3 & EFS |
|
Kosten |
Kapitaalkosten voor hardware en doorlopende onderhoudskosten—kunnen in de tijd onvoorspelbaar zijn. |
Het pay-as-you-go-prijsmodel verlaagt de initiële kosten en helpt bij beter kostenbeheer op basis van gebruik. |
|
Compliance |
Bereikt via interne controles en audits en kan extra middelen vereisen om standaarden te handhaven. |
AWS voldoet aan een breed scala aan industrienormen zoals HIPAA en GDPR, wat compliance voor gebruikers vereenvoudigt. |
|
Toegankelijkheid van data |
Vooral toegankelijk vanaf specifieke locaties of netwerken. Externe toegang kan minder veilig en complex zijn. |
Wereldwijd toegankelijk via internet, met hoge beschikbaarheid en gegevensredundantie. |
|
Duurzaamheid van data |
Kwetsbaar voor fysieke schade, diefstal of natuurrampen. |
Bieden 99.99999999999% (11 negens) duurzaamheid door data automatisch te repliceren over meerdere availability zones. |
|
Beheer & onderhoud |
Vereist een toegewijd team voor hardware-onderhoud, software-updates en troubleshooting. |
Wordt beheerd door AWS. Dit verlaagt de beheerlast voor gebruikers. |
|
Prestaties |
Afhankelijk van specifieke hardware en netwerkinfrastructuur. Upgrades kunnen ook kostbaar zijn. |
Bieden aanpasbare prestatieopties. S3 biedt opslagklassen en acceleratiefuncties, terwijl EFS burst-workloads en throughput-modellen ondersteunt. |
|
Schaalbaarheid |
Beperkt door fysieke infrastructuur en vereist handmatige ingrepen om op te schalen. |
Zeer schaalbaar, waardoor je opslag eenvoudig kunt aanpassen zonder vooraf te hoeven inrichten. |
|
Beveiliging |
Afhankelijk van lokale beveiligingsmaatregelen. Vereist aanzienlijke inspanning om dataveiligheid en compliance te waarborgen. |
Bieden uitgebreide beveiligingscontroles, waaronder gegevensversleuteling (in rust en tijdens transport), toegangsbeheer en certificeringen. |
Zowel S3 als EFS hebben een breed scala aan toepassingen in verschillende sectoren. Hieronder staan enkele voorbeelden van use-cases voor beide diensten, die hun relevantie en nut in uiteenlopende scenario’s laten zien.
Amazon S3-use-cases
Laten we eerst kijken naar de use-cases van Amazon Simple Storage Service (S3):
- Websitehosting: S3 host statische websites zoals blogs, marketingwebsites en portfolio’s. De wereldwijde dekking en hoge duurzaamheid zorgen ervoor dat websitecontent snel en betrouwbaar wereldwijd wordt geleverd.
- Back-up en disaster recovery: S3 kan worden gebruikt voor back-ups, data-archivering en noodherstel dankzij de hoge duurzaamheid en beschikbaarheid.
- Datalakes voor analytics: Bedrijven kunnen enorme hoeveelheden gestructureerde en ongestructureerde data aggregeren in S3 voor big data-analyse.
- Contentdistributie en -levering: Mediabedrijven gebruiken S3 om grote video-, audio- en afbeeldingsbestanden op te slaan en te distribueren voor verdere analyse. In combinatie met CloudFront en Content Delivery Network-diensten kan S3 content efficiënt met lage latency aan gebruikers leveren.
EFS-use-cases
Laten we nu de use-cases van Amazon Elastic File System (EFS) bekijken:
- Gedeelde bestandsopslag voor EC2-instances: EFS fungeert als hoog beschikbare en schaalbare bestandsopslag voor EC2-instances. Toepassingen die op meerdere instances draaien, kunnen via EFS data delen. Ideaal voor workloads die bestandssysteemfuncties vereisen zoals hiërarchische opslag, navigeren door mappen en file locking.
- Containeropslag: EFS kan worden gebruikt met gecontaineriseerde applicaties, inclusief die georkestreerd door Amazon ECS en Kubernetes op AWS. Het biedt een persistente opslaglaag voor containers, zodat data behouden blijft na de levensduur van een enkele containerinstantie.
- Big data en analytics: EFS is geschikt voor Big Data Analytics-toepassingen die gedeelde bestandsopslag vereisen. Het kan complexe analytische workloads ondersteunen door de benodigde throughput, IOPS en lage latency te bieden voor het verwerken van grote datasets.
AWS-opslag: de basis
Met al deze inzichten over de S3- en EFS-opslagdiensten is het essentieel om te weten wanneer je welke dienst gebruikt, en dat is het doel van dit onderdeel. We introduceren eerst block-, file- en objectopslag en duiken daarna in de vergelijking tussen S3 en EFS.
Introductie tot block-, file- en objectopslag
Blockopslag, bestandsopslag en objectopslag zijn drie fundamentele soorten gegevensopslagsystemen. Elk dient een ander doel in cloudcomputing en databeheer.
Blockopslag
Blockopslag segmenteert data in blokken, elk met een unieke identifier, wat flexibele en efficiënte gegevensverwerking mogelijk maakt. Amazon Elastic Block Store (EBS) en Instance Store Volumes zijn voorbeelden van blockopslag binnen het AWS-ecosysteem.
Instance Store biedt ephemere opslag die direct is gekoppeld aan een hostcomputer, ideaal voor tijdelijke data. EBS daarentegen biedt persistente block-level opslag, waardoor het geschikt is voor databases, applicaties en bestandssystemen die duurzaamheid en incrementele back-ups via snapshots vereisen.
Bestandsopslag
Bestandsopslag organiseert data in een hiërarchische structuur van bestanden en mappen, vergelijkbaar met een traditioneel bestandssysteem op een computer. Deze intuïtieve methode vereenvoudigt data-toegang en -beheer over verschillende applicaties en diensten heen.
Amazon Elastic File System (EFS) is een voorbeeld van bestandsopslag in de cloud. Het biedt een gedeeld bestandssysteem dat automatisch schaalt en gelijktijdige toegang vanaf meerdere instances ondersteunt.
EFS is vooral nuttig voor applicaties die gedeelde toegang tot bestanden vereisen of voor het serveren van content die door meerdere gebruikers of systemen moet worden benaderd en bewerkt.
Objectopslag
Objectopslag, zoals Amazon S3, is ontworpen voor het opslaan van enorme hoeveelheden ongestructureerde data. In tegenstelling tot block- en bestandsopslag beheert objectopslag data als objecten binnen buckets.
Elk object bevat de data, metadata en een unieke identifier, waardoor efficiënte gegevensopvraging en -beheer op elke schaal mogelijk is. S3 is veelzijdig en ondersteunt uiteenlopende use-cases, van hosting van statische websites tot archivering, met diverse opslagklassen zoals Standard, Standard-Infrequent Access (IA), Glacier Flexible Retrieval en Glacier Deep Archive.
S3 vs. EFS
De keuze tussen Amazon S3 en Amazon Elastic File System (EFS) hangt af van de specifieke vereisten van je applicatie of workload. Laten we de verschillen bekijken:
|
Feature |
Amazon S3 |
Amazon EFS |
|
Datatype |
Ongestructureerde data zoals afbeeldingen, video’s, logs en back-ups. |
Gedeelde bestanden die gelijktijdig door meerdere EC2-instances moeten worden benaderd. |
|
Opslagschaal |
Ontworpen voor enorme hoeveelheden data, schaalbaar tot exabytes. |
Schaalt automatisch mee met je opslagbehoefte zonder handmatige interventie. |
|
Toegangspatroon |
Ideaal voor data met variërende toegangspatronen, van frequent geraadpleegd tot archief. |
Geschikt voor data die consistente en gelijktijdige toegang door meerdere applicaties vereist. |
|
Integratie |
Integreert met AWS-diensten voor dataverwerking, analytics en contentlevering. |
Ondersteunt applicaties die een traditioneel bestandssysteeminterface vereisen. |
|
Opslagklassen |
Meerdere opslagklassen. |
Niet van toepassing. |
|
Kostenoverwegingen |
Opslagkosten variëren per klasse, met opties voor infrequente toegang om kosten te verlagen. |
Kosten gebaseerd op gebruikte opslagcapaciteit, zonder initiële kosten en met automatische schaalvergroting. |
|
Schaalbaarheid en flexibiliteit |
Zeer schaalbaar voor zowel opslagcapaciteit als prestaties. |
Flexibiliteit om te schalen zonder opslag te hoeven provisioneren, en piekbelasting eenvoudig op te vangen. |
Aan de slag met Amazon S3
Nu we het concept van bestandsopslag beter begrijpen, is het tijd om praktisch aan de slag te gaan met een technische implementatie.
Dit onderdeel behandelt het beheren van data met Amazon S3. Concreet leren we hoe je een bucket maakt voor opslag, data ordent in mappen, bestanden uploadt, permissies aanpast voor publieke toegang indien nodig, metadata toepast voor beheer en tot slot de bucket en inhoud verwijdert om resources op te ruimen en extra kosten te vermijden.
De belangrijkste voorwaarde om dit onderdeel succesvol af te ronden is een AWS-account, dat je kunt aanmaken via de AWS-website.
Maak een bucket
Het startpunt van dit onderdeel is de Amazon Web Services Management Console, zoals hieronder getoond:

Met deze console beheer je alle AWS-resources, van compute-instances zoals EC2 tot berichtwachtdiensten zoals SQS, inclusief beveiligingsbeheer.
Eenmaal in de console is de eerste stap het aanmaken van een S3-instantie. Dat kan met de volgende stappen (volg de nummers in de afbeelding hieronder):

We gaan nu verder met nog enkele stappen:

Laten we een paar opmerkingen toevoegen bij enkele van de stappen die we hebben doorlopen:
- Stap 4: We hebben de bucket aangemaakt in de regio US East (Ohio) us-east-2.
- Stap 5: Bucketnamen zijn wereldwijd uniek, dus het is belangrijk om er een te kiezen die nog niet in gebruik is. Zo kan niemand anders, ongeacht locatie, een bucket met dezelfde naam maken.
- Stap 6: Met de optie ACLs enabled kunnen we gedetailleerde rechten instellen voor wie de bestanden in de bucket mag benaderen en wat ze ermee mogen doen. Dit is handig voor toegangsbeheer op bestandsniveau. De optie ACLs disabled geeft ons niet de mogelijkheid om rechten op individuele bestanden in te stellen.
- Stap 8: De optie Bucket owner preferred zorgt ervoor dat wij eigenaar zijn van alle bestanden die in de bucket worden geüpload, ongeacht wie ze uploadt. Dit maakt het beheren van rechten en toegang eenvoudiger.
Laten we de bucket aanmaken met drie extra stappen:


Data uploaden naar de bucket
Na het aanmaken van de bucket zien we hieronder de details. Een bucket is een container die resources kan bevatten. Het uploaden van resources begint met het maken van een map. Laten we starten met deze twee stappen:

Laten we nu de map aanmaken:

Zie je dat de map is aangemaakt!

Tijd om data in de map te uploaden. Laten we een afbeelding uploaden:

We hebben de afbeelding succesvol geüpload!

Toegangsbeheer configureren
Standaard zijn alle bestanden die naar de bucket worden geüpload privé en eigendom van de maker, en alleen de eigenaar kan ze bekijken, bewerken of downloaden. Toch kan het nodig zijn de bucket zo te configureren dat iedereen het bestand kan benaderen—handig als iedereen de foto’s op een website moet kunnen bekijken.
Dit kunnen we doen door publieke toegang tot de afbeelding toe te staan. We zouden dan de Object URL met publieke toegang moeten kunnen openen, maar helaas krijgen we een melding Access Denied.

Om dit op te lossen, moeten we naar het tabblad Permissions op bucketniveau gaan en de Bucket Policy bewerken:
Laten we nu de statement bewerken:
Nu we deze wijzigingen hebben doorgevoerd, wordt de afbeelding eindelijk weergegeven!

AWS-logo na configuratie van het toegangsbeheer
Introductie van Amazon EFS
Dit onderdeel behandelt het aanmaken van een EFS-bestandssysteem, met nadruk op prestatie- en beveiligingsinstellingen.
Maak een security group
We maken eerst een security group door in de linkerzijbalk onder het tabblad Security de optie “Security Groups” te kiezen.

Vervolgens:
- Selecteer je Create security group.
- Gebruik je een duidelijke naam—in ons geval MyDataCampEFSGroup.
- Schrijf je een korte beschrijving van de security group.
- Laat je VPC op de standaardwaarde staan.

We voegen geen inbound rules toe:

Het type van Outbound rule 1 moet All traffic zijn:

Nu de configuratie klaar is, klikken we op de knop Create security group.

De nieuw aangemaakte security group wordt weergegeven in de sectie Security Groups.

Stel je eerste EFS-bestandssysteem in
Vervolgens maken we een EFS-bestandssysteem. We beginnen met zoeken en EFS selecteren:

We klikken nu op Create file system.

We gebruiken een duidelijke naam, laten de VPC-sectie zoals die is en klikken vervolgens op Customize.

Om naar de netwerkinstellingen te gaan, klikken we op Next.

We vullen nu bij de security groups de secties van elke availability zone in met MyDataCampEFSGroup.

Als we klaar zijn, klikken we opnieuw op Next.

De laatste stap laat ons de volledige configuratie controleren. Als alles naar wens is, klikken we op Create.

Als alles succesvol is uitgevoerd, zouden we het nieuw aangemaakte EFS-bestandssysteem moeten zien op het tabblad File systems.

Maak een EC2-instance
De volgende stap is een EC2-instance aanmaken, die EFS de benodigde compute-omgeving biedt en tegelijk toegang geeft tot dezelfde data.
Laten we alles stap voor stap doen! We beginnen met het selecteren van EC2 in de console. Daarna klikken we op Launch instance. We kiezen voor Amazon Linux 2, dat in aanmerking komt voor de free tier.

We maken nu een sleutelpaar om veilig met de instance te verbinden. Het sleutelpaar dat we hier aanmaken heeft een .pem-extensie met de naam efs_ec2_key_pair. Dit bestand wordt vervolgens gedownload en lokaal opgeslagen voor later gebruik.

De standaardopslagcapaciteit is 8GiB, wat voldoende is voor ons scenario, en het aantal instances verhogen we naar 3. De laatste stap is de instance starten door op de knop Launch instance te klikken, waarna het eindresultaat de nieuw aangemaakte instances toont.

Voordat we verder gaan, controleren we of verbinden met de instances mogelijk is. We gebruiken de volgende SSH (Secure Shell)-opdracht:
ssh -i [path_to_the_key] ec2-user@[Public IPv4 address]
Laten we deze opdracht stap voor stap doornemen:
ssh: Dit is het commando dat de SSH-verbinding start.-i [path_to_the_key]: Deze optie specificeert het pad naar ons private SSH-sleutelbestand, dat vereist is voor authenticatie op de externe server.ec2-user: Dit is de standaardgebruikersnaam voor EC2 Linux-instances. Je kunt een andere gebruikersnaam gebruiken als die is geconfigureerd.@: Dit teken scheidt de gebruikersnaam van het adres van de server.[Public IPv4 address]: Dit is het publieke IP-adres van onze EC2-instance. Je vindt dit adres in de AWS Management Console.
Laten we de resultaten van de verbinding met elke instance via SSH bekijken.
Resultaat van de SSH-verbinding voor de eerste instance.

Resultaat van de SSH-verbinding voor de tweede instance.

Resultaat van de SSH-verbinding voor de derde instance.
EFS configureren
In deze laatste stap mounten we de hierboven gemaakte EC2-instances. Dit kan via de algemene EFS-interface.
Voor de eenvoud tonen we het mountproces voor slechts één instance, maar dezelfde aanpak geldt voor de overige instances.
We beginnen met het installeren van de EFS mount helper op elke instance met het volgende commando:
sudo yum install -y amazon-efs-utils

Installatie van de Amazon EFS-utilities—tracelog.
Vervolgens maken we met sudo op de root van onze instances een efs-map aan, en zorgen we ervoor dat we op alle instances dezelfde map gebruiken.
sudo mkdir /efs

Na het succesvol aanmaken van de map is de volgende stap het mounten. De file system ID is de ID van de EFS die we in de EFS-sectie hebben gemaakt, en die gebruiken we in het commando sudo mount -t efs [file system ID]:/ /efs:
sudo mount -t efs fs-088faeea6372efa83:/ /efs

Deze timeout treedt op omdat de security group die is gekoppeld aan het EFS-systeem dat we hebben gemaakt geen inkomend verkeer van onze EC2-instances toestaat. We lossen dit op door de security group in te stellen om deze inkomende verbindingen te accepteren:

We maken nu een nieuwe inbound rule aan:

Een veiligere optie is om een aparte security group voor de EC2-instances te maken en alleen verbindingen van die security group toe te staan. Die configuratie valt buiten de scope van dit artikel.
Nadat dit proces op elke EC2-instance is voltooid, kan het EFS-systeem verbindingen van overal accepteren (inclusief onze EC2-instances). Dit keer krijgen we geen timeouts:

Om zeker te zijn dat het mountproces is geslaagd, moeten we kunnen:
- Een map aanmaken binnen de gedeelde efs-map vanaf één EC2-instance
- Die map benaderen vanaf een andere EC2-instance.
De onderstaande illustratie laat zien hoe de map my_DataCamp_data is aangemaakt vanaf de eerste EC2-instance, samen met een bestand README.txt. Datzelfde README-bestand is zichtbaar op de overige EC2-instances.

EFS-bestanden delen.
Dankzij de kracht van de EFS-configuratie is een bestand dat door de ene instance wordt aangemaakt, toegankelijk voor de andere instances.
Wil je een breder overzicht van het AWS-ecosysteem? Bekijk dan deze cursus AWS Cloud Technology and Services.
Geavanceerde opslagstrategieën
Effectieve opslagstrategieën zijn essentieel voor efficiënt databeheer. Twee kernaspecten hiervan zijn prestatieoptimalisatie en kostenoptimalisatie.
Deze strategieën zijn met name relevant voor Amazon’s Simple Storage Service (S3) en Elastic File System (EFS).
Prestatieoptimalisatie in S3 en EFS omvat het kiezen van passende opslagklassen en throughput-modi om snelheid en efficiëntie te verbeteren.
Kostenoptimalisatie omvat het gebruik van verschillende opslagniveaus op basis van de frequentie van data-toegang en het inzetten van AWS-monitoringtools voor kostenbeheer. Deze strategieën helpen bij efficiënt databeheer en kostenreductie in cloudopslag.
Conclusie
Gefeliciteerd dat je zo ver bent gekomen! We hopen dat deze deep dive je de handvatten geeft om AWS-opslag te gaan gebruiken.
Een effectieve manier om AWS-diensten onder de knie te krijgen is ze toepassen op praktijkscenario’s—niet alleen losstaand, maar ook door meerdere diensten te combineren. Klinkt zo’n oefening interessant? Bekijk dan deze cursus Streaming Data with AWS Kinesis and Lambda.
Als je een baan in de AWS-wereld zoekt, kijk dan zeker naar de relevante AWS-certificeringen in 2024. Ook kan het heel nuttig zijn om de belangrijkste AWS-sollicitatievragen en -antwoorden door te nemen.
Een veelzijdige data scientist die graag zijn kennis deelt en iets terugdoet voor anderen. Zoumana is YouTube-contentmaker en een toonaangevende techschrijver op Medium. Hij haalt plezier uit spreken, coderen en lesgeven. Zoumana heeft twee masterdiploma’s: het eerste in informatica met een focus op machine learning uit Parijs, Frankrijk, en het tweede in data science van Texas Tech University in de VS. Zijn loopbaan begon als softwareontwikkelaar bij Groupe OPEN in Frankrijk. Daarna stapte hij over naar IBM als machine learning-consultant, waar hij end-to-end AI-oplossingen ontwikkelde voor verzekeringsmaatschappijen. Zoumana sloot zich aan bij Axionable, de eerste Sustainable AI-startup met vestigingen in Parijs en Montreal. Daar werkte hij als data scientist en bouwde hij AI-producten—voornamelijk NLP-usecases—voor klanten in Frankrijk, Montreal, Singapore en Zwitserland. Daarnaast wijdde hij 5% van zijn tijd aan research & development. Momenteel werkt hij als senior data scientist bij IFC – the World Bank Group.

