Got a few minutes to kill, and want to get to grips with Microsoft’s Windows Azure Platform? Let’s do it in the best possible way – by actually trying it. I’m about to show you just how easy that is and also explain how valuable that knowledge can be.
If you do this in Canada by Dec 31st 2010 and tell Microsoft Canada about it (see below), Microsoft will give CDN$25 to your nominated user group AND send you a $25 gift card too!!
Let’s get a few questions out of the way first…
Is the Windows Azure Platform (and this post) for Developers or IT Pros?
It may not have seemed like it at first, but it’s most definitely for both, with a powerful set of tools for developers and a set of infrastructure tools for IT Pros. While I’m a hands-on software architect, I’m also a CTO, and that means making decisions from the view-point of an IT Infrastructure/Support (aka IT Pro) guy. The platform provides a fairly clean hand-off point between roles and this post is from the point where the person with IT Pro role should be involved.
The platform provides highly agile, scalable and available hosting of web sites/applications and storage, as well as a highly available database at competitive prices. There are also options to bridge the public and private cloud. It’s offered as a Platform as a Service (PaaS) with APIs and tools to automate provisioning, scaling and monitoring of applications.
There’s a concern that IT Pros will be somewhat ‘replaced’ by such a programmable hosting platform, but I’d say that forward-thinking IT Pros will embrace this platform as another offering in their arsenal of infrastructure capabilities. One of the sessions for IT Pros at the recent Microsoft Canada TechDays 8-city tour, was an Azure session about what the cloud means to IT Pros – it was packed out in several cities. In 15 minutes you too could have the head start you need.
Will it cost anything?
Microsoft is offering free trial offers for the platform. If you follow this guide today and closely follow instructions you will not be charged anything to go through this exercise.
What is “Windows Azure” anyway?
“Windows Azure” specifically is the cloud-hosted compute service component of the Windows Azure Platform that can run IIS-hosted applications (including ASP.NET applications and FastCGI-compatible parsers like PHP), Windows-Service-like applications and even your own Windows Server 2008 R2 VM. It comes will the ability to scale to multiple instances in minutes and includes automatic load balancing features.
That’s enough questions… let’s just get on with it! I’ll try to answer likely questions as you go.
Before you sign up for some fun, you’ll need a Windows Live ID.
Live IDs are most usually thought of as being for personal services like Hotmail, Messenger or Xbox LIVE, but they are now increasingly being used on Microsoft’s business-services-related properties. Given that, it’s probably a good idea to NOT use your personal Live IDs (that you may have to hand to someone if you leave!), but create business-specific ones that can be shared by people in the same role if necessary (e.g. accounting). The Live ID you use here will be for both the subscription administrator and the primary service administrator. You can also add additional Live IDs for service administration.
I suggest making one just for this by going to http://www.live.com/…
… clicking on Sign Up…
… and completing the form with a suitably strong password (of course!).
You are now ready to sign up for your Microsoft Online Services account and Introductory Special offer offer in one go.
Be sure you have the time (15 to 30 minutes) to complete this guide in one go so that you are not charged anything, but still get to experience Windows Azure administration.
So, let’s move on to…
Signing up at the Windows Azure Platform Portal… at http://www.azure.com
Click on "Sign up now" or go to "Purchase"->"Buy now".
You’ll see the Introductory Special that will let you play around for free just enough to try it out. I’ll explain what’s relevant in the offer for this guide as you go along.
So, go for that Introductory Special, and click on Buy…
In the next 4 steps you are doing the equivalent of building/buying your own data center premises but without it costing you anything!!
Sign in with the Live ID you have created and you’ll end up at Step 1…
Complete this page as the entity (self or company representative) who will administrator the subscription and the services included (Windows Azure, Storage, SQL Azure, AppFabric, Data Transfer), if only temporarily. Only tick the two boxes if you want to.
Click Next onto step 2…
You should give your subscription a name, like “Intro Offer Test”. Once you get to the management portal, you’ll see that name there. View the agreement, click the box to say that you agree if you do, and click Next onto step 3…
OK… so the scary-looking part now. The Introductory Special includes an amount of free services, but if you go over the defined limits, then obviously you have to pay for that. TO BE CLEAR, if you follow this guide correctly and follow all instructions (as of today) you should not end up being charged for anything! I can tell you that I have had an account for a year and never been incorrectly charged and have used my personal credit card on at least one account. NOTE: you are not using any chargeable services just by signing up, so there’s nothing to bill you for at this point. ‘Do the business’ and click Next onto step 4…
Click Finish and you are now sent to a ‘provisioning in progress page’…
In a few minutes (typically 1 or 2), you’ll be redirected to your ‘virtual data center in the cloud’ ready for…
Deploying an Application Using the Management Portal at http://windows.azure.com
The portal uses a Silverlight application, showing Microsoft’s commitment to Silverlight as a rich application platform. If you don’t have Silverlight installed you can either quickly install it, or use the old style admin interface (which isn’t covered here).
This is your administration portal. Not all platform services have been integrated here yet, but you can stay here for Windows Azure specifically.
Now we’re going to create a Hosted Service, by clicking on "New Hosted Service"…
This is akin to setting up a FQDN (under the cloudapp.net domain) in DNS and a load balancer (without ordering, installing or configuring either!). Fill out the form as shown, but you need to enter a unique prefix (and will be told if it’s already in use). For a production application/site under a specific domain (e.g. mydomain.com) you would set up a CNAME record (e.g. myapp.mydomain.com) to point to the FQDN you have asked for, but you don’t need that for this exercise.
You can pick a specific data center to have your service run it, as shown. Alternatively you can also create an ‘affinity group’ that can be used across multiple platform services (e.g. hosted app, plus storage, plus database) to ensure they are co-located in a single data center. Think of this like VLANing everything together. Using a single affinity group across servies also ensures that you are not charged for data transfer between components.
Note that you can do a lot more in this step all at once, but you should select "Do not deploy" in this case to follow the steps more manually below.
Click OK and in less than 30 seconds you should see the status shown here…
The certificates node is provided if you want to upload SSL certificates for your HTTP sites/services.
Make sure you have clicked on the "SilverlightApp" Hosted Service line and click, "New Staging Deployment"…
Windows Azure provides a ‘Staging’ and a ‘Production’ slot allowing you to first privately test a version of your deployment before hosting it for production use under the FQDN you requested earlier.
You need a packaged deployment file. I’ve made one for you to use here. Download and unzip it to find the two files you need to select with the Browse Locally buttons. The application is an ASP.NET 4 website hosting a small Silverlight application that simply loads the Bing Maps Silverlight control.
The .CSPKG file is a ZIP file with all the binaries and a definition of service being created. The .CSCFG file contains configuration for the service that can be changed independently without rebuilding the package. More on these files as you go…
The Deployment name is a label for keeping track of each deployment you do; you may want to use something that matches up to your internal publishing/version tracking like the release label from a source control system.
Click OK… at which point the ‘meter is running’ using up the free included time (25 hours) and then billable time, so you must remember to follow the shutting down steps below before your included time runs out to avoid being billed!
The provided .CSCFG file states that initially, you only want 1 instance (or VM) of the ASP.NET application. If that 1 instance were to fail, the overall application would be down, so it would make sense (in production) to have 2 to have a chance of achieving high availability. Hence this message stating that the SLA only applies if you specify 2. You can say Yes to ignore this warning right now. Because the .CSCFG file is independent from the .CSPKG file, it’s possible to change the number of instance on the portal later…
The screen will show updating status and further levels will become available to drill into…
until everything shows as "Ready"…
At this point, the application is redeployed and available.
At this point the hours included in the Introductory Special are being used up - you have 25 hours to use the application before you will be charged anything. Be sure to follow the instructions below to remove it before then!
To be clear, you have just done, in about 5 minutes the equivalent of:
- Ordering, waiting for and receiving equipment
- Racking equipment
- Installing the OS
- Installing and setting up IIS Role
- Deploying web application files
- Configuring the web application IIS
- Configuring the load balancer
- Configuring a temporary FQDN
The UI includes a number of nodes in the tree you can explore to see what was deployed and its current status.
A .CSPKG file includes a definition of the ‘roles’ to be run under the Hosted Service. There are different types of roles including Web Roles (things running under IIS including multiple sites), Worker Roles (Windows-Service-like application including native code) or VM Role (using an uploaded VHD). The .CSPKG file can include zero or more of each type of role (and corresponding files). It also defines the size that each role should be from the following choices:
|Size||CPU (GHz)||Memory||Instance Storage (GB)||I/O Performance|
|Extra Small||1.0||768 MB||20||Low|
|Medium||2 x 1.6||3.5 GB||490||High|
|Large||4 x 1.6||7 GB||1000||High|
|Extra Large||8 x 1.6||14 GB||2040||High|
This sizing is set by the developer of the application based on the likely running requirements of each role. With the .CSCFG file and the management portal, you can perform scale-out by changing the number of instances.
The provided .CSPKG file defines a single Web Role of size ‘Small’ and the .CSCFG file says that you want just 1 instance (or VM). The .CSCFG file defines the number of virtual instances of the service components (known as ‘roles’). In the management portal, "SilverlightMapWebApp" is the name I gave to the Web Role.
Let’s try the application! Under DNS in the UI, is a GUID-based URL for launching the application in the staging environment. Click on it, to see it running…
Note that after a few seconds you may see an error message. This is simply because you have not signed up for a Bing Maps developer key and configured it on the application. You’ll see how this works shortly if you want to give it a try.
For your trial enjoyment, the Introductory Special includes 25 hours with 1 small compute instance. It also includes 500MB of data in and 500MB of data out, which easily covers this experiment, especially since the mapping imagery is data transfer from Microsoft mapping services to your PC, and not billable data transferred out of your hosted service.
Getting Microsoft Canada to give money to your User Group (by Dec 31st 2010)
If it’s before Dec 31st 2010 and your subscription is registered in Canada, you can get Microsoft Canada to donate CDN$25 to your chosen user group by sending a simple email. Plus, they’ll arrange to send you at $25 gift card.
Send an email to firstname.lastname@example.org.
- The name of your nominated User Group as the Subject.
- A screenshot of the map application running in your browser (you know ALT-PrtScn) – be sure to show full address bar!
- Any feedback you’d like to give on your azure experience.
That’s all you have to do!
So something like this…
Monitoring, Scaling Up and Scriping
As an IT Pro, you’d probably like to see what’s going on with your deployments, so click on the "Deployment Health" items on the left…
You can see that everything is fine, but you are warned that you are not covered by the SLA with just one instance running.
In terms of additional monitoring there are several choices:
- You can Remote Desktop into a Windows Azure instance VM for specific investigation
- The Windows Azure instance is generating entries for the Windows Event log, IIS log, and application specific diagnostic log. The developer of the CSPKG file can line things up so that logs are periodically dumped to Windows Azure Storage for all instances and retrieved by monitoring applications (currently 3rd-party or made by your developers).
- Also, future version of SCOM should include the ability to monitor Azure deployments.
You can improve our availability very quickly. You can skip to "Going into Production" below if you want to skip this step.
Go back to the "Hosted Services", select the "Silverlight App" Hosted Service and click "Configure"…
This is where you get to manually edit the .CSCFG file or upload a replacement. In this case you can change the instances count to "2" as shown.
Other settings may be exposed by the .CSPKG file you are given, and this is something you should work on with your software team. In this case, a setting called MapKey is exposed. As an additional exercise if you wish, you can go to https://www.bingmapsportal.com/ to get a free trial developer key to put in the value for MapKey which should make the map’s error message go away.
Click OK and watch as everything updates until you get to this start… noting that you will then be using 2 small compute instances per hour so your included Introductory Special hours will now last no more 12 hours before you must shut it all down (as explained below) to avoid being billed.
You now have 2 instances running.
You have just (in about 5 minutes) done the equivalent of:
- Ordering, waiting for and receiving MORE equipment
- Racking it
- Installing the OS
- Installing and setting up IIS Role
- Deploying web application files
- Configuring the web application IIS
- Configuring the additional equipment on the load balancer
Your life could get much easier this way…
Note that developer of the .CSPKG can decide whether roles will restart as a result of setting changes, therefore maximising downtime.
If once of the instances were to fail, you would see this kind of thing in the Deployment Health section.
On the MSDN Code Gallery you will find a set of PowerShell command-lets available for download along with a guide and sample. This is possible because the management portal exposes a REST-based API. These can be used to remotely deploy, control and change CSCFG settings on Windows Azure. The same API is also used by the tools UI in Visual Studio for developers.
Going Into Production
At some point, you may decide that your application is ready for prime time. To expose the application on the FQDN you originally requested, you need to put something into the production deployment slot. You could use the "New Production Deployment" feature or as shown here, you can switch the Staging and Production slots by selecting the "SilverlightApp" Hosted Service and then click "Swap VIP"…
Click on OK and after a few seconds you’ll see this…
Automated load-balancer configuration.
The environment has now changed to "Production". Since there was nothing in production before, there was nothing to swap with, so there is now no staging deployment. The DNS name for the application is the FDQN you requested. You can click on it to try it out…
Shutting Down and Removing The Deployment (aka don’t charge me for this experiment!)
This is a two-step process; be sure to do both things.
First, stop the VMs running the application by simply selecting the "Version 1" Deployment and click "Stop" and you’ll (within a minute or so) see this…
To not be charged you must also do this second step – deletion of the deployment. Microsoft charges for deployed hosted service based on the number of instances of all roles in all slots even when the service is not running because by deploying something you are asking Microsoft to reserve the capacity such that you can click Start or Stop at will.
So you must now click "Delete" and within a minute or so you’re back to this…
… and you are no longer ‘running up the meter’.
If you wish, you can also Delete the "SilverlightApp" hosted service, which frees up the FQDN you selected.
Managing Your Subscription(s) at https://mocp.microsoftonline.com
As you were signing up for the service, you created an account with Microsoft Online Service. You can go there and see the status of your account and any billing on the account. Sign in with the same Windows Live ID and click Subscriptions…
Click on Home and then View my bills to see what you have been billed. Note that this billing history may be time-delayed a few hours.
Here’s my billing record showing that following this guide didn’t cost me anything
You can contact Microsoft Online Services to request removing the subscription completely if necessary.
So now hopefully you’ve seen how powerful Azure is, deployed an application, seen how quickly it scales, removed the application(!), got some money donated to your nominated user group (if done early enough) and can see why it’s a good to have the experience.
There are other services to explore from the Windows Azure Platform including including SQL Azure (that’s part of your Introductory Special) – you can get that up and running in the portal in just 2 minutes and connect to it from SQL Server 2008 R2 Management Studio or even Excel!
Azure can form part of a great solution from the client (with Silverlight on the desktop, web or Windows Phone) to the cloud. If you are looking for such a solution then get in touch with me or Ace of Clouds, to give you an expert hand with solutions or training from the client to the cloud.