zaterdag 2 maart 2013

Windows Azure

Vandaag begonnen met een lang gekoesterde wens om de backend van BesteProduct in de wolken te hijsen. Op dit moment draait de backend op een server met daarop een sqlserver 2012 database en een zwik WCF services, die de data aanleveren aan de frontend. Die server is vrij duur en staat soms uit zijn neus te eten en op drukke tijdstippen kun je eieren bakken op de processoren. Bovendien is er geen fallback scenario, dus als die machine de geest geeft, is er herrie in de tent.

In het kader van schaalbaarheid en bereikbaarheid wordt het dus hoog tijd om dat gedeelte van de website in hogere sferen te brengen. Aangezien de backend in .NET geschreven is, leek het mij dan ook een goed idee om hiervoor Windows Azure in te zetten.

Windows Azure is een clouddienst, zoals Amazon (EC2) en Google App Engine (GAE). Zo'n clouddienst klink vrij mistig, maar het principe is vrij eenvoudig. Je hebt een enorm bestand dat een harde schijf representeert. Dat kan bijvoorbeeld een .vhd zijn voor Hyper-V of een .vmdk in het geval van VMWare. Zo'n bestand kun je als een harde schijf mounten (vhd kun je in Windows 7 Ultimate via disk management attachen). Het mooie is dat je er dus ook een operating system op kunt installeren en er volgens ook nog van kunt booten. En dit is de kern van een cloud dienst. Zet een pakhuis vol met computers (tegenwoordig ook CBlox, een veredelde zeecontainer met een compleet eigen klimaatsysteem, volgepakt met servers), een slim algoritme dat de juiste vhd uitzoekt en hem "ergens" op zo'n server plaatst waarna ervan geboot kan worden. Zet daarop ook nog wat zinnigs, bijvoorbeeld een website, en je bent in de wolken. Het mooie is dat je kopieën van zo'n vhd kunt maken die je dan weer op verschillende servers kunt plaatsen. Iedere kopie (instance) kun je dus zien als een aparte server. Een loadbalancer moet ervoor zorgen dat de last eerlijk verdeeld wordt.

Nu is het de bedoeling dat we 's nachts met een minimum aan kopieën werken en overdag met wat meer. Rond feestdagen is het wat drukker, dus nog meer kopieën. Uiteindelijk zou dat kostenbesparend moeten werken.

De eerste stap is de database. Houd ik die in eigen beheer (on-premise) of gaat die ook de cloud in? (Azure heeft hiervoor een dienst, Windows Azure SQL Database (voorheen SQL Azure). Nu weet ik niets van Windows Azure SQL Database dus dat gaat hem worden.
Daarna wil ik de WCF services in de cloud hebben en tenslotte de invoerapplicatie.

De komende tijd zal ik verslag doen van mijn bevindingen.



Geen opmerkingen:

Een reactie posten