Het opzetten van een Content Delivery Network

Zoals velen weten is het belangrijk dat je website snel op het scherm van je bezoeker staat wanneer deze wordt bezocht. Om je website te optimaliseren zijn er al veel tips & trucks om dit te realiseren. Wat je tegenwoordig steeds vaker ziet is dat statische content, zoals vooral afbeeldingen, vanaf een ander domein dan je website geladen wordt.

De reden hiervoor is dat een browser maximaal een aantal connecties openzet per URL. Wanneer je site geladen wordt en er redelijk veel geladen moet worden, is de kans groot dat er resources op elkaar moeten wachten alvorens ze geladen kunnen worden. Dit, door de restrictie op max. connecties welke hierboven is genoemd.

Om dit te omzeilen kan je simpelweg een subdomein aanmaken zoals, http://images.jedomein.nl/ en daar al je afbeeldingen neerzetten. In bijv. je stylesheet verwijs je nu dus naar de nieuwe lokatie van je statische afbeeldingen. Hierdoor worden de afbeeldingen en je website sneller geladen aangezien de browser nu 2 URL's tegelijk kan benaderen om je website te laden.

Uiteraard nemen we nog een extra stap om dit proces te optimaliseren. Dit in de vorm van een Content Delivery Network (CDN).

Het voordeel van zo'n CDN is dat je content niet alleen op een ander (sub)domein gehost wordt, het wordt ook nog eens aangeboden a.d.h.v. de geografische lokatie van de bezoeker van je website. Wanneer je server bijv. fysiek in NL staat zal je website voor een Nederlandse bezoeker sneller laden dan een bezoeker uit Nieuw Zeeland. Dit simpelweg doordat er meer hops nodig zijn om de content op de juiste plek af te leveren.

Een CDN zorgt ervoor dat je statische content niet alleen redundant aanwezig is, het wordt ook nog slim aan de bezoeker geserveerd.

Grote websites met veel bezoekers maken veelal gebruik van dure CDN oplossingen. Maar voor de 'gewone' man of vrouw, met een budget, is een CDN ook weggelegd. Er zijn enkele oplossingen welke hiervoor in aanmerking komen waarvan er nu de bekendste wordt besproken, Amazon Cloudfront.

Het klinkt in het begin vaak lastig en moeilijk, maar in theorie is zo'n Cloudfront gebaseerde CDN oplossing relatief makkelijk te implementeren. Wat je nodig hebt is een Amazon AWS account om de verschillende diensten te koppelen met dit account. De twee diensten welke je nodig hebt zijn, Amazon Cloudfront en Amazon Simple Storage Service Amazon Simple Storage Service (S3).

De S3 dienst is ervoor om je content te hosten, de Cloudfront dienst is ervoor om je content te serveren a.d.h.v. de techniek welke ik hierboven summier heb aangestipt.

Wanneer je je eenmaal hebt ingescheven voor deze diensten dien je middels een tool een S3 'bucket' aan te maken waar je de statische content voor je website op gaat zetten. (Zoek zelf even naar software voor je OS waarmee je deze buckets kan beheren. (OSX: Cyberduck, Windows: Cloudberry).

Wanneer je deze content hebt klaargezet dien je alleen nog je bucket te koppelen via Amazon Cloudfront en dit doe je bijv. middels de webinterface van Cloudfront. Je geeft simpelweg aan welke bucket je wilt koppelen aan een nieuwe Cloudfront container.

De truck hier, is dat je bij het aanmaken van zo'n container een CNAME op moet geven. Dit om de content beschikbaar te stellen onder bijv. een subdomein van je website. Bijv. http://cdn.jedomein.nl/. Dit staat beter dan de standaardnaam van bijv. d2zt5vkb6aq5k8.cloudfront.net. Wanneer je de DNS van je website aanpast, kies er dan voor een nieuw CNAME record toe te voegen waarbij je voor de waarde dit nieuwe record de domeinnaam welke de AWS management console heeft staan invult. (Wanneer ik hier veel vragen over krijg zal ik screenshots gaan toevoegen :) )

Vergeet niet dat de bestanden in de S3 bucket publiekelijk beschikbaar moeten zijn, dus dien je de read rechten voor "other" ipv (user only) aan te vinken.

Wanneer dit alles goed is gegaan kan je je nieuwe state of the art CDN in gebruik nemen door bijv. eerst eens de afbeeldingen welke je in je stylesheet aanroept naar de CDN te laten verwijzen. Let wel dat de state van je Cloudfront op "Deployed" moet staan alvorens dit gaat werken. Ook dient je CNAME record bekend te zijn via het DNS systeem voordat dit gaat werken. Dus soms is geduld een schone zaak. Maar 't geeft wel aan dat je dit CDN dus al kan hebben draaien voordat de DNS dit doorheeft :)

Om te kijken of je dan ook daadwerkelijk winst boekt op je vers geimplementeerde CDN kan je bijv. dit soort tools gebruiken.

Pitfalls? Ervaringen? To be continued...

Reactie(s)

Recent werk