woensdag 31 maart 2010

Windows Azure

Afgelopen donderdag was ik bezoek bij Ordina in Nieuwegein waar DotNed een sessie organiseerde over Windows Azure ofwel het Azure Service Platform. Ik was benieuwd hoe Azure zich verhoudt ten op zichte van Google App Engine, een service van Google die hetzelfde probleem op probeert te lossen.

Welk probleem is dat dan? Schaalbare, betrouwbare hosting. Wanneer je een website hebt kun je deze hosten op je eigen PC of bij een hosting provider. Mocht je website naar verloop van tijd wat populairder worden, dan heb je al snel een probleem als je tegen de capaciteiten van die webserver aan loopt. De oplossing hiervoor is opschalen, wat wederom een hoop problemen met zich mee neemt. Er zijn op dit moment tenminste drie providers die dit opschaal probleem aanpakken: Google, Amazon en Microsoft.

Google kwam in april 2008 met zijn App Engine. Hiermee haalden zij het hele idee van hosting overhoop. Niet langer had je een (virtuele) machine tot je beschikking, maar je kon je website draaien in de cloud van Google. Bij het online zetten van je website, had je vervolgens geen flauw idee waar je website gebleven was, maar hij bleef ten aller tijden bereikbaar op .appspot.com. Als je website populair was, dan maakt de App Engine meerdere instanties aan. Als je website minder populair wordt, worden deze instanties weer afgesbroken. Toegang tot een relationele database is er helaas niet, maar BigTable (het opslag systeem van Google) is wel aanwezig. Het mooie van BigTable is dat je tegen de tabel praat alsof het een enkele tabel is, maar de tabel kan verspreid zijn over meerdere servers in de wereld. Met andere woorden, het opschaal probleem is hiermee helemaal opgelost. Natuurlijk zijn er ook nadelen. Er worden op het moment van schrijven slechts 2 talen ondersteund: Python en Java. Daarnaast is er geen SQL ondersteuning zijn er vele restricties waarmee rekening gehouden moet worden.

Amazon loste dit op een iets andere wijze op. Zij gaan toch weer een beetje terug naar oorspronkelijke idee. Je huurt bij Amazon virtual machines. Die VM's draaien dan welleswaar iun de cloud, maar daar merk je niet zoveel van. Met die virtual machine kun je doen wat je wilt. Als je meer capaciteit nodig hebt, kun je dynamisch (of elastisch zoals ze het zelf noemen) instanties aanmaken. Je betaald daarbij per uur.

Microsoft kwam afgelopen januari met hun eigen oplossing: Azure. Daarmee gaan ze een beetje tussen Amazon en Google inzitten. Enerzijds maken ze ook gebruik van virtual machines/instanties die een website/webapp (Web Role) of achtergrond proces (Worker Role) kunnen draaien. Ook hier moeten de instanties handmatig opgehoogd worden wanneer de capaciteit bereikt wordt. Je kunt echter met zo'n instanties niet zomaar alles doen. Je kunt geen software installeren, afgezien van de speciale Azure software die je met Visual Studio 2010 hebt kunnen maken. Daarnaast ben je afhankelijk van de services die Microsoft levert. Naast integratie met diverse Windows Live services, hebben ze ook een aantal nieuwe services in het leven geroepen om Azure bij te staan waaronder SQL Azure (een SQL Server versie die in de cloud draait), Azure Tables (Microsofts variant van BigTable), Queue Service (om taken van de Web Role naar de Server Role te sturen), Blob (om grote data structuren op te slaan) en een Filesystem (om simpelweg bestanden weg te schrijven). Uiteraard kun je wel gewoon gebruik maken van alle services die je zelf kunt hosten en die over het internet beschikbaar zijn.

Eindelijk begeeft Microsoft zich ook op de cloud markt, maar mijns inziens zijn ze toch nog iets te vroeg ingestapt. Er ontbreken een aantal features waarbij ik met name het automatisch opschalen van het aantal servers mis. Maar de ontwikkelaars kunnen vast beginnen en Microsoft kennende, zullen ze in de komende maanden of jaren hun Azure Service Platform blijven verbeteren.

Geen opmerkingen: