Inleiding
De komende jaren zullen we niet alleen steeds meer functionaliteit op het internet afnemen, maar ook een deel van bestaande en nieuwe applicaties vervangen door cloud services. De belangrijkste platformleveranciers zijn Amazon, Google en Microsoft. De eerste twee bespraken we al eerder; Microsoft Azure komt in dit artikel uitgebreid aan bod.
Microsoft Azure lijkt conceptueel op de Google App Engine die we eerder bespraken. Beide zijn Platform-as-a-Service-omgevingen. Waar Google zijn cloud-ontwikkelaars een suite voor de ontwikkeling, de inzet en de hosting van Python- en Java-applicaties biedt, doet Microsoft met Azure iets vergelijkbaars voor .Net.
Helaas!
De video die je probeert te bekijken is niet langer beschikbaar op Tweakers.net.
Windows en SQL Azure
Wat de Azure-omgeving onderscheidt van de normale Windows-ontwikkelomgeving zijn de cloud-specifieke faciliteiten. De kern wordt gevormd door Windows Azure, dat een omgeving voor het uitvoeren en beheren van gehoste toepassingen biedt. De belangrijkste onderdelen zijn resource management, load balancing en lifecycle management.
Voor de opslag van gegevens is er SQL Azure, een gehoste, horizontaal schaalbare versie van de SQL Server database. Deze database vervult een vergelijkbare rol als Googles Datastore en Amazons S3- en Relational Database Service-diensten. Omdat ook relationele opslag en query's worden ondersteund, is met name die laatste concurrent goed vergelijkbaar.
Horizontale schaalbaarheid
De horizontale schaalbaarheid van SQL Azure is gebaseerd op de sharding-technologie. Daarbij worden databases onderverdeeld in zogeheten shards, die elk een aantal records bevatten. De shards kunnen vervolgens op verschillende systemen worden ondergebracht. De programmeur wordt bij het gebruik hiervan geholpen door SQL Azure Federations.
Tweakers.net-Expertpanellid Loather noemt de maximale grootte van 10GB als een ernstige beperking van SQL Azure-databases. "De andere, niet-relationele Storage-vormen ondersteunen tot 1TB aan informatie. Die zijn bij uitstek geschikt om de data over meerdere machines te verdelen."
Volgens panellid creator1988 zit de beperking echter niet in het relationele concept. "Je kunt best ver doorschalen met een relationele database. Twitter gebruikt bijvoorbeeld nog steeds MySQL, maar wel met een goede sharding layer."
Toegang tot gegevens
Met Transact-SQL en Tabular Data Streams biedt Microsoft directe toegang tot SQL Azure. Dat maakt het mogelijk om vanuit de Windows-ontwikkelomgeving voor ASP.Net de WCF Data Services - voorheen ADO.Net - te gebruiken. Ook andere tools kunnen op deze manier toegang tot SQL Azure krijgen.
Hieraan gerelateerd is het Azure Content Delivery Network. Dat is een gedistribueerd systeem voor het ophoesten van statische content, vergelijkbaar met het Akamai-netwerk. Microsoft doet dat vanuit achttien datacenters, die over de hele wereld verspreid zijn. Volgens het bedrijf worden er ook nog steeds nieuwe locaties toegevoegd.
AppFabric
Het laatste onderdeel is AppFabric, een verzameling middleware-interfaces waarmee lokaal gehoste Windows-toepassingen, online Azure-applicaties en diensten van derden kunnen worden samengevoegd tot zogenaamde Composite Applications. AppFabric is gebaseerd op knooppunten en verbindingen volgens het cluster-model, en biedt api's voor communicatie, toegangscontrole, caching en beheer.
Andere diensten - naast SQL Azure en AppFabric - zijn Live Services, SharePoint Services en Dynamics CRM Services.

