Azure: Flex on IaaS, Keep PaaS Pure

I recently commented on Mary Jo Foley’s post Can Microsoft Save Windows Azure?  The key point of my post was that IaaS is good for Azure because it is good for adoption rate.

This change does raise concerns for software developers, however. On the topic of increasing IaaS in Azure, Mary Jo wrote:

This means that Microsoft will be, effectively, following in rival Amazon’s footsteps and adding more Infrastructure as a Service components to a platform that Microsoft has been touting as pure PaaS. [highlight added]

For software architects and developers, Microsoft PaaS approach with Azure has been a boon. Many non-developers would be surprised to know how much “infrastructure impact” creeps into system architectures and implementations. The (historically) pure PaaS Azure, however, provides us with the ability to implement highly available, scalable and performant systems with almost no infrastructure concerns.

Many consider Amazon to be the top cloud computing provider.  Amazon Web Services (AWS) provides a very good set of building blocks which (increasingly) work well together. From a developer’s perspective, however, these building blocks require too much “IaaS overhead.”   Determining which building blocks will be needed is the first hurdle. But then come the “which to use in what?” hurdles. Which distro and version of one of the Linuxes, which database type (SQL, NoSQL), how will the various systems communicate with each other, etc., etc., etc.

With Windows Azure, however, a developer can implement code on a developer workstation (using the Compute and Storage emulators).  When ready, the developer can deploy code to Azure directly from Visual Studio.  Relative to just about every other cloud provider, Azure developers start out much further down the road (= saves a lot of time).

 

In PaaS, Purity Matters

So how does Azure’s IaaS push impact developers?  Developers will be negatively impacted by letting IaaS pull in PaaS impurity.  In other words, if Microsoft muddies the existing Azure development platform (code interfaces), the level of “IaaS Overhead” increases.  As the level of IaaS Overhead increases, the time and cost benefits of PaaS erode.

Consider the Win32 days: Microsoft’s progressive push toward a standard set of API’s for Windows created a competitive advantage.  Although there were gaps (e.g., API’s supported on Windows NT, but not Windows 95), Win32 was far more pure than any other API at the time.  Companies that developed software for the myriad Unix systems encountered far more platform related costs than companies developing for Windows.  If Microsoft had tried to support Sun, IBM, HP and other Unix libraries, the advantages of Win32 would have vanished.

Hopefully Microsoft plans to keep the PaaS side of Azure pure, while letting the IaaS side flex.  Otherwise, they will undermine one of their most significant competitive advantages – a pure PaaS.

Periodic Table of Cloud Computing

David Pallmann, General Manager at Neudesic has published one of the best explanations of Cloud Computing in Windows Azure Design Patterns.  The title is a double misnomer – it isn’t just about Azure, and it is far more than Design Patterns.

Pallmann’s Periodic Table of Cloud Patterns is one of the best tools for visually capturing the various components and facets of Cloud Computing.  He uses these elements very effectively to touch on Infrastructure-as-a-Service (IaaS), Platform-as-a-Service (PaaS) and Software-as-a-Service (SaaS) before delving into Windows Azure’s PaaS offerings.

Although the slides cover Windows Azure, Pallmann’s points are easily abstracted to Cloud Computing in general.  And he provides a very solid foundation for digging into areas such as:

 

  • Claims-based Security
  • Service Bus (resilient queue)
  • Storage – Blobs, Tables, Queues
  • Database – SQL Azure
  • Compute Instance Types

 

Overall an excellent presentation for Cloud Computing and well worth reviewing!

Amazon CloudFormation – BYO PaaS?

Amazon Web Services (AWS) recently announced the addition of CloudFormation to their offerings. With this addition, AWS continues to grow from an IaaS provider toward becoming a PaaS provider.  Will AWS will become a PaaS provider in terms a consistent programming interface (API) that abstracts the underlying cloud resources?  It not likely; certainly not soon.  Microsoft’s approach with Azure – start with the platform and then open the infrastructure – is better for true PaaS.  AWS offers so many divergent resources that building a consistent API for PaaS is near impossible.  From a technical perspective, their best approach might be to adopt (and heavily influence) OpenStack which has been experiencing good growth and adoption recently.  That direction is not good for business, however, since applications would be inherently portable to other providers.

So what’s the point of CloudFormation?  Amazon’s announcement states that CloudFormation aims to provide “an easy way to create a collection of AWS resources and provision them in an orderly and predictable fashion.”  Is this an IaaS or PaaS capability?  CloudFormation primarily falls into the Systems Management space which is definitely IaaS.  (The fact that AWS does or may expose programmatic interfaces to CloudFormation reaches into the PaaS arena, but it isn’t Cloud Formation’s raison d’être)

