Wednesday, January 11, 2012

My Microsoft Windows Azure 2012 wish-list

UPDATE: Also I'd like to see a version of the Service Bus that's compiled against the .NET Framework v3.5 as not all consumers are able to move to .NET 4 right now.

I have come up with my Microsoft Windows Azure wish-list for 2012 below (hope the Azure product group read this :)
  1. Auto scale compute instances (I know third-party tools exist) 
  2. Allow for scheduled suspended instances that do not eat compute time and also allow for auto scaling out/in schedules without having to delete services from Azure 
  3. Load balancing (F5) for compute instances not round robin 
  4. Ability to configure topic/subscriptions rules via the Azure Management Portal 
  5. Access Control Service support (or any type of federated security support) for SQL Azure for alternate additional security
  6. Out of the box storage editor for managing blobs, tables and queues (I know 3rd party tools exist and you can do this in Visual Studio) 
  7. Developer fabric for Service Bus and Service Bus queues and topics (this would be awesome)
  8. Portal support for VM roles i.e. uploading VHD's (I know command-line tools exist) 
  9. Out of the box support for viewing Service Bus queues and topics and verifying Service Bus endpoints without retrieving the ATOM service bus feed (I know open source code exists) 
  10. Access Control Service support for storage, tables, blobs, and queues 
  11. Support for Hadoop/Big Data on Azure or any type of high performance computing perhaps a instance that targets or VM role to support Windows Server HPC 2008
  12. An easy DR strategy for all Azure services i.e. compute, storage etc.
  13. Managed Service Management API
  14. Give MSDN subscription holders 12 month usage

There in no particular order, not asking much am I!

Thursday, January 05, 2012

VM Role custom VHD instance in Azure Compute - avoid the gotchas!


Background on the VM Role for Windows Azure
Even though I have a ultimate MSDN account which means I have 1500 hrs of free compute time on Azure, I'm using the free 3 month trial anyone can get regardless of whether you have an MSDN account or not.

I got this account (let me correct that) I received this Azure account from a colleague due to sickness and haven't given it back! since then I have been exploring many of the new features within Azure using this account. The thing that has caught my attention, is that, many people within the community is referring to the VM Role as IaaS or Microsoft's attempt at IaaS (which it is *not*).

Steve Plank DPE in Microsoft Reading UK has a very good post on this subject here just to clear up any confusion: (Windows Azure VMRole != IaaS) http://blogs.msdn.com/b/plankytronixx/archive/2010/10/29/windows-azure-vmrole-iaas.aspx

Remember, once your custom VM Role instance is deployed and you are running code on that image, the PaaS model works in the exact same way as a out-of-the-box Azure OS image does when using either Web Role or a Worker Role compute instance. Meaning that on reboot the image could be rebuilt and deployed in another rack or sector and any data you might have written to that particular instance will have been lost.

VM Role compliments the Worker and Web roles in Azure compute. All these services still fall under the standard PaaS compute model in Azure. It just so happens that you are in control of the actual image (OS image) that gets deployed to the instances you have specified. The image currently (as of Jan 2012) has to be Windows Server 2008 R2 Standard or Windows Server 2008 R2 Enterprise edition. In terms of licencing the OS, this is covered as part of the compute costs when you actually deploy your application to run on the custom image.

Today (Jan 2012) the VM Role feature is in beta and if you attempt to upload a custom VM VHD to Azure without being in the beta, it will fail - don't learn this the hard way like I did! instead simply request to be in the beta programme from the Azure Management Portal. You can do this by logging onto the Azure portal management web site: http://windows.azure.com/ then clicking Home. Then right at the top click Beta Programmes. You should then see the VM Role feature, simply click the check box then click Apply or OK. Once you do this you will normally be accepted within 1 day or so.

My Azure 3 month trial account has now been disabled so I can't show screen shots until I sign up using my MSDN account which I haven't done yet. Finding this beta programme link isn't hard though.

Types of VM technologies supported
Notice I keep saying VM Role VHD instance. Yes you are correct, Azure today only supports Hyper-V virtual images. I am unaware of any technology that will create these images other than a physical Windows Server machine running Hyper-V. I do happen to have a couple lying around so creating them wasn't an issue for me but I can see it being a problem for folks that do not have hardware lying around to use. I'm interested to hear any potential solutions around this. My desktop vitalisation technology of choice today is Oracle VirtualBox. VirtualBox can mount and run VHD's but I'm unaware of being able to actually create them using VirtualBox.

