Windows Azure and the IaaS Context (or lack thereof)

Windows Azure has several primary competitors in the IaaS Realm, even though they aren’t technically an IaaS Cloud Provider at all.  Some of these competitors in this space are Amazon Web Services (AWS), Rackspace, GoGrid and VMWare.  Each of these providers offer virtual machines with either Windows or Linux Operating Systems, multiple data centers for geographically dispersed access, dynamic scaling, and other features associated with hosting infrastructure in cloud computing.

Some of the more dedicated infrastructure services provide content delivery, routing, load balancing, virtualized instances, virtualized & dedicated private clouds, DNS routing, autoscaling at an infrastructure level and more.  Some of the providers and their respective services are listed below:

Amazon Web Services Infrastructure Services

  • Amazon Cloudwatch enables Autoscaling.
  • Amazon Cloudfront is a content delivery network (CDN).
  • Amazon Route 53 for highly available and scalable DNS.
  • Amazon Virtual Private Cloud (VPC) for secure bridges into on-premises computing.
  • Elastic Load Balancing for distributing incoming application traffic.
  • SQS, or Simple Queue Service for messaging.
  • SNS, or Simple Notification Service for alerting.

Rackspace Infrastructure Services

  • Content Delivery Network (CDN)
  • Simple Load Balancing using virtualized server to provide load balancing.

GoGrid Infrastructure Services

  • Content Delivery Network (CDN) with a boasted 18 points of presence on 4 continents.
  • F5 Hardware Load Balancing
  • Data Center specific provisioning.
  • Autoscaling with Vertical RAM Scaling and more features.

Pricing IaaS

These companies offer a lower price point, which plays into the assumption that the user of the cloud services is skilled in setting up the needed networking, access, services, servers, and other things needed for each virtual machine launched within the respective cloud environment.  Some of the price points, especially in regards to Linux, are 1/3rd to 2/3rd the price of Windows Azure.

The Windows Azure advantage is at a higher price point, but lower total cost of ownership.  This advantage unfolds when operating in the dedicated development environment, but removing the networking and information technology arm of a company.  Basically, a company buys the cloud services from the grid just like they would the building power for their headquarters.  This leaves the generation of power, or simply the compute power, to a dedicated utility instead of having in house management of these resources.

Infrastructure Services

There are a number of companies in the technology industry today that offer infrastructure services.  Infrastructure services generally revolve around a few specific characteristics;

  • Content Delivery
  • Routing & Load Balancing
  • Virtual or Dedicated Private Cloud
  • Operating System Virtualized Instances

Windows Azure provides two primary infrastructure services.  Both of the services are somewhat minimal, since Windows Azure is focused on being a platform and not an infrastructure.  The service is the Windows Azure Content Delivery Network and the Windows Azure VM Role.

The content delivery network is provided as an add-on to the Windows Azure Storage to provide faster geographically dispersed access to data.  This increases the speed of access to the data and sties within the Windows Azure Cloud Platform.

Windows Azure VM Role

Windows Azure as marketed by Microsoft is not an infrastructure service.  However Microsoft has broken from being a pure platform only service with the Windows Azure VM Role.  The Windows Azure Platform is still primarily a platform service, but the VM Role has been provided with the intent of migrating customers that may need a full machine instance of Windows Server to run existing applications.  This enables an enterprise or other business to start migrating existing applications without a complete rewrite of those applications.

This enables the migration of applications that have long, non-scriptable, fragile installation steps to be moved into the Windows Azure Cloud Platform.  The VM Role does pose a possible distraction to developers, who should focus on developing applications against the Windows Azure Web or Service Roles.  This provides the greatest benefit and chance for savings over time.  In addition the roles are patched, and kept up to date by Windows Azure instead of needing hands on maintenance from the account holder or developers.

On a Windows Azure VM Role the operating system, updates, and other maintenance of the role are left up to the account holder.  Microsoft offers no automated patching or other support.  The VM Role must also be monitored by the account holder.  Windows Azure knows when the system becomes unresponsive but otherwise doesn’t act unless the system completely crashes, shuts down, or otherwise stops.

