Microsoft wil met zijn nieuwe Windows Azure Services een serieus platform brengen voor een breed scala aan potentiële klanten, van kleine zelfstandige ontwikkelaars die webgebaseerde bedrijfjes starten tot grote ondernemingen die gaan voor goede prestaties, hoge beschikbaarheid en schaalbare websites. Azure moet, als het aan Redmond ligt, over een paar jaar een voorkeurslocatie worden voor bedrijfsgegevens. Het begin is veelbelovend.

De CTP van Azure toont een ontzettend grote hoeveelheid aan mogelijkheden, en er ligt meer in het verschiet. Het gaat als flexibele architectuur een stuk verder dan gewone web hosting; het is ontworpen om afhankelijk van de vraag automatisch nieuwe hulpbronnen aan te boren. Verschillende mogelijkheden, workflows bijvoorbeeld, zijn niet te bekennen bij concurrerende cloudproducten. De ploeg achter Azure heeft gekozen voor bestaande Microsofttechnologieën, zoals virtuele servers, het .Net framework en IIS, en deze aangepast om te werken in de Cloud.

Erg veelbelovend is de manier waarop deze diensten aan elkaar zijn geknoopt. Tien jaar terug zou Microsoft nog bedrijfseigen interfaces hebben ontwikkeld om vooral de concurrentie buiten te sluiten, maar voor Azure is gekozen voor open standaarden: SOAP, REST, Atom, dat werk. Daardoor valt Azure eenvoudig te integreren met bijna elke programmeertaal en OS.

Een ander goed punt is hoe snel .Net-ontwikkelaars uit de voeten zullen kunnen met het programmeermodel, terwijl het wel degelijk vernieuwingen brengt. Het is niet nodig om een nieuwe taal of IDE in de vingers te krijgen om met Azure te werken, als u bekend bent Visual Studio, C# of Visual Basic dan bent u al een heel eind. Het gebruik van andere .Net-talen is mogelijk, al is de documentatie daarvoor nog niet goed voorhanden. In deze versie kunt u nog niet werken met onbeheerde code, maar dat wordt in de toekomst wel mogelijk.

Zelf moest ik een paar weekjes achter elkaar een uurtje aanklooien met Azure om erin te komen. Deel van het probleem was dat het aantal functies mij wat te veel werd. Alles viel op zijn plaats toen ik erachter kwam dat ik bezig was met het in de vingers krijgen van een nauwkeurig ontworpen, schaalbare SOA die aan elkaar gebonden zit met RESTful API's. Ik verwacht dat iedere redelijk ervaren .Net ontwikkelaar met een beetje SOA onder de gordel binnen een paar dagen min of meer productief aan de slag kan met Azure, en geheel probleemloos kan werken na een paar weken.

Vier delen

Het Azure Services Platform bestaat als Windows-achtig geheel uit vier delen: Azure zelf (een Windowsomgeving voor het draaien van applicaties en opslaan van gegevens binnen Microsoft datacentra), .Net Services (een keur aan gedistribueerde infrastructuurdiensten), MS SQL Services (cloud-versie van services gebaseerd op SQL Server) en Live Services (die toegang verschaffen tot data in de MS Live appliceties).

Een Azure-applicatie lijkt op dit moment sterk op een ASP.Net-applicatie, al heeft het een aantal beperkingen en nieuwe functies. Azure ondersteunt zogenaamde web roles en worker roles. Een web role is als een ASP.Net site, terwijl een worker role een achtergrondproces is zoals .Net-diensten meestal zijn. De roles kunnen in meerdere sessies draaien, waarbij elke sessie in een virtuele machine hangt die wordt bestuurd door Windows Azure Fabric.

Azure slaat blobs, tabellen en wachtrijen voor de roles op in een gerepliceerde storagesessie. Hiernaar kan verwezen worden door een RESTful URI. Azure blobs (grote, binaire databrokken) zijn erg losjes verdeeld in containers en blokken, en kunnen metadata meekrijgen. Tabellen zijn onderverdeeld naar belang, en worden opgevraagd met LINQ-syntax. Het zijn dus geen relationele databasetabellen. Wachtrijen worden gebruikt voor betrouwbare interactie tussen web role-sessies en worker role-sessies.

