Skip to main content

Scenario 2: S3 Buckets en Content Delivery Network

info

Wegens een beperking van de functionaliteit in de omgeving waarin je werkt (Learner Lab), zal je deze opgave moeten uitvoeren via de AWS cursus die je gebruikte om de theorie te studeren. Je gebruikt daar de Sandbox Environment. In principe heb je daar nog voldoende credits beschikbaar. Je kan daar verder op dezelfde manier werken als voorheen.

S3 Buckets

Zoals je wellicht al ontdekt had in de AWS course die je bij dit labo doorgenomen hebt is S3 een belangrijke service in AWS.
S3-buckets kunnen op heel veel manieren ingezet worden om data op te slaan en deze intern of publiek beschikbaar te stellen.

Een S3 bucket is een object storage en geen gewone file-based storage zoals een disk of een map in je lokale computer. Alles wat in de bucket terecht komt wordt behandeld als een object.

Dergelijke S3 buckets worden op verschillende manieren ingezet bijvoorbeeld om logs bij te houden, statistische data op te slaan, backups, application data,...

Je kan er dus bijvoorbeeld ook op een makkelijke manier een statische website (of enkel de statische componenten) op bewaren. Het is zeker geen "good practice", maar zo kan je heel snel een dergelijke statische website publiek toegankelijk maken. Eindgebruikers kunnen dan gewoon surfen naar de unieke URL van de S3-bucket om de website (of eender welk object als je de naam of het pad kent) te bekijken.

info

Lees even de documentatie van AWS over het hosten van statische webpagina's met S3 buckets.

  • Maak zelf even, op basis van bovenstaande documentatie of een voorbeeld, een statische website (of webpagina) beschikbaar via een S3 bucket.
    Probeer ergens een voorbeeldwebsite met wat figuren of andere media te zoeken (of een zelfgemaakte website uit een ander vak?) en deze als basis te gebruiken.
  • Probeer deze ook effectief uit door te surfen naar de website (pagina).
warning

Zoals eerder aangehaald is dit niet ideaal omdat je de S3-bucket (beperkt) publiekelijk beschikbaar moet stellen!

Content Delivery Network (CDN)

Een Content Delivery Network zorgt ervoor dat je data (bv website, API,...) wereldwijd vlot bereikbaar is met een lage latency en hoge bandbreedte. Dat is niet zo evident. Als je, zoals in onze vorige scenario's, een IAAS uitrolt, dan doe je dat in een bepaalde regio binnen AWS, bv. US East (N. Virginia). Wil je zelf of je eindgebruikers dan gebruik maken van je diensten binnen je uitgerolde netwerk dan moeten ze via de klassieke internetwegen doorgestuurd worden tot in de regio van AWS. Pas dan wordt de connectie in AWS verder intern verzorgd. Je bent dus afhankelijk van je provider en alle tussenliggende backbone provders met alle vertagingen en bandbreedte beperkingen van dien.

Een CDN brengt daar een oplossing voor door wereldwijd gebruik te maken van Edge Locations van AWS.

drawing

Dat betekent enerzijds dat eindgebruikers, om een dienst aan te spreken, een connectie zullen maken met het AWS netwerk via een Edge location die geografisch dicht bij hun eigen locatie zit. Op die manier ben je maar beperkt onderhevig aan de "klassieke" internetwegen. Eenmaal verbonden met het AWS netwerk geniet je daar van de heel hoge bandbreedtes tussen AWS regions en de Edge Locations

Daarnaast gebruikt een CDN in zo'n Edge locations nog enkele technieken om de content supersnel aan te leveren aan de gebruikers. De belangrijkste daarvan is caching waardoor bv streaming media, images of andere "zware" content onmiddellijk bereikbaar is voor de eindgebruikers i.p.v. dit van de originele region te moeten aanleveren. Uiteraard levert dergelijke CDN ook voordelen op, op oa. het gebied van security en kostprijs.

CDN toegepast

  • Het is nu dan ook vrij makkelijk om onze bestaande website (via de Autoscaling Group & LB) wereldwijd supersnel aan te bieden door deze bereikbaar te maken via CloudFront, de productnaam van CDN in AWS.
    • Creëer een nieuwe CDN distributie voor je website door deze te laten verwijzen naar je "Application Load Balancer".
    • Test uit of je effectief ook kan surfen naar je website via de CloudFront url.
info

Aangezien je deze opgave in een andere AWS-omgeving maakt zal je bestaande Autoscaling Group en Loadbalancer met bijhorende instances hier niet te vinden zijn. Bijgevolg zal je dit snel even moeten overdoen in deze Sandbox.
Maar om het met een quote te zeggen: Herhaling is niet zomaar herhaling, het is verdieping. Elke keer zie je iets nieuws. 😉

S3 Buckets en CDN

De combinatie van S3 buckets en CDN zal ideaal zijn om statische content (en beperkt ook dynamische content) wereldwijd supersnel en veilig aan te bieden. In dit geval zal je CloudFront distributie verwijzen naar je S3-bucket via zijn interne URI.
Naast de snelheidswinst kan de rechtstreekse publieke toegang naar de S3-bucket op deze manier ook uitgeschakeld worden.

drawing

info

Lees zeker eens het blogartikel over S3 en CDN. Dit zal je een goed inzicht geven in de grote voordelen die de combinatie van S3 en CDN oplevert.
Hieronder een figuur die de snelheidswinst aangeeft voor een S3-bucket met én zonder CDN, aangemaakt in de region North Virginia.

drawing

  • Zoek nu op wat de aangewezen manier is om een S3-bucket via CloudFront beschikbaar te stellen.
  • Voorzie de website die je daarnet in een S3-bucket geplaatst had van een CDN distributie.
    • Uiteraard mag de S3 bucket niet meer rechtstreeks toegankelijk zijn via zijn S3-url.
  • Test je website door te surfen naar de Cloudfront URL
Controle

Laat het resultaat van je S3-bucket met CDN zien aan je docent ter controle!