De architectuur van spotgroningen.nl

Voor de populaire website spotgroningen.nl verzorgde iWink de technische realisatie. We maakten hierbij intensief gebruik van Cloud Computing. In dit Lab artikel beschrijven we hoe we dat gedaan hebben, en waarom.

Eerder schreven we al over Webhosting in de cloud ofwel cloud computing. Bij cloud computing worden IT-resources, zoals reken- of opslagcapaciteit, via het web aangesproken. De ontwikkelaar houdt zich niet bezig met hardware of de locatie ervan en kan gemakkelijk opschalen.

Voor de website spotgroningen.nl kunnen bezoekers hun eigen "Er Gaat Niets Boven Groningen" commercial maken, op basis van 32 zelfgemaakte foto's. De commercial kan direct online bekeken worden, op de eigen website worden opgenomen en doorgestuurd naar vrienden. De beste commercials worden daadwerkelijk op landelijke televisie uitgezonden.

De benodigde opslagcapaciteit hiervoor is stevig: elke commercial vereist zo'n 150 MegaByte aan opslagcapaciteit en er worden elke dag vele bijdrages geplaatst, waardoor er rekening moest worden gehouden met TerraBytes (1000 keer 1000 MegaByte) aan benodigde opslagcapaciteit. Bovendien was er ook flink wat rekencapaciteit nodig, omdat de applicatie in sneltreinvaart 32 grote afbeeldingen moest kunnen bijsnijden en schalen, ook wanneer de site zeer druk bezocht wordt. Met name het schalen van foto's is een intensieve operatie qua rekencapaciteit.

Om deze aantallen op te kunnen vangen, en ook nog een factor 10 op te kunnen schalen als dat nodig mocht blijken, koos iWink ervoor om een aantal Cloud services van Amazon in te zetten. We gebruikten: Amazon S3 (Simple Storage Service), Amazon EC2 (Elastic Cloud Computing), Amazon CloudFront (een Content Delivery Network) en Amazon SQS (Simple Queue Service). De website zelf draait op ons eigen webcluster. In onderstaand schema is te zien hoe deze onderdelen met elkaar samenwerken.

De benodigde opslagcapaciteit hiervoor is stevig: elke commercial vereist zo'n 150 MegaByte aan opslagcapaciteit en er worden elke dag vele bijdrages geplaatst, waardoor er rekening moest worden gehouden met TerraBytes (1000 keer 1000 MegaByte) aan benodigde opslagcapaciteit.

Storage

De door de fotograaf ge-uploade afbeeldingen worden direct doorgestuurd naar Amazon S3. S3 biedt vrijwel ongelimiteerde opslagcapaciteit. In S3 worden zowel de originelen (nodig voor het maken van de commercial op televisie) als geschaalde en bijgesneden versies van de foto's opgeslagen.

Binnen enkele minuten kan zo de capaciteit worden uitgebreid of juist teruggebracht

De architectuur van spotgroningen.nl
De architectuur van spotgroningen.nl

Schalen en bijsnijden

Om de grote foto's geschikt te maken voor op het web moeten ze worden geschaald en bijgesneden. Dit moet in hoog tempo, want de fotograaf wil direct kunnen zien hoe de verschillende frames van zijn commercial er uit komen te zien. Na het opslaan van de originele afbeeldingen in S3 plaatst de applicatie daarom een aantal opdrachten ("jobs") in een wachtrij. Voor deze wachtrij gebruiken we Amazon SQS (Simple Queue Service). Een aantal virtuele machines (EC2) haalt jobs uit deze wachtrij. In elke job staat de locatie van de afbeelding die geschaald moet worden, en de gewenste transformatie. Na het uitvoeren van de transformatie wordt het resultaat teruggeplaatst in S3.

Naarmate de belasting op deze virtuele machines toeneemt, kunnen er extra machines worden ingestart. Hiervoor ligt een kant-en-klaar script klaar. Binnen enkele minuten kan zo de capaciteit worden uitgebreid of juist teruggebracht.

Bandbreedte

Populaire filmpjes worden vaak bekeken. Dat kan op piekuren veel webverkeer veroorzaken. Om deze laatste schakel van de keten ook soepel te laten verlopen, hebben we Amazon CloudFront gebruikt. CloudFront is een zogenaamd Content Delivery Network. Het zorgt ervoor dat bestanden supersnel kunnen worden afgeleverd aan eindgebruikers wereldwijd.

De voordelen

Het kenmerkende voordeel van Cloud Computing is dat we er grote en krachtige applicaties mee kunnen bouwen, terwijl de kosten meeschalen met de daadwerkelijk benodigde capaciteit. Wie alles op zijn eigen webservers wil doen, moet rekening houden met een bestel- en installatietijd van dagen tot enkele weken. Dat betekent dat er altijd meer besteld moet worden dan dat er nodig is. Als de website zo populair wordt dat deze in korte tijd 10 tot 100 keer zo veel bezocht wordt, dan is dat met eigen machines waarschijnlijk niet bij te houden. Met Cloud Computing kan dat wel.

Bird's eye in uw stad Unit-testing en databases