Platform
/i/1311240511.png?f=imagenormal)
Voor de programmeur komen al deze zaken samen in het Azure-platform. De beheerder maakt server instances en datastores aan in het Management Portal. De Compute-instances kunnen worden verspreid over verschillende datacenters over de hele wereld en worden in drie verschillende smaken aangeboden. De Web Role is bedoeld voor webbased front-ends op IIS 7.0; de Worker Role is voor achtergrondprocessen en de Virtual Machine biedt een container waarmee standaard Windows-applicaties in de cloud kunnen worden uitgevoerd. Daarmee lijkt dit laatste onderdeel dus meer op Infrastructure-as-a-Service zoals Amazon dat met EC2 ook aanbiedt.
/i/1311239471.png?f=imagenormal)
Volgens panellid creator1988 zal het onderscheid tussen IaaS en PaaS in de toekomst verdwijnen. "Je betaalt een basisbedrag voor de toegang en daarnaast extra voor bijvoorbeeld toegangsbeheer. Je ziet dat ook terug in het nieuwe betaalmodel voor Azure: er wordt betaald voor de instances en de transacties. Daarnaast kun je bijvoorbeeld ook AppFabric Access Control afnemen. Je hebt dus de keuze om alles zelf te regelen of zaken uit te besteden aan je cloud-leverancier."
/i/1311240046.png?f=thumb)
Hybride model
Dit hybride model is volgens hem ook de reden dat Azure minder geschikt is voor kleine projecten. "GAE is goedkoper omdat je daar alleen voor de cpu-tijd betaalt, en geen vast bedrag per instance, ongeacht hoeveel werk die instance verzet. Met het model dat Azure en EC2 hanteren, betaal je maandelijks minstens een dollar of tien voor een instance."
"Voor de programmeur maakt het niet veel uit. De concepten zijn op alle platforms hetzelfde. Of je nu in Java op EC2 schrijft, in Python op AppEngine of in .Net op Azure, je problemen en denkrichtingen zullen hetzelfde zijn. Als ik alles op een rijtje zet, denk ik dat Azure momenteel het beste totaalpakket biedt. Bovendien is het een voor Windows-ontwikkelaars herkenbare abstractielaag voor websites, services, scheduled tasks en de cloud."
Architectuur
Een Azure-applicatie, in feite een service, kan bestaan uit meerdere instances van verschillende rollen. Voor de interactie vanuit de applicatie met het operating environment is er de Managed API.
Panellid Loather benadrukt hierbij het belang van de applicatie-architectuur. "Een lokale applicatie is niet zomaar naar Azure te brengen, zonder vervelende verrassingen op het gebied van kosten of prestaties. Azure schaalt door meer servers aan het werk te zetten. Daar moet je toepassing wel mee overweg kunnen."
"Bovendien betaal je per storage-transactie. Als je een applicatie zo zou bouwen dat die eerst een lijst met duizend id's ophaalt en vervolgens nog eens elke afzonderlijke id, dan betaal je voor 1001 transacties. Je kan dat echter ook in een enkele transactie doen. Op die manier bepaalt de ontwikkelaar dus deels de kosten van de toepassing."
Interconnectivity
De Storage is toegankelijk via Representational State Transfer, ook wel bekend als 'REST', en een api. De eerste is vanaf het hele internet beschikbaar. De data wordt opgeslagen in ongestructureerde Blobs, database-Tables en Queues - die laatste is bedoeld voor messaging tussen services.
De Azure Fabric bestaat uit Compute- en Storage-nodes die met elkaar zijn verbonden via Connections. De besturing van de Applications en Services wordt geregeld door de Azure Fabric Controller. Dat is wat Windows uitbreidt tot Windows Azure. Op laag niveau gaat het om beheer; op een hoger niveau om deployment en lifecycle. Het besturingssysteem is gebaseerd op Windows Server 2008 en een aangepaste versie van de Hyper-V-hypervisor.
Om tijdens het ontwikkelen lokaal te kunnen proefdraaien, is er de Storage Emulator. Daarmee kun je lokale Blobs, Tables en Queues aanmaken. De Compute Emulator doet hetzelfde voor instances.
Web services
Alle functionaliteit is beschikbaar in de vorm van een op REST gebaseerde web service. Die hoef je als programmeur niet zelf in je applicaties te integreren: er kan ook een wrapper-api gebruikt worden, die ook in de Visual Studio-ontwikkelomgeving kan worden binnengehaald.
Voor sommige functies is ook een wat zwaardere soap-interface beschikbaar; daarbij gaat het vooral om de interoperabiliteit met andere platforms. Een voorbeeld is de Access Control Service, die gebaseerd is op WS-Security, WS-Federation en WS-Trust.
DotNet
Wat je uiteindelijk bouwt, zijn applicaties voor de Common Language Runtime van .Net. Toepassingen zullen dus voornamelijk in C# of VB.Net worden geschreven. Andere talen waarvoor een clr-compiler beschikbaar is, kunnen echter ook worden gebruikt, zoals C++, JavaScript, PHP, Python en Ruby.
Een ontwikkelaar kan de Windows SDK gebruiken, maar de meesten zullen in de grafische ide van Visual Studio werken. De Windows SDK is overigens gratis te downloaden.
Voor panellid Loather zijn kennis van de programmeertalen en beschikbaarheid van de tools de belangrijkste redenen om met Azure aan de slag te gaan. "Als je in bezit bent van een MSDN-account, heb je toegang tot alle gereedschappen en zelfs een beperkte hoeveelheid Azure resources per maand. De taal van de oplossing is niet relevant, aangezien alle code toch naar de Intermediate Language van .Net wordt gecompileerd. De taal kan dus altijd worden gekozen aan de hand van de kennis van het ontwikkelteam."
Visual Studio
Visual Studio is er in verschillende smaken, met en zonder MSDN-toegang. De software kost vele honderden euro's, maar op de MSDN-site zijn wel gratis trial-versies beschikbaar. Ook gratis is de beperkte Express-versie, die alleen registratie vereist. Volgens Microsoft is dit voldoende voor een hobbyist die een keer met Azure wil experimenteren. Een professionele ontwikkelaar die in teamverband werkt, zal echter meestal de Ultimate-versie willen hebben.
De Azure Tools voor Visual Studio zijn te downloaden van de MSDN-site. Deze zijn ook te gebruiken in combinatie met Visual Web Developer, een onderdeel van Visual Studio dat specifiek is gericht op het bouwen van applicaties die op het ASP.Net.-framework zijn gebaseerd. Het concept is vergelijkbaar met JavaServer Pages of PHP: in een en hetzelfde bestand wordt zowel statische html-code als scriptcode gebruikt.
AppFabric SDK
Voor AppFabric is een aparte sdk beschikbaar, die naast de Azure SDK wordt geïnstalleerd. Ook die wordt geïntegreerd in Visual Studio.
De reden voor de splitsing van deze sdk's is dat Azure-applicaties ook prima zonder AppFabric kunnen. Die laatste biedt echter wel een aantal belangrijke kant-en-klare diensten voor caching, communicatie en authenticatie. Een voorbeeld daarvan is de Service Bus, waarmee zowel lokale als cloud-functionaliteit in de vorm van een REST/soap-webservice beschikbaar kunnen worden gemaakt. Andersom mag ook: de AppFabric-sdk kan worden gebruikt om niet-Azure toepassingen toegang tot het AppFabric platform te geven.
Voor talen als Ruby, Java en PHP zijn eveneens sdk's die toegang tot AppFabric bieden. Ook voor toegang tot de opslag zijn library's voor Java en PHP beschikbaar. Die laatste biedt bovendien toegang tot de beheer- en authenticatie-onderdelen van AppFabric.
Infrastructuur
Microsofts Azure-platform is inmiddels ruim een jaar beschikbaar. De infrastructuur is ondergebracht in bijna twee dozijn datacenters, verspreid over hele wereld. Elk daarvan bestaat uit een paar duizend serversystemen.
Voor grote klanten en leveranciers als HP, Fujitsu en Dell is er de Azure Platform Appliance. Daarmee kan een private cloud worden gebouwd die precies zo werkt als de publieke Azure-infrastructuur van Microsoft. Op die manier kunnen bijvoorbeeld voor specifieke doelgroepen diensten met andere service level agreements worden opgezet. Op dit moment is nog niet bekend wat het minimum aantal servers zal zijn, maar volgens Microsoft gaat het in ieder geval om configuraties voor meer dan duizend systemen.
Van start
Gewone gebruikers kunnen Azure een maand of drie gebruiken. Als je je voor een trial-account aanmeldt, dan krijg je 750 uur op een Extra Small Compute Instance en 25 uur op een Small Compute Instance, aangevuld met 20GB opslag en 1GB voor SQL Azure. Daarna en daarboven worden de kosten op basis van gebruik in rekening gebracht. Vergeleken met Amazon en GAE heeft Azure het ingewikkeldste prijsmodel, maar je kunt ook kiezen uit een aantal voorgebakken packages.
Aan certificatie voor Azure wordt gewerkt. Er is al een aantal examens beschikbaar; een voorbeeld is 'Designing and Developing Windows Azure Applications'. Daarnaast is er het Powered by Windows Azure-logoprogramma, waarmee ontwikkelaars hun toepassingen kunnen laten certificeren.
Propositie
Bij Azure ligt de nadruk minder op de online propositie sec, zoals bij de cloud-diensten van Google en Amazon. Het platform wordt meer aan de man gebracht als een operating environment voor de combinatie van cloud en lokale systemen. Dat mag ook geen verbazing wekken als je bedenkt dat Microsoft nog steeds het leeuwendeel van zijn omzet verdient met de verkoop van software-licenties.
Volgens pannellid Bas Valkema hangt het van de specifieke applicatie af of je die naar de cloud wilt brengen. "Heb je het nieuwe Facebook-idee, dan is de cloud best handig. Je kunt klein beginnen en later als het groter wordt moeiteloos schalen (als je architectuur maar goed is). Flopt het, dan heeft het ook niet veel gekost."
"Heb je daarentegen een applicatie waarin persoonsgegevens zitten, dan is de cloud waarschijnlijk niet zo'n goed idee. Je weet niet waar je data blijft en wie daar middels lokale wetgeving (Amerika) toegang tot heeft. Zelfs het 'safe haven'-protocol is volgens het CBP niet voldoende."