zaterdag 19 januari 2013

Het potentieel van Windows Azure

Omdat cloud computing mijn volledige aandacht heeft let ik op welke diensten voorop lopen. Windows Azure is een cloud computing dienst van Microsoft die door veel deskundigen als de nummer twee gezien wordt achter Amazon Webservices. Tijd om uit te leggen waarom het potentieel van Windows Azure zo groot is.

Rekenkracht
Het hart van Windows Azure is de mogelijkheid om generieke servers te virtualiseren die volledig ingericht live gezet worden om een bepaalde rol te vervullen. Dit heeft wat toelichting nodig. Stel je hebt software voor de browser gemaakt (SaaS), deze kun je met een druk op de knop live brengen in het Windows Azure data center. Wat er gebeurt is dat er één of liefst meerdere up-to-date Windows 8 server gevirtualiseerd worden. Daar bovenop wordt het software product volledig geautomatiseerd ingericht en voor de servers wordt een loadbalancer geplaatst om de workload te verdelen als de dienst op de proef gesteld wordt.

Een testomgeving opzetten die exact gelijk is aan de productieomgeving is ook een druk op de knop. Als de test geaccepteerd wordt is het mogelijk deze te swappen met de productie omgeving zonder downtime. En je betaalt overigens alleen voor wat je gebruikt.

Opschalen en neerschalen kan met een slider via de beheerportal of geautomatiseerd met een script.

De kracht van dit Platform as a Service dienst is dat je een robuuste resilient dienst hebt die relatief zeer goedkoop is en heel veel complexe zaken uithanden neemt waardoor je met een klein team online diensten kunt ontwikkelen die door miljoenen gebruikers tegelijk gebruikt kunnen worden.

Overigens kun je ook gewoon met het handje servers virtualiseren, aardig is de optie om een server te delen. Het is in theorie iets minder veilig en de performance is matig, maar het kost dan ook minder dan tien euro per maand. Zo’n server is krachtig genoeg om meerdere gewone websites op te draaien of om software op te testen. Ik gebruik het o.a. om Windows Server 2012 te onderzoeken.

Data
Naast rekenkracht heb je data nodig. Veel data. Eigen gevirtualiseerde servers bestaan in feite uit grote bestanden en sla je dan ook op in de Storage dienst van Windows Azure. Je hebt daar behoorlijk wat smaken in die allemaal wat andere eigenschappen hebben. Blob storage is in principe oneindig, je betaalt alleen naar wat je opslaat en soms voor de verplaatsing en het consumeren daarvan. Deze storage kun je ook gebruiken om opslag aan te bieden aan je gevirtualiseerde servers. Dit is erg handig omdat je server zelf generiek houdt en meerdere servers de data samen kunnen delen wat handig is voor schaalbaarheid. Een leuke bijkomstigheid is dat hoe meer je de data gebruikt hoe beter de performance wordt. Iets wat wellicht botst met je intuïtie.

Maar je kunt veel meer met data in Windows Azure doen. Heel veel meer.

Zo kun je objecten aanmaken en deze objecten opslaan in No-SQL tabellen. Het nadeel is dat je geen JOINS kunt maken naar andere tabellen, het is No-SQL. Het voordeel is echter de performance als het aantal records toenemen, dus dat het makkelijk schaalbaar en performant te houden is door middel van partitionering. Daarnaast kun je er veel meer data in kunt stoppen dan relationele tabellen, en dat het ook nog eens geografisch redundant is. Dit betekent dat als het Windows Azure datacenter in Amsterdam uitvalt er automatisch uitgeweken wordt naar het datacenter in Ierland zonder dat de data ineens onbereikbaar wordt, een groot verschil met als je verbind aan een specifieke database. Een andere eigenschap is dat in de basis iedere eigenschap van het object geindexeerd is. Dit komt het bevragen van objecten uit de tabel ten goede en heeft relatie tot big data.

SQL Server
Windows biedt ook SQL Server als dienst aan. Dit lijkt alsof je gewoon een SQL Server hebt, de verbinding is hetzelfde en je kunt het ook gewoon koppelen aan de lokale installatie van SQL Server Management Studio. Toch zitten er veel details aan die het anders maken. Zo beheer je niet de server waarop het staat, zijn zaken zoals CLR niet mogelijk en kun je tabellen niet wijzigen met de interface van de management studio. Ook heb je zeer weinig invloed op de performance het is mogelijk dat een andere klant van SQL Azure invloed heeft op jouw performance en dat is zacht gezegd onhandig. Dat staat trouwens los van veiligheid. SQL Server draait per definitie in een gedeelde omgeving. Een krachtig voordeel van SQL Server op Windows Azure is dat er automatisch een fail-over scenario geldt. Jouw SQL Server database in Amsterdam heeft twee replicas binnen het datacenter, al kun je dit niet zelf testen of simuleren om te kijken wat hiervan de consequentie is. Voordeel is dat je een SQL Server (2012) database hebt die heel gemakkelijk te deployen en backuppen is en het realiseren van en webapplicatie simpel maakt al leent de database zich in mijn ogen niet voor enterprise applications waarvoor je een garantie in performance wilt afgeven. Je komt dan snel in een veel complexer scenario terecht.

