Last night I attended a
Developer SIG meeting at the Microsoft Theatre in Melbourne. The presenter was
David Lemphers from the Microsoft Windows Azure team. The presentation gave a walkthrough of how to create .NET applications for the Azure platform, and an overview of the cloud architecture.
My impressions after a day of reflection on the Windows Azure platform as a whole, are simply this:
- I can see this being something to keep an eye on for the future, but not something ground breaking (considering others [Amazon, Google] have already gone down this path).
- I'm still not sure what Microsoft are going to bring to the cloud platform scene that is going to make people choose it, over its competitors - other than the fact it is firmly aimed at .NET developers and simple integration with Visual Studio.
- Having said that, the platform is still in its early stages, therefore my above points could be completely blown out of the water.
I took a few notes during the presentation outlining what was talked about. I'll try my best to make as much sense as possible, but the notes were taken down quite quickly and therefore I might even struggle to remember what they mean:
Development- Two application roles: Web and Worker.
- Web roles are like your asp.net websites, web services (basically anything an outside 'client' can connect to over the net)
- Worker roles are like background processes - possibly like Windows Services, or scheduled tasks (batch jobs, console apps)
- Two SDK's are available to download which allows you to develop your Azure applications.
- Visual Studio has a new project type called 'Cloud services'
- Your local development environment can emulate the cloud so you don't have to publish your app everytime you want to run it.
- Web apps (roles) can be developed pretty much the same as your standard ASP.NET apps
- There is no caching built into the azure framework as of yet - the MS team are still working on that.
Deployment and Monitoring- Your apps can have inbuilt heartbeat checks in them so that Azure can monitor your app health (and give it a kickstart if it has died)
- You can set a 'Fault tolerance' level for your apps. So if you choose a level of 2, your app will be deployed across 2 servers.
- You can deploy a number of 'instances' of your app for load balancing.
- Logging is done to a central repository (meaning each instance logs to the same place)
- You can access the Azure Portal at lx.azure.microsoft.com (you obviously need to be registered to login)
- You can configure different environments in your Azure portal i.e. Test, Stage, Production
- There appeared to be two main areas to work with in the cloud portal: Hosted Services and Storage Services
- To deploy to the cloud, you need to 'Publish' your app from Visual Studio, which will create a copy of the app on your local machine, and then from the cloud portal (web page) you create some space for this app and upload it.
- Automated build and deployment support is coming soon - so you don't have to go through the Web Portal (for things like Continuous Integration)
- You can promote your 'Stage' app to 'Prod' at the click of a button. (Strangely when you do this it basically just swaps your environments over i.e. Stage becomes Prod, and Prod becomes Stage)
- Staging urls for your web apps are auto generated guids. eg. I might be developing a Banking app, and I publish it to the Stage environment on the cloud, the url I use to access it will be something like this: asdfasdfa-sdfasfda-fasdwerwe...
- All apps hosted on the cloud has .azure. (or something like this) in the url. Which means if you want your own url (like mybankingapp.com, you would have to buy that domain name with some other domain provider and setup a url redirection and url masking to your specific azure app url)
Data and Databases
- SQL Server is not supported, therefore migrating existing applications which use SQL Server database will be a very difficullt taks.
- It looks like there is a new data model for storage on the cloud. I got the feeling it was a bit like an object database. But I'm really just speculating here.
- No longer use SQL for querying the data - you would use LINQ in your apps
- There are currently no tools like SQL Server Management Studio for viewing and querying data in the cloud.
- I asked about security and privacy protection of confidential data. David mentioned there will be certain levels of privacy protection that will be agreed to in your SLA, it would be up to the developers to encrypt any sensitive data. Basically it appears the onus is on the developers to ensure their data is safe. I have a feeling this will be a big issue for business adoption - having sensitive data hosted up in the 'clouds' rather than in the confines of their own data centres.
Physical Data Centres
- The data centres are all in the USA
- Its basically just rooms with giant racks of servers
- Rack = Fault domain (which means if you set your fault tolerance to 3, your app would need to be deployed across 3 separate racks)
Business model
- No costing model is available yet - still being worked on
- You only buy what you need. i.e. If you have an app that is running on a server that can handle 10 users. Lets say you get an additional user, instead of going out and buying a whole new server, (which would now mean you have the capacity to handle 20 users - but 9 'users worth of server' going unused), you just buy enough server power on the cloud to handle the additional user. This appears to be a big selling point, the different levels of scalability and how you can control that without needed to worry about the physical hardware.
- Handle flash points - sudden increase in load. Being on the cloud means this situtation is no longer a threat where you suddenly find your product becoming very popular, but not having the hardware to support the load/page hits.
So there you have it. I hope Microsoft organise a few more of these presentations and I enjoyed this and would love to learn more.
Also to anyone that understands the Azure platform, please leave some comments to clarify anything that I have said above that is just plain wrong.