Autoscaling in Windows Azure

In better than 1/3 of my customer contacts, the term ‘autoscale’ comes up. This term (loosely defined) relates to increasing computing capacity to load levels (in non-fancy talk, it means you have enough servers to make sure you don’t tip over when too many users visit / interact with your site).

Companies are keen to ensure that they can take full advantage of the elastic aspects of the cloud: the ability to deploy more resources when they are needed, and take them down when they are not.

Some examples, you ask? There are more than a few application scenarios / patterns that present themselves. If your application fits any of these types of patterns:

    • On / Off application patterns: if you only need a system at definable intervals (payroll, training, accounting systems, and so on) .. the per-minute usage charges of Windows Azure go a long way toward cost savings and usage optimization.
    • Predictable burst activity pattern: maybe your site serves users around identifiable dates (Valentines’ day, Mothers’ day, the silly season, and so on). The elastic nature of Windows Azure Cloud Services enables you to supply additional capacity to manage your customer load requirements.
    • Unpredictable growth pattern: it is expensive and time-consuming to deploy server capacity before it is actually needed .. something startup companies deal with every day. PAYG and elasticity can help small companies grow on their own time, using current cash flow to support their capacity requirements.

Using an autoscaling scenario may meet your needs, optimizing usage / capacity considerations while balancing these against the ultimate cost. A few considerations:

  • Are you short on time and implementation skills, requiring an immediate and managed solution?
  • Do you have an experienced (or willing to learn .. my favorite) development / implementation staff?
  • Do you want something easy, inexpensive and unmanaged?

Depending on your scenario and competency:

    • If short on time and / or lacking implementation as a core competency, companies like RightScale offer managed (read: for a price) solutions to monitor and manage your capacity based on rules that you set. You can try RightScale at for free, but be mindful of ongoing costs and balance them against operational efficiencies.
    • If you have a bit more time and an able development staff, the Autoscaling Application Block is a component you can add to your code that will give you greater control over when and how your capacity will be increased. Ready to get started? Please check out How to use the Autoscaling Application Block from MSDN. Ready for a ‘geekend’? Here’s the Autoscaling Namespace.
    • For easy and unmanaged (well .. managed, but by you .. but not in real time), we’ve recently announced portal-controlled autoscaling options in preview. These features are available in the Windows Azure Portal for your cloud services.

