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.
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 datacenter. Wat er gebeurt is dat er één of liefst meerdere up-to-date Windows 8 servers 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 deze Platform as a Service-dienst is dat je een robuuste resilient dienst hebt die relatief goedkoop is en heel veel complexe zaken uit handen 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 er meerdere gewone websites op te draaien of om software op te testen. Ik gebruik het onder andere 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, 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 de servers 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 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 replica’s 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 een 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. Al 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 webdiensten 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 de 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 en niet de verplichting lange contracten aan te gaan.
Ter afsluiting wil ik nog toevoegen dat er veel ondersteuning is vanuit de community en 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 www.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 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 investering. 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.
Reza, als blije klant van Windows Azure kan ik dan het filmpje blijkbaar bevestigen. De vraag is met welk doel ik mijn opinie geschreven heb. Dat is het inspireren van mensen om Azure nu echt eens te onderzoeken en hopelijk dat ze mij/ons vragen om hen daarbij te helpen. Het is geschreven vanuit een ontwikkelaars hart, daar ligt de focus, niet bij de SLA, deze kun je heel makkelijk vinden op : http://www.windowsazure.com/en-us/support/legal/sla/ . Saillant detail is dat ik een webservice op Windows Azure heb draaien die zowel integreert met Amazon Webservice en Google middels V3 van de .NET Google API (SDK). Overigens beschrijf ik een behoorlijk nadeel onder het kopje SQL Server.
Ewout & Gijs, dank voor je goede reacties. Inderdaad was Windows Azure vooral als PaaS gepositioneerd, maar is er onder veel vraag en druk meer IaaS bijgekomen, maar wel als zinvolle toevoeging. Overigens heb ik veel zaken niet benoemd zoals de mogelijkheid om on-premise te koppelen met zaken als AD FS, VPN (voor private cloud), Sync framework en dergelijke. Zoals Ewout terecht ook aangeeft is het niet het doel om zomaar on-premise naar Windows Azure te verplaatsen, je hebt hiervoor ook een andere mind-set voor nodig. Windows Azure is geen oplossing voor alles ook zitten er nogal wat ruwe kantjes aan bijvoorbeeld de firewall. Je kunt wel IP (IP 4!) segmenten instellen maar om andere Azure services toe te staan is maar één groot vinkje en die maakt *geen* onderscheid tussen *jouw* Azure service of die van een hele andere klant van Windows Azure.
Peter van de Bree: Kijk, daar doe ik het voor 🙂
Nick, ik kan me jouw reactie wel voorstellen, maar ook in het verlengde van Ewout zijn vraag over Azure Table Storage en dat dit moeilijker te koppelen is aan een on-premise database valt in een aantal gevallen de Vendor Lock-In best mee. Zo is Windows Azure Storage redelijk compatible met Amazon S3 storage *en* OpenStack object storage. Het zijn in feite alle drie rest API’s. Een beetje ontwikkelaar zal zelfs gemakkelijk code kunnen schrijven die met alle drie de diensten om kunnen gaan. Kan de klant van het product zelf kiezen waar hij zijn data op wilt slaan. Ik denk zelf in webservices en als je daar een beetje savvy mee bent kun je gewoon persoonsgegevens opslaan en bepaald de dienst zelf wel of hij deze in een SQL tabel opslaat of in een NoSQL tabel. Zoals Ewout al aangeeft zitten hier echter wel consequenties aan. Doel van SQL Server op Windows Azure en Azure Table Storage (NoSQL) is echter schaalbaarheid. Overigens wil ik ook een stuk schrijven over OpenStack een initiatief waar ik helemaal achter sta, alleen heb ik daar nog weinig vlieguren mee gemaakt, ondanks hun prachtige oplossing om goedkoop en snel de dienst uit te proberen, kijk maar eens op : http://www.openstack.org/blog/2012/02/trystack-org-a-sandbox-for-openstack/
Ruud, ook jij bedankt voor je reactie en vragen. Je kunt overigens wel gewoon Linux virtualiseren op Windows Azure, het is zeker geen Microsoft only platform.
Hoe Microsoft om gaat met regelgeving in Duitsland weet ik niet. Wel weet ik dat zij in Europa twee datacenters hebben: 1 in de buurt van Amsterdam en 1 in Ierland. Je kunt instellen dat data die je opslaat in Amsterdam, het land niet verlaat. Is nog goedkoper ook, maar als het datacenter in Amsterdam “uitvalt” heb je geen toegang tot je data.
Uitleg over deze:
“Een leuke bijkomstigheid is dat hoe meer je de data gebruikt hoe beter de performance wordt”
Azure Storage is niet zoiets als een harde schijf, er wordt op een heel andere manier met data en opslag omgegaan. Wat mij verteld is in Seatlle -ik kan helaas de bron niet zo snel vinden- is dat data die veel benaderd wordt meer “hardware” toegewezen krijgt om de performance ervan te boosten. Dit klinkt logisch, want Microsoft verdiend aan de hoeveelheid data die wordt opgevraagd. Zie het maar als YouTube. Jouw filmpje van je kind die in een draaimolen stapt hoeft niet zo snel te zijn als “gangnam style” waar duizenden mensen tegelijk naar kijken. Naar mijn weten krijg een storage account 5000 IOPS als soort “garantie” snelheid, maar door deze accounts te combineren kun je dus ook meer IOPS realiseren. Sowieso wordt alle storage data drie keer opgeslagen en werkt Microsoft continu aan om de grenzen van grootte en performance te verleggen. Hoge performance behalen is nog steeds iets waar kennis en kunde bij komt kijken, je moet dan dingen combineren en Microsoft heeft wel een aantal “best practices”
Over QOS en Windows Azure is mij weinig bekend. Windows Azure is vanuit de basis opgezet voor multi-tenancy, maar uit de praktijk blijkt vooral bij SQL Server en bij gevirtualiseerde server dat een ander tenant wel degelijk invloed heeft
Windows Azure beslaat heel veel mogelijkheden en die veranderen en evolueren ook in een hoog tempo. Ik raad iedereen aan te proberen en te onderzoeken, ieder bedrijf en oplossing heeft weer zijn eigen specifieke eigenschappen die bepalen of Windows Azure wat voor je is, of niet. De investering is met name in tijd.
Thnx Henri!
Wel jammer dat er (nog) weinig bekend is over QOS.
5000 IOPS is flink fors en daar word ik al aardig blij van. En laten we offline hier eens verder over brainstormen.
Want ik begin het erg leuke materie te vinden 🙂