The VM Role is also advantageous when an account holder or developer needs elevated privileges for a particular application.  This however does not mean it is an encouraged practice to use elevated privileges for application development within Windows Azure.  But the VM Role offers the ability for those situations that are inflexible and require abrogation of good design principles.  This feature offers the ability to install MSIs, custom configure IIS, or otherwise manipulate the server environment for hosting needs.

One of the largest concerns with the VM Role is that the savings and decrease in maintenance associated with Windows Azure Platform managing the networking, load balancing, and other related infrastructure services.  The VM Role does not retain this automated level of management and at this time does not have load balancing or other features enabled.  Load balancing can be done externally to the Windows Azure Platform, but requires CNAME and custom DNS management in order to do so.

The Confusions of IaaS, PaaS, and SaaS

IaaS, PaaS, and SaaS stand for Infrastructure as a Service, Platform as a Service, and Software as a Service respectively.  But what exactly is the context & definition of each of these acronyms?  The simple definitions I have included below.

  • IaaS – A service provided by a company, group, community, or government that provides basic computer networking, load balancing, content delivery networks, routing, commodity data storage, and virtualized operating system hosting.
  • PaaS – A service provided by a company, group, community, or government that provides a platform in which to develop software applications, usually web based, with immediate abstractions of the underlying infrastructure.
  • SaaS – A service provided by a company, group, community, or government that provides a software solution to the system clients.  The software may be internal to a business, delivered by other means, or most commonly delivered over the Internet.

IaaS, PaaS, and SaaS are heavily used acronyms in the cloud computing industry.  These three acronyms describe services in particular, but not cloud computing specifically.  It just happens that cloud computing is often broken down into these three segments.  From here on though, I will use IaaS, PaaS, and SaaS in relation to cloud computing.

Windows Azure is highly focused around being a platform.  It has often been said internally and externally at Microsoft that Windows Azure is not infrastructure or software that you can buy, but a platform that software is built to without a need to think about the infrastructure.  Recent events and changes have cast a shadow of doubt on Microsoft’s intentions toward the infrastructure and services aspect of this.  I’ll cover more specifics as I break these services apart.

Traditionally, and even today and ongoing tomorrow, there are a number of existing infrastructure, platforms, and software solutions that are provided in the context of IaaS, PaaS, and SaaS.  These solutions are not always cloud technologies, and can be provided in a number of ways.  Let’s break out the three into the traditional environments that would provide these services.

Traditional Infrastructure

Traditionally infrastructure was, and still today, often provided to companies internally and by 3rd party providers.  These providers, such as small businesses or internal IT Departments, would deliver actual hardware including cabling, architectural design, network configuration & setup, load balancing, hosting of physical servers, data storage in arrays, and other services.  Some examples would be a traditional RAID array with multiple disks, and storing dedicated single copy data as a backup on that array.  Another is documents stored on a file server and backed up to a tape drive.

For further context, take this working example of a very common infrastructure scenario.  An industrial company that makes, manages, and operates the manufacturing of widget X.  The company has a primary office space in an office building in a major metropolitan area.  In that office there are approximately 90 employees.  There is a satellite office with another 25 employees in another part of the city, located about 6 miles from the main office.  These two offices have a combined total of 115 PCs & Laptops.  These machines are interconnected on a network that connects to a collocation facility where the servers are stored & connected to a large pipe on the Internet.  This collocation facility provides the access for all customers via the Internet and also all the access for employees to their internal servers.

In this example we have a number of systems & networking interconnects needed for day to day operations.  This is a very common, and often a rather complex array of services.  This scenario is one that requires a moderate need for Internet infrastructure, but needs mount for file sharing, backups, redundancies, a the ability to startup new servers easily for usage, testing, development, or day to day operations.  The purchase cycle for additional hardware to bulk up this infrastructure isn’t measured in minutes, but is measured in days, weeks, and all too commonly months.

Take another example using a software game company.  This company traditionally delivers games via boxed medium to stores like Target, Wal-mart, or Gamestop.  The game shop is primarily located in a single office with 45 employees.  They have Internet access that connects them to their partners that handle graphics rendering compute time, e-mail & communication server hosting, & other sources.  The backup and storage for their work is on-premises with tape backups, file servers in building, and other equipment for the day to day operations of game development.