On the third point above, Scott Guthrie posted an update to the platform from the Microsoft Build conference regarding GA for paid websites and mobile services AND autoscale support .. complete with screenshots (check out the “How to enable autoscale section”.

In short (too late!) options abound; at least one to meet the the technical requirements of your project, or the technical skills (and time allotted) to your dev team. Here we are: yet another way to improve and optimize our experiences in the Cloud!

I’ll see you there.

Warming up to SkyDrive

Just a little. Someone mentioned SugarSync to me the other day .. may have to take a peek at it.

With the loss of Live Mesh (see Live Mesh.. We Barely Knew Ye), I’ve had to do a few things a little differently. Besides reliable sync, local storage and pinpoint sharing accuracy, two of the nice features of Live Mesh included were Email Signature and Favorites sync. with Mesh, you could simply click a property box, and those items get synced across any of the systems in the Mesh. From the looks of it, these are not support as easily In SkyDrive.

I haven’t solved the Email signature sync, but here’s how I resolved the Favorites sync:

Your IE Favorites are stored in a personal directory called Favorites in the \Users folder of your system. The simple way to ensure you can access your favorites would be to sync this folder. Under Mesh, the folder was left in place and connected into the Mesh. With SkyDrive, it’s a bit different .. instead of moving to the mountain, we move the mountain to us, In Windows Explorer (not IE):

  • Navigate to C:\Users\yourname\.
  • Right click the Favorites folder.
  • Click on the ‘Location’ tab.
  • Browse to a folder underneath the root of your SkyDrive folder.

In a few moments, SkyDrive will obligingly copy your Favorites folder, making it available to other systems. The process is the same on the other system .. navigate to the folder as above and point to the Favorites folder beneath the SkyDrive root. You might see some duplicates of system- or  OEM-created shortcuts, so replace with care.

I’ll keep looking for a way to sync Email signatures and advise. For the moment, I keep them in a SkyDrive-synced folder in a Word document, which works well enough.

Live Mesh .. we barely knew ye ..

That’s actually not true .. but it was so catchy.

I’ve been using Windows Live Mesh since it first came out in Technology Preview in 2008. Originally the brainchild of Ray Ozzie (some would say the master of sync), Microsoft has made the decision to discontinue the service in favor of SkyDrive, another product with similar synchronization functionality.

Live Mesh offered folder synchronization with Mesh Synced Storage (under several other names, but essentially an early version of SkyDrive), and the capability to connect multiple machines into your provide synch network (a “device mesh” in 2008 terminology). Mesh or SkyDrive, synchronization has some great features:

If you’re a user of multiple PCs or other devices, synchronization gives you the ability to drop files into synched folders:

  • Very handy if you leave a desktop machine at your work and want to manage those files when you get home. Your work is waiting for you when you arrive.
  • Also handy for working on the go .. Mesh had a Windows Phone component.
  • World-wide accessibility, either by PC, device or by downloading files from the web.
    The coolest of the cool: synchronization with cloud storage effectively eliminated the need to do PC backups .. all you need to do is sync the folders you want to protect and your backup worries are over.
      • Buy a new PC? No problem .. install the sync software first, and your files (including driver and device drivers) will follow you to the new machine.
      • Need to rebuild your old machine? See the above.
      • Lose your machine entirely? Your work is safely stored in the cloud.

I’ll follow the masses to SkyDrive and give it a good shakeout .. will be interesting to see if it will satisfy my use cases:

  • A root folder called ‘sync’ under which I have a number of folders, each shared with different people or machines. I use this for various virtual connections .. pulling files onto cloud servers, and so on.
  • A desktop shortcut into which I can simply drop a current file to ensure it will find it’s way to my next machine.
  • The ability to share individual folders with specific people or teams .. all while keeping other folders secure for myself or other teams.
  • Synchronization of my Email signatures and web favorites.

So, join the crowd and grab SkyDrive. Navigate to http://skydrive.live.com, log in with your LiveID and set up some folders to sync or share. While you’re there, investigate the SkyDrive apps for various devices and applications (including a SkyDrive-synchronized OneNote). There is also a SkyDrive Pro version (call it SkyDrive’s bigger brother) with more capacity (and a price tag).

Windows Azure and the Information Worker

A while back (QUITE a while back, actually), Microsoft coined the term “Information Worker” .. a quick Bing search reveals:

The short version: an Information Worker (IW) is a non-developer person who works with the information exposed by applications and application activity by users.

That said, how would an IW benefit from Windows Azure? Reminding us all that Microsoft Excel is the tool of choice for those who want to slice-and-dice-data, that said, there are many ways IWs could benefit from information collected by applications and stored in Windows Azure:

    There are many more (there always are) ways to journey to the cloud.
    I’ll see you there.

Geographic Replication in Windows Azure

Windows Azure had some downtime this past February 29th. Let’s get the news out of the way:

Then, the facts from the Windows Azure Blog:

    I did some tinkering on a few late-nights this past week, recognizing that a reliable solution that does not include dedicated hardware (who wants to buy hardware that you might never need?) would be to locate a customer site in a site that is geographically distant from another. While this is not perfect (there are always risks):
  • Some higher-level controller goes out (in the case of Azure, this could be authentication in the Fabric Controller).
  • Risk of CNAME or DNS update delays.
  • Physical connection to a data center or region.
    What to do, what to do?
    Enter the Windows Azure Traffic Manager. Way back when (in fact, I administered a test with this question): load-balancing in Windows Azure was completely automatic. With the Windows Azure Traffic Manager, you have control over how traffic is routed to your virtual machines:
  • Performance
  • Round Robin
  • Failover

The Windows Azure Traffic Manager allows you to manage traffic between multiple instances of Web Roles for scalability and uptime, based on the criteria above. Further, you can create routing policies to manage geo-routing of incoming user requests so they go to an instance closest to the user. You can set these two policies to enable geographical failover in short order.

  • The first thing you need is a deployed hosted service. Please see the deployment lab in the WATK for details on how to set this up. Select as the primary geographical datacenter the one that suits your needs.
  • Then, you need multiple instances of your roles .. note that you need this to ensure you receive the uptime SLAs anyway. You can deploy this in your Service Configuration when you deploy your project, or in the Windows Azure Portal at runtime.
  • With your application deployed in one data center, repeat the steps above by setting up a hosted instance in a different data center and deploying your code to it. Note that these will have different URL prefixes; but don’t let that bug you.

Verify your deployments in the Windows Azure Portal. You should see both deployments in different data centers. Then:

  • Run the Windows Azure Traffic Manager from the Windows Azure Portal.
  • Create a Traffic Manager Policy, selecting your subscription and the ‘Performance’ option under Load Balancing.
    • Select the two internal DNS names for your disparate services.

With this, your solution is complete. The Traffic Manager will talk with the Fabric Controller, and when performance or access is degraded on one set of instances, it will redirect traffic to the other instances. This should increase your stability in the Cloud!

I’ll see you there.

Windows Azure and Parallel Computing (HPC)

I had the opportunity to do some research the Windows Azure High-Performance Computing (HPC) / Parallel Computing scenario earlier today. In my travels, I encountered (and want to share):

    Jumping into the deep end of the pool:

How do you get started on all this good stuff? Well if you have the need (or want to get your developers started), point them to:

With the Windows Azure Training Kit installed, your HPC developers will want to review the following labs within:

  • Running a parametric sweep application with the Windows Azure HPC Scheduler
  • Running SOA Services with the Windows Azure HPC Scheduler
  • Running MPI Applications with the Windows Azure HPC Scheduler

Yes: HPC / Parallel Computing is in the cloud. In these interesting financial times, who needs:

  • Massive data centers
  • The cost for infrastructure, maintenance and upgrades to the above, year after year
  • Wasted capacity

The Cloud IS the place for HPC, and with a bit of work on your part, you’re ready to join in.

I’ll see you there.

Windows Azure and Node.js

In essence, Node.js is a server-side JavaScript environment that uses an asynchronous event-driven model to communicate between components. The intent is to create highly-scalable interactive applications. It has been compared to the Ruby Event machine but supports interaction as a language construct.

Although (as of this writing) fairly new, Node.js has been embraced by the developer community who have written thousands of modules to do common tasks.

Is it supported in Windows Azure? Why yes it is!

Other online resources for Node.js include:

Keen to hear your experiences installing and configuring on the platform. Please send me your experiences.

Windows Azure Learning Plan: Getting Started

Now that you’ve built your Windows Azure Development Environment, you might ask: what’s next?

If you’re new to Windows Azure and keen to get started on the right foot, your next step is to get some hands-on experience developing and deploying on the platform, and the Windows Azure Training Kit is here to help. In it, you’ll find a rich set of documentation, information and to my point: Hands-on Labs. So once you install the Windows Azure Platform Training Kit .. what’s first?

The WATK installs in the C:\WATK folder by default and creates a desktop default.htm icon. Double-clicking on the icon will open the home page with the links to the documents and labs.

So. Let’s get started:

  • Virtually all coding projects have a “hello world” application, and the WATK is no exception. If you’re new to Visual Studio 2010 as well as Windows Azure, start with “Introduction to Windows Azure”. In it, you’ll explore basic elements of a Windows Azure application.
  • Next, spin through “Building ASP.NET Applications with Windows Azure“, which has examples of MVC and Web Form applications.
  • Once your site is built, how do you get it into the cloud? The WATK provides a lab for this, called “Deploying Applications in Windows Azure”. In it, you’ll see how to deploy an ASP.NET MVC application three different ways.
  • Web sites and web applications hosted in Windows Azure are a little different than sites hosted on physical servers, in that local binary storage may not be attached to a physical drive (unless you include it in your project, which isn’t always practical if you have large, static binary assets). Windows Azure uses three types of storage: blobs, tables and queues, with which you can master in the “Exploring Windows Azure Storage” lab. Blobs are for binary data, tables are for structured (but not relational) data (rows and columns) and queues support application elasticity by providing a place to collect messages (transactions) quickly in times of high load.
  • Many sites are data-driven, and Windows Azure supports this with SQL Azure: database services in the cloud. To help you learn about SQL Azure, the WATK has a lab: “Introduction to SQL Azure”. Want to go deeper? You can, with the “SQL Azure Tips and Tricks” lab.
  • One of the keys to working with data in SQL Azure is getting data into SQL Azure. There are several ways to do this (although some may seem non-conventional at the start). For this you can review the “Migrating Databases to SQL Azure” lab.
    A little midnight oil, a little sweat equity, and you’ll be well on your way to the Cloud!
    I’ll see you there.

Building a Windows Azure Development Environment

Happily, this post has become irrelevant thanks to the New and Improved Microsoft Web Platform Installer (WebPI). That spiffy little kit interrogates your system for the proper dependencies and installs the Microsoft Web Stack, tools, SDKs and the like. To get started, click on the link.

Microsoft updated the Windows Azure Training Kit to June 2012 as well; you’ll find plenty of information therein .. especially labs using the new bits and highlighting the new features of the platform.

The content below is preserved for archive only:

As I’ve been working with some of the best and the brightest the WAISG has to offer, I think it’s time to provide a link to assist others in some Windows Azure 101 (a/k/a “Getting Started”) bits and pieces. In this post, I’ll cover setting up your development environment on a Windows 7 or Windows Server 2008 R2 system.

  • Make sure you have the current Service Pack for your operating system. The easiest way to do this is to click on the Orb (or Start, in WS2008R2) and type ‘Windows Update’. Windows Update will detect if your system is patched to current levels.
  • Install Visual Studio 2010 or Visual Studio 2010 Express (the free version). Be sure to check Windows Update again after installation (and rebooting) to ensure you have the current Service Pack (SP1) installed.
  • Using the Web Platform Installer, Install the Windows Azure SDK for .NET.
  • Visual Studio 2010 Express installs SQL Express by default, but your development environment may include a full (or development) version of SQL Server. In either case, check Windows Update for a current Service Pack for your version. The SQL Express management UI is a separate download: SQL Express Management Studio Express. If you have full SQL Server, the UI is included. For help running the UI, please see “Using SQL Server Management Studio” on MSDN.
  • Install the Windows Azure Training Kit. This kit is chock-full of information, tutorials and source code. The current version is “January 2012”. As this is updated frequently, I suggest you do the full install (about 500 mb) and install into a separate folder on your hard drive.
  • Get the additional bits you need for the labs. To do this, click on “Prerequisites.htm” in the folder you installed the Windows Azure Training Kit. This will start an application that will interrogate your system and advise any components you need for the labs you want to run.

:: whew ::    Only a few more steps (I promise).In order to use the local emulators:

  • Compute: You MUST run Visual Studio as an administrator (link to a Windows 7 Forum, but works for both W7 and 2008).
  • Storage: Your logged in user MUST be a member of the SQL Server sysadmin group (link to David Browne, who provides a script that does this for a local user .. as long as that local user is an administrator of the local system .. otherwise, contact your IT). This is required as the local user must be able to create databases for storage of Blobs, tables and Queues during development.

With these bits installed, you should be able to conquer any of the labs in the Windows Azure Training Kit with ease .. and speed your way into the Cloud!

I’ll see you there.

WAISG: Windows Azure Enablement Resources

So. Where have I been this past TWO months?

I am pleased to explain my whereabouts: I’ve joined the Windows Azure  Inside Solution Group. The WAISG is a business and technology enablement team devoted to accelerating the velocity of Windows Azure deployments worldwide.

Whew. Quite a mouthful, that. The program statement is worse .. but contains only one comma.

Our team supports 35 countries in 7 languages and will get you to the next step of your Windows Azure deployments. In a lot of cases, we’ll point you to public resources; in others, we’ll emulate and escalate as we need to get the job done with you.

We’re easy to reach: navigate to the Windows Azure home page at http://windowsazure.com and select the ‘Click to Chat’ bubble. We’ll pick up.

The best part: I get to work with some amazingly talented people, all of whom subscribe to my favorite quote: “When you stop learning, you stop growing”.

Let me tell you: this team is growing like mad .. collective brains learning from our customers and each other .. every day. It’s a great group, and one with whom I am proud to be guiding, mentoring and growing my own knowledge.

You’ll be hearing from us.

%d bloggers like this: