Windows Azure and the PaaS Context

PaaS stands for Platform as a Service.  The new concept around Devops* (Developer + Operations) has allowed cloud computing to reach an apex of agility for business.  For developers PaaS provides an ultimately clean and agile experience around staging and deployment.  PaaS is also the highest level of cost savings for most prospective enterprise and mid-size business users of the cloud computing services.  Windows Azure has positioned itself with the vast majority of its services as a platform.

Working with a platform, instead of an infrastructure based cloud computing service allows Devops to focus almost solely on the business problems.  In addition this prevents an unnecessary staffing level for IT in most organizations.  With staff re-focused on business problems and eliminating the majority of hardware issues in an organization costs go down while return on investment dramatically increases.

The Ideal PaaS Scenario, Athenaeum Corporation

Imagine a company, I’ll call it Athenaeum Corporation that has around 250 people and provides a web based on demand service.  Right now they have 4 geographically dispersed data centers that incur real estate, staffing, energy, and other costs.  In each of those geographically dispersed data centers there are network switches and dedicated web servers connected to clustered with failover databases.  Each set of clustered databases is setup to replicate among all the geographically disperse locations everyday on a near real-time basis.  The website that these locations host is then balanced by load balancers, which also require maintenance and administration.

The headquarters of this company is located away from the data centers, but has a smaller duplicate data center of its own that also receives replicated data and hosts the website.  This is for internal and development purposes.  The development team consists of approximately 45 people out of the 250 staff.  The network operations staff is about 25 people, with internal IT making up another 15 people.  Altogether the direct support of development and operations is 85 people out of a 250 person staff.

At the headquarters are approximately 280 machines ranging from desktop PCs to Laptops.  These machines are used to support operations, sales, accounting, support, and every other part of the company.  These 280 machines are connected to approximately 60 internal servers that provide things like Exchange Services, file sharing directories, communications on instant messengers, Sharepoint services, and other IT related tools.  In addition there are other switches, cabling, and other items related to the routing, load balancing, and usage of these internal services.

The Athenaeum Corporation that I’ve described is a perfect scenario that could literally save hundreds of thousands of dollars with cloud computing services.  While saving that money they could possibly increase their physical service, better their uptime & system processing performance, and more just by migrating to the Windows Azure Platform.

Before jumping into how a company like the Athenaeum Corporation might jump into PaaS with the Windows Azure Platform, let’s take a quick review of the services that the Windows Azure Platform provides.

The Platform of Windows Azure

The core Windows Azure Platform is made up of compute and storage.  The compute is broken up into Web, Worker, and CGI Roles.  The storage is broken up into Table, Blob, and Queue services.  All of these features have a platform SDK that can be used or RESTful Web Service APIs.  From the basis of an operating system, it is abstracted away and only the platform is of concern to development.

Beyond the core compute and storage elements the Windows Azure Platform cloud has the Windows Azure AppFabric and the SQL Azure Relational Database for service bus, security access control, and storage of highly structured data.  The AppFabric is made up of two core features; the access control and the service bus.  The SQL Azure is really just a clustered, high end instance of SQL Server running with a hot swappable backup that is managed by Microsoft in their data centers.

The Windows Azure AppFabric is one of the features of Windows Azure Platform that makes working with on-premises, internal, disparate, and Windows Azure Platform or other cloud services easy.  With the AppFabric access control security, claims based identification, and other authentication mechanisms may be used for seemless single sign-on experiences.  With the systems secured with the access control, the AppFabric service bus can then be used as a way to manage and keep communication between those disparate systems flowing and active.  The AppFabric Access Control & Services Bus provides a way to incorporate any request to incorporate systems that a business enterprise, government, or other entity may have.

With SQL Azure, a hosted, high end solution to relational data storage needs is provided.  One big concern is that the data sizes are to 50GB in storage.  Although the there is this 50GB limit, once this size has been attained the data most likely should not be contained solely in a relational data store.  This is when the other Windows Azure Storage mediums come into play.  But for data under 50 GB, a relational data store setup to work seamlessly in Windows Azure like this provides additional platform capabilities for developers to port traditionally hosted applications into the cloud with minimal changes.

Now that the platform is covered, how would the Athenaeum Corporation move their system & website operations into the Windows Azure Platform for increased capabilities and decreased costs?  The first thing needed is a breakdown of the individual systems and interoperations.

  1. Relational databases in each of the geographically dispersed data centers with failover databases.
  2. Headquarters has 280 PCs and Laptops.
  3. Headquarters has 60 internal IT maintained servers with custom applications, file-sharing, and other tools running on Windows Server.
  4. Load balancing is done for the web based on demand services in house.
  5. 4 Data Centers geographically dispersed with respective real estate, staffing, energy, and other costs.
  6. Network operations requires approximately 25 staff for 24-hour a day operational uptime.
  7. Web Based On Demand Services.

I’ll start breaking down these 7 key functionalities and state how the move to Windows Azure would change costing by using the platform.  Relational databases in each of these data centers can be moved in a couple different ways.

  1. One is to move the databases into one single primary SQL Azure instance.  Since the databases are most likely located at each of the datacenters for location CDN reasons, it made sense before, but with the move to the cloud the Windows Azure CDN could be used and the database would likely have better access to the geographically dispersed web presence points.
  2. The second is to move the databases to affinity points within the cloud that already match the current locations, porting the replication functionality for the specific data that each site needs.
  3. The 280 PCs and Laptops would still need connectivity and access to all of the existing applications they have now.  The cloud changes little in regard to this situation.  However redundant machines could be removed and with the implementation of SaaS based solutions, which I’ll discuss further in the next section, would dramatically decrease the cost of machines that each employee would need along with a decrease in support, administration, and maintenance of the software they currently use.
  4. The 60 internal servers at headquarters that IT maintains could be migrated completely, especially if they’re all running a Windows Operating System.  For anything that isn’t, one may want to look to AWS, Rackspace, or other virtualization solution at these cloud providers.  In Windows Azure internal servers hosting IIS applications could likely have them moved to Web or Worker Roles.  Anything such as Ruby on Rails, PHP, or Java that is hosted via IIS can be moved to a CGI Role in Windows Azure.  For anything that has other complexities and such can be installed on a Windows Azure VM Role.
  5. Current in house load balancing can be eliminated entirely.  There is no need for in house management of this with a PaaS like the Windows Azure Platform.  So mark this off the cost list, it is included in the cost of the service and requires no configuration, management, or other interaction.
  6. Each data center that previously provided geographic locations for the web presence can be brought into the Windows Azure Cloud.  There are two primary locations in North America at this time, and several more in other countries throughout the world.  With this ability the need to have 4 different data centers is removed.  In most cases, the centers that Windows Azure is located in also have significant security and penetration tests done at a physical level.  This effectively increases the security of each of the geographic access points.  Removing one more cost, while providing more for the money.
  7. Network operations, effectively simplified by the removal of routing, load balancing, and other concerns that needed to be done in house.  The cloud offers 24x7x365 operational uptime.  This eliminates the need for the in house staffing, with only a 4-6 staff needed for this particular scenario.  The roles and requirements for the 4-6 staffing positions would primarily be there to maintain data, assure that systems that are custom are maintained and operational within the Windows Azure Cloud.
  8. The last item is easily moved into the Windows Azure Platform using a Windows Azure Web Role.  This provides everything needed to operate a SaaS Web Application with the Windows Azure Portal PaaS.

On that last point of moving the Athenaeum Software into the Windows Azure Cloud, is SaaS on the Windows Azure Platform.

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.