Uploading a VM Role image to Windows Azure
This post talks you through the entire process of creating a VHD and deploying to Azure, it's very good: http://msdn.microsoft.com/en-us/gg502178 This article also shows you how to target that custom image in Visual Studio.

The syntax is slightly wrong for the upload of a VHD image though. It is actually quite strange with the odd quotes and hyphens etc. Just to be clear, today, there is no support for uploading a VHD using the portal, you need to use the Azure SDK tool csupload. I am unaware of a RESTful API to do this, no doubt there is.

An example of it's usage is as follows:

 csupload Add-VMImage -Connection "SubscriptionId=xxxxxxxx-388a-4304-90c7-d239c3843624; 
CertificateThumbprint=xxxxxxxxxxxxxxxxxxxxA115BE5D35A45D4E18F7" 
-Description "Base image Windows Server 2008 R2" 
-LiteralPath "\\\nodes\baseimage.vhd" 
-Name baseimage.vhd -Location "North Europe"
  

You'll need to run that command from an administrative Azure command-prompt.

Of course you need to use you're own Windows Azure Subscription ID and x.509 certificate thumbprint. Note, regarding certificates, even if you have the correct thumbprint, you will need the actual certificate installed in the certificate store from where you run this upload command.

The tool is quite clever in that it compresses the VM image before upload. The web site link above covers this process in quite nice detail and where you go from here.

Be patient though, this process takes a while to run - of course depending on your upload speed.

So why would I ever use a VM Role?
This has been talked about so much already in the community but I though I'd add my view on the subject.

There are many cases where you simply need custom code running within the standard image that would otherwise not be possible or installable as a start up custom task (the process of running custom installers when the instance is booted and comes out of sys-prep mode).

One example is performance testing. It could be that you setup a core base image with a tool such as LoadUI for performing performance testing in the cloud saving the need to run this testing on on-premise hardware. This could also include configuration for performance counters.

There are many other scenarios similar to the above. But remember, treat any data being written locally as transient data.

Saturday, December 31, 2011

The trust relationship between this workstation and the primary domain failed

This evening I encountered an error while attempting to log onto my Windows 7 client machine: The trust relationship between this workstation and the primary domain failed


I have a Windows Server 2008 R2 domain controller running DHCP, DNS and of course ADDS.

I figured out the issue (although I would have never of suspected it) moments before the error, I was reconfiguring the DNS IP address for a scope against my DHCP server.

Below is the DHCP scope editor for DHCP in Windows Server 2008 R2. This is a fairly old box which I haven't changed that much over 2 or so years and it is used by many devices/machines.

Searching the web didn't really give any firm solutions other than to rejoin to the domain. so I tried that and it worked.


I think it would be a good idea to raise a bug report for this.

Happy new year!

Thursday, December 08, 2011

London Windows Azure User Group LWAUG - first meeting update

LWAUG - what a mouthful! As mentioned in an earlier post, I attended the LWAUG first meeting on Tuesday night in London. I thoroughly enjoyed it and learned a lot from it. I also found it particularly useful talking to various folks during breaks and after the talks - as I do with most user groups, engaging with members and exchanging experiences/knowledge is one of the reasons I attend.

Sadly though, I could only stay for Richard Conway's talk on Service Management API's in Windows Azure. Service Management API's allow you to programmatically create and deploy services into Azure. I missed Andy Cross's talk on diagnostics as I had to get back to Norfolk, I didn't get home until 00:30am. Andy's slides can be obtained here: http://lwaugbe.blob.core.windows.net/talks/Fluent%20Diagnostics%20Dec%2011.pptx. (note the use of Azure blob storage to store the files!).

I am told some of the service management API's as demoed by Richard are undocumented. Everything talks via REST in Azure, sorry SOAP folks, nothing to see! REST is removing all the fluff you get with SOAP. SOAP just doesn't scale when you're trying to consume services over constrained low-bandwidth networks such as EDGE and GPRS. As we have a ever so increasing breadth of varied connected devices, i.e. net books, smart phones, laptops, PDAs, tablets etc this is a very big deal. So I'm glad the Microsoft Azure architects stuck with REST in Azure. Anyway, I think this is a big subject and one we could discuss at a future LWAUG event(s).

See here for documentation around Service Management REST API's in Azure: http://msdn.microsoft.com/en-us/library/windowsazure/ee460812.aspx it seems fairly extensive, those messages can easily be sent via Fiddler so you don't need to write anything to play around with the API.

You can download Richards slides here: http://lwaugbe.blob.core.windows.net/talks/Service%20Management%20Dec%2011.pptx (again from blob storage)