PaaS diensten
Nu biedt Windows Azure ook mogelijkheden om rekenkracht te combineren met data zonder dat je hiervoor per se een server hoeft in te richten. Voorbeeld hiervan zijn queues en enterprise service bus. In feite heb je gewoon een URL endpoint waarin je data kunt stoppen in de vorm van berichten, deze kunnen weer geconsumeerd worden door externe diensten of door één van de rollen van een server zoals eerder boven beschreven. Voorbeelden hiervan zijn het verwerken van videomateriaal. In een queue stop je een bericht met een verwijzing naar een locatie waar een te bewerken videobestand staat. De queue verwerker weet zodoende welke video’s bewerkt moeten worden.

Ook zijn er veel mogelijkheden om jouw on-premise omgeving naadloos aan te laten sluiten bij servers en diensten van Windows Azure in het datacenter. Dit is wat je ook als private cloud zou kunnen betitelen. Voordeel hiervan is dat je bijvoorbeeld single sign-on kunt realiseren of je serverpark uit kunt bereiden zonder fysieke servers aan te schaffen. Besef dat dit veel impact heeft op je latency.

Windows Azure biedt ook het hosten van websites aan. Dit kan gratis, dan is het domein wel naam.azurewebsites.net, maar met geringe bijbetaling kun je dit onder je eigen domeinnaam draaien. De kracht is echter de snelheid waarmee je bijvoorbeeld diverse CMS-en kunt deployen, dit gaat in de vorm van een app market waar steeds mogelijkheden aan worden toegevoegd.

Potentieel
De mogelijkheden van Windows Azure nemen bijna wekelijks toe, het model wat je ook ziet bij Amazon Webservice. Nadeel is dat er wel eens van zaken afscheid genomen wordt, of dat je bepaalde functionaliteit ineens op een andere manier moet aansturen. Aan de andere kant, nu de wereld nog niet massaal de dienst omarmt kunnen ze nu nog agile ontwikkelen, dit is noodzakelijk in een uiterst concurrerende markt waar Amazon Webservices onbetwist leider is.

Het potentieel van Windows Azure is enorm en ieder bedrijf dat software ontwikkelt zou zich moeten verdiepen in de mogelijkheden van Amazon Webservices en Windows Azure of is mogelijk in mijn ogen niet goed bezig. Als is het alleen maar onder het mom van “ken uw vijand”. De diensten zijn echter wel behoorlijk verschillend. Amazon Webservices biedt mogelijkheden die Windows Azure niet heeft en andersom maakt Windows Azure het opzetten van resilient en robuuste webdienst weer makkelijker. In een volgend artikel zal ik op de Amazon Webservices dienst in gaan.

Ik beweer niet dat Windows Azure alles kan en het beste is, inzetten op Windows Azure kent behoorlijk wat consequenties en beperkingen. Maar de manier waarop het kan en gaat heeft absoluut de toekomst. Het neemt allerlei traditionele ballast weg en je hebt beschikking tot moderne technologie waarvoor je zelf geen kapitale investeringen hoeft te doen. Het is alsof je een nieuwe auto least voor weinig terwijl je ieder uur zou kunnen switchen als je dat zou willen. Dus wel de lusten, niet de verplichting lange contracten aan te gaan.

Ter afsluiting wil ik nog toevoegen dat er veel ondersteuning is vanuit de community, trainingsmateriaal is veel en gratis te verkrijgen, kennis is breed beschikbaar en er zijn veel mogelijkheden om bijvoorbeeld gratis bronnen te verkrijgen in de vorm van “cloud essentials”. Als klap op de vuurpijl biedt Microsoft ook nog een volledige source control omgeving aan waarin je kunt samenwerken, bugtracken, taken verdelen en scrummen en dat gratis voor teams tot vijf ontwikkelaars.

Meer weten over Windows Azure? Ga naar WindowsAzure.com, vooral de prijs calculator is een voorbeeld van gebruiksvriendelijkheid. Op www.visualstudio.com vind je de source control oplossing.

Conclusie
Er zijn veel redenen om Windows Azure te onderzoeken: Sneller robuuste webdiensten realiseren tegen een zeer aantrekkelijke prijs waarbij je ontzorgd wordt. Doordat je alleen betaalt naar gebruik kun je de uitgaven in lijn brengen met de inkomsten wat vanuit een business case tot een ideale situatie leidt. Ook reikt de omgeving een goedkope krachtige methode aan om een test en ontwikkelomgeving gelijk te houden met de productie omgeving zonder capitale inverstering. Het nadeel van de dienst is de snelheid van veranderingen, bepaalde beperkingen ten opzichte van een on-premise omgeving en dus specifieke kennis die opgedaan dient te worden. Daarbij kan ik een rol spelen.

Volledige disclaimer: Ik krijg geen enkele vergoeding van Microsoft voor het schrijven van dit artikel en dit is geschreven vanuit mijzelf als enthousiaste klant van Windows Azure, eenzelfde stuk zal ik ook schrijven voor Amazon Webservices en wellicht andere populaire diensten die in mijn ogen de toekomst hebben.