De .Net Services wordt geleverd met de .Net Access Control Service, die de toegang regelt tot de webbronnen met behulp van beveiligingstokens: de .Net Service Bus (een register van web end points) en het .Net Workflow Services (een sequentiële workflow controller). SQL Services bevat nu nog één van meerdere geplande componenten: SQL Data Services, eigenlijk een store van bevoegdheden, containers, entiteiten en eigenschappen die kunnen worden aangeroepen met REST of SOAP met ofwel een LINQ-achtige taal, ofwel ADO.Net Data Services. De SQL Data Services zijn weliswaar gebaseerd op SQL Server, toch dient het een ander doel.

Het Live Framework biedt toegang tot Live-diensten, alsook tot Live Mesh synchronisatie. Om niet te veel af te dwalen, zal ik hier nog niet op in gaan.

Zelf preview draaien?

Ontwikkeling voor Azure kan nu nog op Windows Vista SP1 of Windows Server 2008. Toegelaten worden tot de preview vergt meerdere stappen. U moet zich aanmelden en de vereiste software downloaden en installeren. Als u tot de preview bent toegelaten, dan ontvangt u tokens via de e-mail die u kunt inruilen om sessies te creëren van de verschillende services.

Als alles eenmaal geïnstalleerd is en SQL Server en IIS draaien, dan kunt u de ontwikkelomgeving van Azure uittesten door applicaties te bouwen en lokaal te draaien. Wanneer het geheel werkt, wordt een lokale structuur aangemaakt, samen met een lokale blob, tabel en wachtrij voor de storage.

U kunt een nieuwe Visual Studio project aanmaken vanuit de meegeleverde sjablonen. Daarbij kan het gaan om een clouddienst met web en/of worker roles, een cloud sequentiële workflow dienst, en een Live Framework webapplicatie. Ik moet zeggen dat de 'Hello World!' gebouwd met een Azure web role de op een na meest ingewikkelde 'Hello World!' is die ik ooit ben tegengekomen. Alleen Microsofts eigen Workflow-versie was complexer.

Mocht u gebruik maken van Azure Storage, dan moet u erop letten dat de URI's anders zijn bij het aanspreken van de storagediensten in de cloud, dan bij het aanspreken van de lokale storage. Ontwikkeling hiervan gaat dan ook stap voor stap. U begint met het lokaal te draaien, vervolgens schakelt u de URI's om naar een 'mixed mode', waarbij de applicatie in een lokale structuur draait op cloud storage. U zet uw applicatie naar de cloud, test het op een URL waarin een GUID (globally unique identifier) zit verwerkt, en als laatste zet u het op de URL die u voor productie wilt gebruiken.

Microsoft was altijd goed in het leveren van voorbeeldcode, en Azure is geen uitzondering. De SDK telt negen voorbeelden, waarvan twee eigenlijk niets meer zijn dan 'Hello' applicaties. De .Net Services SDK heeft voorbeelden voor elke dienst in zowel C# als in VB. Het Live framework heeft samples voor een keur aan mogelijkheden en libraries voor .Net, JavaScript en Silverlight, en de Azure Services Kit kent elf hands-on labs met setup-instructies, een handleiding en bestanden. Ik adviseer alle nieuwe Azure-ontwikkelaars om alle labs af te lopen en zich eventueel te storten op alle relevante voorbeelden.

Conclusie

Er zijn zo ontzettend veel manieren om applicaties te draaien in de cloud. Amazon EC2 met Windows Server 2008 komt waarschijnlijk nog het dichtst bij Azure, en dat wordt waarschijnlijk het grote alternatief voor ervaren ASP.Net ontwikkelaars die capaciteit on-demand nodig hebben.

Ontwikkelaars met genoeg ervaring in meerdere talen en besturingssystemen hebben meer keus. Niet alleen Amazon EC2, maar ook Google App Engine (met Python/Django) Force.com en meer.

Azure zit nog in de preview, en het is moeilijk te zeggen hoe concurrerend het wordt. We weten niet hoeveel het gaat kosten, we weten niets over de stabiliteit enzovoorts. Maar wat we onderhand wel kunnen zeggen, is dat het een goed uitgedachte architectuur wordt voor cloud computing, die eenvoudig in de vingers te krijgen is voor de huidige ASP.Net ontwikkelaar.

Vertaling: Michiel van Blommestein

Bron Bron: Techworld