Also Richard has uploaded his code used in his demo's here: http://lwaugbe.blob.core.windows.net/talks/HostedServices.etc.zip definitely worth looking at if you want to auto-deploy your Windows Azure services into Azure Compute via mechanisms like continuous deployment for seamless integration for your testers and developers.

I'm looking forward to the next meet.

Monday, December 05, 2011

London Azure User Group first meeting - 6th December


Tomorrow night (6th December 2011) I'll be attending the new London Windows Azure User Group meeting near Liverpool Street.

I learn't about it when I attended the recent Windows Azure Bootcamp run by Steve Planky due to the fact that the person that was mean't to go couldn't due to sickness, so I went instead.

I plan to do future presentations for this group and looking forward to it.

There is another Azure user group called UK AzureNet that started in 2009. Lately it has been rather quiet so it's good to see some interest in Azure once again in the community.

If you are quick there seems to be a couple places left, register here: http://www.lwaug.net/

Sunday, December 04, 2011

Why I prefer BitBucket over GitHub




UPDATE 07/01/2012: Thanks for Atlassian for the free BitBucket T-Shirt! :)

I don't really care that GitHub has more repositories or has more traffic or more popular than X in this case BitBucket. All I really care about is features, and I think BitBucket has more of them than GitHub does.

I wrote about how excited I was about BitBucket a few days ago on my other blog here: http://smart421.wordpress.com/2011/11/17/why-i-like-bitbucket/

I recently read this post: http://www.pocoo.org/~blackbird/github-vs-bitbucket/bitbucket.html which talks how GitHub is identical to BitBucket except according to Google, GitHub has a much larger community than BitBucket. I think that goes without saying. There is even support for GitHub in linkedin so you can link your repositories to your linkedin profile - I like that.
However with GitHub you have to pay for things like; disk space and private repositories. Well you do get 300Mb free with GitHub - with BitBucket there is no limit. I need to elaborate on this a bit more. GitHub says these limits are "Soft Limits" and this is to prevent abuse, abuse from what!? adding everything I have ever written to a repository perhaps!

With GitHub the Web UI is just not very intuitive. For example, I was just trying to create a repository, and I'm still trying to figure out how to do it. This could be because I do not have a credit card on file. When clicking "Repositories" I'd expect some kind of link, button to create a new repo or something.

With BitBucket this is so much finer, I find it a lot more intuitive and I don't have to enter a credit card unless I need to exceed the 5 free contributors I got when I signed up.

Another feature I really like with BitBucket (not sure if you can do this with GitHub) is import repositories from other source control systems such as Git, Mercurial or SVN. That's right, you can also create new repositories using Mercurial or Git.

And finally, I like that fact with BitBucket the ability to use a custom internet domain for all my repositories. For example I've set a CNAME record: http://code.simonrhart.com/ to resolve to bitbucket.org. And it just works, navigating to my above sub domain, resolves my BitBucket account.

So remind me again why I'd use GitHub over BitBucket?

Thursday, December 01, 2011

MSDN Subscribers - get you're free Azure account...

MSDN subscribers: http://www.microsoft.com/windowsazure/msdn-benefits/

Non MSDN subscribers for the 90 day trial: http://www.microsoft.com/windowsazure/free-trial/

There used to be a link on the MSDN subscription page but it has seemed to have been moved so I wrote this blog post so I never lose it again and hopefully inform others.

The benefits vary depending on your level of MSDN subscription. For example ultimate users get 1500 compute hours per month - I think that is pretty good.

Nice!

Windows Azure (compute) still accrues compute time whilst services are suspended

I wrote a post last year when I got billed for services that I had deployed to Windows Azure compute instances here: http://www.simonrhart.com/2010/05/moving-windows-azure-ctp-account-over.html

I got billed because when Azure went from CTP to RTM, they started charging customers, no surprise there! but because I forgot I had some demo services deployed in Windows Azure, I got charged. So I quickly deleted them.

I started using Windows Azure compute again - historically I've only used Windows Azure AppFabric which in most cases doesn't use Windows Azure Compute - i.e. you don't normally host any custom services in Windows Azure, instead you use the service bus to relay messages back to your on-premise data centre.

It's good to know now that Microsoft make this very clear in the new-ish management portal (written in Silverlight):



So now it is fairly explicit, so no excuses people, when you get billed for deployed disabled services, don't complain! To stop billing from occurring, you need to delete the services using the management portal entirely, that is of course you don't intend to use those services.

Heads up on the new portal, I like it, it's a much improved user experience over the old multi-site portal for each SQL Azure, Windows Azure and Windows Azure AppFabric. Now management it done under one portal site.