This company has needs for a large pipe to their rendering farm partners.  The file servers are local and also require a fair sized pipe to the workstations and huge disks for storing rendered images.  The rendering farm partners have appropriate networking connections on their end for uploading and downloading of their content to this company.  At the end of the development cycle when the game is ready for release they send off the gold copy of the build to manufacturing which is also in another geographic location.  This company then prints the boxes & discs and sends the game out through logistical distribution companies to the stores that will sell the product.

A Traditional Platform

Traditionally a platform was something that consisted of Ruby on Rails, the .NET Framework, Java Server Pages, or PHP.  One had to be responsible for the deployment of these platforms to infrastructure, and all the configuration, maintenance patches, updates, software installation, and other work required staffing at appropriate levels to handle the workload.  The .NET Framework is an example of developing to a platform, and then installing Windows Server (or running it on Mono under Linux), setting up the IIS Server on Windows, then appropriately installing updates, patches, fixes, and other pieces of software.

A great example of real world platform usage is alive in almost all companies to some degree.  Take Visual Basic for Office as an example.  This is often used in offices that have no dedicated development teams, nor any real trained developers.  Visual Basic for Office allowed almost anyone to get up to speed and use very simple programming concepts to get something built using the Microsoft Office Suite as the platform.

A great scenario, and extremely common, is a mid-size enterprise at approximately 170 employees.  In the main office there are a number of people in accounting, sales, support, logistics, marketing, advertising, and other departments.  Each of these departments often have custom needs to deal with their specific business needs within the enterprise.  Sales may want to have an ongoing list of customer contacts and their relation to particular sales people, so one of the sales guys hacks together a solution with Microsoft Office Access.  The next thing everyone in sales is using it.  Going beyond that someone in accounting figures out some cool tricks with Visual Basic for Applications and builds a way to keep in progress work in balance to simplify the daily tracking of numbers.  Again, the next step is other people in the department start using that same application.  Visual Basic for Applications, and the later incarnation Visual Studio Tools for Office is a great example of a software suite that had a platform built on it.

Another common scenario is the business that has grown to about 320 people and starts to migrate some of the rogue databases or custom Visual Basic for Application tweaks into applications that can be formalized and setup for use more easily within the enterprise.  Visual Studio and SQL Server are purchased and development work begins on the .NET Framework to codify these solutions.

The last example is one of the newer platforms out today.  Ruby on Rails started out as a platform to build on that did things in a very simple, minimalistic, rapid manner.  Development was started on the platform by people that eventually formed 37signals.com and built the tools that company sells; Basecamp, Highrise, Backpack, and Campfire.  The Ruby on Rails Platform makes web development faster and easier than it ever has been with traditional software platforms.  It has had such a huge impact that Microsoft has even released competing offerings such as ASP.NET MVC to counter the development patterns and style of the Ruby on Rails patterns.  This platform has some notable applications including Twitter, Yellowpages, Scribd, Hulu, Slideshare, Medhelp, Github, Odeo, Jango, Ravelry, MTV Style and many more.

A Traditional Software Solution

This is the point of all the other layers, the ability to provide software that clients can use to complete daily work, communicate, and create solutions for their business needs.  This traditionally has been provided by installing tools like Microsoft Office, Visual Studio, WordPerfect, Lotus, or other software packages.

This is probably the easiest service type of the “as a Service” differentiations to describe.  It is what is commonly seen by end users.

One of the most common software solutions that is used throughout the world is the Office Suite.  Microsoft’s Office Suite being the most common at this time.  Another great example of a software package commonly used is CAD & Photoshop.  There are literally thousands of other software offerings that are used at home, in the enterprise, or in small businesses every day.

My Narrative on Unbiased Cloud Computing

Over the past few weeks I’ve been posed with the “your biased claim” from some people.  I decided that I would put together a write up on what my motivations are for cloud computing, how I’m involved, and what my intent is for future involvement.