This new AWS functionality will certainly benefit SaaS providers.  I worked with a SaaS provider a year or so ago which hosted its own servers.  Their clientele were Fortune 500-types, so the company hosted a new set of hardware for each new client.  If the company were able to host its SaaS in AWS, it would save on capital outlays for new customers. CloudFormation would further cut costs on administrative personnel, freeing people to stand up temporary SaaS environments in AWS, for example, which would facilitate the sale process.

Interestingly, companies wanting to build special purpose (niche) cloud platforms should be able to leverage CloudFormation into their own PaaS.  As an example, companies could use AWS to host OpenStack and use CloudFormation for provisioning and management.  Such a company may gain enough customers and attention to be gobbled up by Amazon itself.

How-To: Connecting to Internap’s XIPCloud

I didn’t find straight-forward instructions for using .NET with XIPCloud on Internap’s portal, so I’ll pass along what I learned.  This article assumes you are using Visual Studio 2010 and that you have already acquired an Internap account for XIPCloud.

Step-by-Step

  1. Acquire & Build OpenStack C# SDK
  1. Download the Rackspace C# library for OpenStack. Go to the Rackspace / csharp-cloud page on GitHub, push the Downloads button and click on the zip file to download (this article is based on csharp-cloudfiles-1.5.0.0)
  2. Extract the zip files into your preferred location (where you typically keep external or 3rd party code or assemblies)
  3. Using Visual Studio open the solution file, com.mosso.cloudfiles.sln, from the extracted files location.
  4. Build the solution – I batch built all configs.  Assuming the builds completed successfully, you now have the OpenStack C# assemblies in <Sln file location>csharp-cloudfiles-1.5.0.0com.mosso.cloudfilesbin[Debug|Release]
  5. Close the solution
  1. Create A OpenStack Client Application
    1. Create a new .NET application – this article uses a C# console application.
    2. Right-click the References folder under your new project and select Add Reference…
    3. Push the Browse button, navigate to the csharp-cloudfiles assemblies (see #4 above), select com.mosso.cloudfiles.dll and log4net.dll, push the Add button and then Close
    4. Now, change Program.cs to:

using System;

using com.mosso.cloudfiles;

using com.mosso.cloudfiles.domain;

namespace XIPCloudDemo

{

class Program

{

static void Main(string[] args)

{

Uri uriAuth = new Uri(“https://auth.storage.santa-clara.internapcloud.net/v1.0”);

string userName = “<your user name goes here>”;

string apiKey = “<your user password goes here>”;

UserCredentials userCreds = new UserCredentials(uriAuth, userName, apiKey, string.Empty, string.Empty);

Connection connection = new Connection(userCreds);

/* Add more code here.  For example, to create a container and copy a file to it…

connection.CreateContainer(containerName);

connection.PutStorageItem(containerName, localFilePath);

*/

}

}

}

Now you’re ready to build and run your app!  If you have trouble, use Fiddler to diagnose what’s going across in requests, headers, responses, etc.

Somewhere on Internap’s portal or in the developer guide I found the note about using your portal username (email address) and password for X-Auth-User and X-Auth-Key.  Hopefully they’ll provide actual API keys like all the other storage providers do.

I hope this helped you get started.  Feel free to leave a comment if you have any questions.

Internap Launches XIPCloud beta

In the news today: Internap announced its cloud storage offering, XIPCloud™.  As per the announcement, the advantages are:

  1. “High performance” due to their own “patented Managed Internet Route Optimizer™ (MIRO) technology.”  The announcement was not clear, however, on how this improves performance.
  2. “Open” due to leveraging OpenStack.org

They also list “Available” and “Secure” as advantages, yet these do not distinguish them from other cloud storage providers.

So, what’s the best feature of XIPCloud?  It’s really inexpensive – well, for a little while.  During the beta period (currently through July 31, 2011), XIPCloud costs just a penny / GB / month for storage space and egress.  Wow! 1 TB of storage for just $10.24 / month! Their pricing page indicates that storage space and egress bandwidth are each just $0.01 /GB/m; ingress bandwidth is free.  Pretty good if you don’t mind working with OpenStack’s Swift.

They also show that CDN egress pricing will be just a penny / GB / month during beta, but the disclaimer is “Pricing for CDN dependent on availability of new feature.”  So, when (and if) CDN becomes available, you’ll get cheap egress there, too, until 7/31/11.