First off, I need to point out that I’m a software developer (which is probably obvious).  I build applications, mostly on the .NET Platform but also with other stacks such as Ruby on Rails, PHP (rarely), and of course the respective tools around those stacks.  I’ve also spent a lot of time working on enterprise architectures with massive scale (think 150k employees).  I have dug through REST at its core, implemented SOA and other such things.  Lately I’ve had the fortune of developing against Amazon Web Services (AWS) and also Windows Azure, again primarily using the .NET Framework (ala C# and such).

My interest in cloud computing really got started while I was working at Webtrends.  The company has a geographically dispersed, somewhat virtualized, network of hundreds of computers.  The way the company was moving made multi-tenancy easier and brought costs down for the company in a big way.  Something that cloud computing does from the beginning.  This whetted my appetite for large horizontally distributed and scaled systems.  Recently I moved from Portland, Oregon to Seattle, Washington to get even more involved in the heart of cloud technologies.

However, a major problem arose.

In addition to cloud technologies I’m also very pro-agile ideals.  I believe in the individual developer, working with others in pairs or however.  Learning better ways to build great applications and software solutions.  I try to live and breath the solid and great ideals behind the Agile Manifesto and Software Craftsmanship Manifesto.

I like to stay as unbiased as I can in regards to my technology stacks, and initially I was working out at Microsoft (As a Consultant).  I was forced into the antithesis of the Agile & Software Craftsmanship Manifestos.  It was depressing and I realized I couldn’t keep a good clear view of the various cloud technologies while hunkered down in the belly of the beast.  Two things weighed on my mind;  my intent to stay unbiased was clouded by working closely with the Azure team writing white paper materials and researching and the second was that so much of the work is done in a very anti-agile & anti-craftsman way.  It wasn’t serving me morally, ethically, or technologically.

I had to get out of that.  So I did.

I joined Russell Financial.  I am now doing Scrum Agile with a team of exceptionally talented individuals including @codereflection, @notmyself, @ang3lfir3, @terryhughes, and several others.  We use a lot of open source, unbiased software, that happens to primarily be on the .NET stack.  The ideas are shared open and with bias in regards to a whole host of things from Heroku and Salesforce, current enterprise ideas about Cloud technologies, and other things.  I now have a solid work environment that doesn’t provide me with a skewed view of the cloud technologies.

From here I can see the clouds and research, develop, and identify which cloud provides the best opportunities for each specific need that a company is working on.  Sometimes I might sound biased this way or that way, but every judgement I make toward one cloud service or another is based on specific criteria.

In other words, if I’m providing consulting to you for your efforts to utilize the cloud, I’m going to provide you honest, company specific advice on what your strategy for deployment, development, and return on investment should be.  So if you think I’m being biased, check your premise, my research, development, and general efforts around cloud technology are to find the best of breed options for whatever task, need, or want a company may come up with for cloud services.

Now, back to my regularly scheduled technical bits.

Re: Cloudcamp Seattle

Summary Statement:  CloudCamp rocked!  I got to meet a lot of smart people and have a lot of smart conversations!

Ok, so I probably shouldn’t write the summary statement first, but I’m not one for standard operating procedure.  But I digress, I’ll dive straight into the cloud topics and the event itself.

The event kicked off with an introduction and lighting talks by Tony Cowan, Mithun Dhar, Steve Riley, John Janakiraman, Margaret Dawson, and Patrick Escarcega.  Margaret and Steve really stood out to me in their talks, I’ll be keeping an eye on any future speaking engagements they may have.

One of the quotes that led off CloudCamp during the lightning talks was, “If you’re still talking about if the cloud is secure…” you’re already behind, out of touch, missing the reality of it, or simply not understanding the technology.  After further conversation though, it really boils down to the most common excuse.  The statement “the cloud isn’t secure enough” translates to “I’ve got my fingers in my ears and am not listening to your cloud talk”.

Margaret Dawson from Hubspan really took a great stance with her lightning talk.  The talk was titled “To Cloud or Not To Cloud” with “Don’t buy the cloud, buy a solution” as the summarized idea.  The other thing that she mentioned during her talk was she likes adding “AASes” to cloud computing, such as “BPaaS”.  I’ll admit I laughed guiltily along with a few dozen others and forgot to note what BPaaS stands for.  Whoops!  🙂

An attempt at creating a generalized definition of cloud computing was also made.  It was stated that we can, as a community, agree on the following definitions of cloud computing.  The definition involved three parts:

  • Cloud computing is on demand.
  • Cloud computing can be turned off or on as needed.
  • Cloud computing can autoscale without issue to handle peaks and lulls in demand.

Another funny statement came from Dave Neilsen (@daveneilsen), CloudCamp Organizer, “I agree, the cloud isn’t right for everyone” to which someone in the crowd jokingly hollered back “You’re Fired!”  The energy in the audience and each of the sessions was great!

After the lightning talks Dave Neilsen led the conference with a cloud panel to field some questions.  A few topics related to this wikileaks thing 😛 came up along with some others.  I tired diligently to take good notes during this time, but it was a bit fast paced and I left the note taking to be more involved in listening.

These activities kicked off the overall event, which then led into everyone breaking out to different sessions depending on topics created by the attendees.  The sessions included (and I may have missed one or two);

  • Open Source Software in the Cloud
  • Best Practices for Low Latency
  • Intro to Cloud Computing + Windows Azure
  • How does a traditional Microsoft Stack fit in Amazon Web Services (AWS)
  • Google Cloud Services
  • What are your personal projects?

As another aspect of this review I wanted to pull in a few tweets that mentioned or had something useful in relation to the #cloudcamp + #seattle hashtags from last night.

…with that, my cloudcamp review is fini.  Hope to see everyone at the next Seattle Cloud Event!

Top 10 Cloud Predictions by…

Time for a lunch time blog entry…

Information Management put together some cloud predictions for the cloud industry.  Here’s my 2 cents for the key points I picked out.

  • You will build a private cloud, and it will fail.  <  Thank goodness.  Get rid of the whole premise, it’s kind of stupid.  The basis of cloud computing is the almost endless backing of massive funding for massive amounts of systems.  Throw into that mix massively distributed, geographically dispersed locations where the machines are located.  A little contraption in a box thing called “cloud” is bullshit.  Plain and simple, don’t delude yourself.
  • Hosted private clouds will outnumber internal clouds 3:1.  <Good.  The internal clouds – see above comment.
  • Community clouds will arrive, thanks to compliance.  <Awesome!  This is when laws, rights, and other ideals will seriously come to play within the cloud computing space.  Community clouds will have to be transparent in ways that AWS, Rackspace, Windows Azure, and others will never be.  They might not be as robust or feature rich, but it will enable communities and others to utilize the cloud with known rights, liberties, and other notions that aren’t up for debate as they are with the other cloud providers (re: Wikileaks & such)
  • The BI gap will widen.  < BI is PERFECT for the cloud.  BI on current system on relational databases without thinking about NoSQL, Big Data, and other notions is a major problem.  BI will begin migrations to utilizing the cloud or BI will just die and another cloud related acronym will most likely come to replace it.  Real time Business Intelligence is much more readily available with cloud resources than attempting to implement real time business intelligence on-premises.
  • Cloud standards still won’t be here – get over it. < I agree.  I’m over it, and I’m not even remotely worried about it.  Maybe it is because I’m a software developer and I lean heavily on well designed, solid architecture, loosely coupled, SOLID ideals, and other things that would allow me to prevent lock in at multiple levels of usage.  In addition, I know what is what within the cloud, I don’t need some arbitrary standard since the obvious usage patterns are already pretty visible in the cloud community already.
  • Cloud security will be proven, but not by the providers alone. < Cloud security is indeed a shared responsibility.  If one is in the cloud industry though and is still talking about the “cloud being secure”, they’ve not been paying attention.  The security concerns are much less with cloud computing than most on-premises computing.  The biggest security concerns, at the actual software level, are still the same.  These responsibilities are shared, but rest heavily on the shoulders of software developers, architects, and in the same places a company (or Government entity) has previously needed to be concerned with.

Overall I’d love to see two things for the cloud community.

  1. Stop accepting the “Security is a Concern because I’m scared and haven’t been paying attention” and just start implementing.  The reason being is those same people that are kicking and dragging their feet into the future will keep kicking and dragging their feet.  Eventually they’ll either be unemployed or update their skill sets and legacy ideas and step into the future.  They’ll be a contributing part of the community and we can all smile and be happy then!
  2. More significant penetration needs to be made into the Enterprise IT Environments.  I know, some people won’t be needed anymore, but others will be needed for the new applications, tooling, and things that one can do by not wasting resources on physical boxes, excess IT costs, and other now unneeded IT impediments.  IT and business itself needs to realize this, the sooner the better.  The companies that realize this sooner will be able to make significant strategic headway over their competitors.  Those companies that never realize this will most likely wither and be dead within 2-3 years of mass adoption of the cloud options.  Simply, “skate or die”.