GoGrid Blog

Real on-demand servers. Really!

The Cloud Pyramid

Written by Michael Sheehan on Jun 24th, 2008 | Filed under: Cloud Computing, General, GoGrid, ServePath

This insightful post on the RightScale blog recently got me thinking. The term “Cloud Computing” is much too vague. People want and need “slots” or “segments” where they can group things. This is how the mind operates through categorization and ordering. So, to possibly help with this, I would like to propose a “Cloud Pyramid” to help differentiate the various Cloud offerings out there.

Cloud Pyramid

There are other ways to display this hierarchy, however I elected to show it as a pyramid. For example, if one were to weight the graphic by the number of providers within each segment, the pyramid would be upside-down. The point here though is to show how these cloud segments build upon and are somewhat dependent upon each other. While they are directly related, they don’t require interdependence (e.g., a Cloud Application does not necessarily have to be built upon a Cloud Platform or Cloud Infrastructure). I would propose, however, that Cloud trends indicate that they will become more entwined over time.

Cloud Application

Within this part of the pyramid, users are truly restricted to only what the application is and can do. Some of the notable companies here are the public email providers (Gmail, Hotmail, Quicken Online, etc.). Almost any Software as a Service (SaaS) provider can be lumped into this group. Most retail consumers use the services within this Cloud. You get pre-defined functionality and you cannot much further than that. Applications are designed for ease of use and GTD (getting things done). SalesForce, a huge Cloud Application/SaaS provider that has led the way for hosted software, falls into this category as well, however, their force.com product does not. Even online banking offerings could be lumped into this group.

Characteristics:

  • Strengths
    • Sometimes free; easy to use; lots of different offerings; easy to access; good consumer adoption; proven business models
  • Weaknesses
    • You can only use the application as far as what it is designed for; no control or knowledge of underlying technology

Cloud Platforms

As you move further down the pyramid, you gain increased flexibility and control but your a still fairly restricted to what you can and cannot do. Within this Category things get more complicated to achieve. Products and companies like Google App Engine, Heroku, Mosso, Engine Yard, Joyent or force.com (SalesForce platform) fall into this segment. This category is becoming more congested with competitors, many of whom are trying to leverage the Cloud Infrastructure.

Characteristics:

  • Strengths
    • Great for developers with a particular niche target, upload a tightly configured applications and it simply “runs”; more control than a Cloud Application
  • Weaknesses
    • Restricted to the platform’s ability only; hard to work “outside the box”; sometimes dependant on Cloud Infrastructure providers

Cloud Infrastructure

At the bottom of the pyramid are the infrastructure providers like Amazon’s EC2, GoGrid, RightScale and Linode. Companies providing infrastructure enable Cloud Platforms and Cloud Applications. Most companies within this segment operate their own infrastructure, allowing them to provide more features, services and control than others within the pyramid. And at this foundation level, GoGrid offers infrastructure in the form of both Linux and Windows, load-balancing, and storage. Some Infrastructure providers may leverage others within the space in order to provide competitive viability as well.

Characteristics:

  • Strengths
    • Offers full control of server infrastructure; not confined to “containers” or “applications” or restrictive instances
  • Weaknesses
    • Sometimes comes with a price premium; infrastructure offerings still being built out

This post is open to discussion! My questions, what do YOU consider to be good examples of each Cloud Category? Can Cloud Computing be broken down into the ones listed above? What segment has been omitted and why do you think it is that way?

Lastly, for a humorous analysis of all of this, take a look a John M Willis’ post “Is Everyone an aaS?” which, in a tongue-in-cheek way, puts it all into perspective.


Computing on "Cloud Nine"

Written by Michael Sheehan on Mar 18th, 2008 | Filed under: General, GoGrid

353558249_5b33a0281d_oEveryone seems to be either talking about cloud computing, launching their product “within the cloud” or developing a “cloud” infrastructure. I would like to take a step back and really think about why the word “cloud” is being used in the first place.

First, a quick side note: as I tried to track down the origins of the term “cloud computing” I did come across a very insightful post by Paul Wallis that does a fantastic job stepping through the evolution from “supercomputing” through “the cluster” into “the grid” and eventually up into the “clouds.” The concept of having “data clouds speaking to supercomputer clouds” is becoming a reality, according to Wallis, however, I echo his concern that in order for this magical marriage to take place, there needs to be a new level of Quality of Service connecting the two, among other things.

Even with the foundation being laid by some heavy players, cloud computing is still in its infancy. But this is not the subject of this article. I still circle back to the marketing “genus” that coined the term “cloud” to describe this new computing paradigm. For that, I move away from the technical and more to the linguistic.

The term “cloud” can be used in many forms of speech:

  • Noun - The clouds of smoke filled the room
  • Verb - The smoke clouded the room
  • Adjective - The cloudy smoke filled the room
  • Adverb - The smoke cloudily filled the room

So, cloud is a good word choice from a grammatical perspective since it can be used with a variety of ways. But is it a good term to use to describe a product or technology? I’m not so sure. As an exercise, I started writing down words that came to mind when I thought about “cloud”. In no particular order:

Intangible Blown by the wind
Bad weather Dark
Gloomy Obscure
Vapor Nebulous
Not solid Evaporate
Storm Seeding
Rain Up in the sky
Fragile Impossible to measure
Weightless Ethereal
Ephemeral Gray
Unclear Airy

05-8-17-3970

Any patterns here? From my read, most of the terms seem to have negative connotations. I get visions of letting a balloon loose into the air and watching it disappear into the clouds. (Bursting bubble anyone?) To take things a bit further:

  • Companies have used terms like “vaporware” to describe software or code in advance of its release which then fails to materialize.
  • “Pie in the sky” is a phrase used to describe a promise heaven but continuing to suffer on earth.
  • To “have your head in the clouds” comes from the Latin proverb “Caput inter nubila condit,” a line from Virgil’s Aneid which, loosely defined, means to have unrealistic, impractical ideas.
  • Fragile, weightless, intangible, nebulous, unclear, impossible to measure - all these connote something that is vacuous and non-solid.

So I ask you this, does this make you comfortable 07-4-23-1392putting your mission-critical data or applications within a cloud? Earlier terms like cluster, super, utility and grid computing, in my mind, make much more “tangible” sense. While I’m sure this term is here to stay and there is not much that I can do to change that, I do question the terms legitimacy within technology and the development of solid business practices. Would you rather work in the cloud or work on a server? Even though the term “virtualization” tends to imply something that is not real, it is closer to the ground and significantly more absolute than something “in the clouds.”

Computing in the cloud, or dare I say, on “cloud nine”…I’m just waiting for reality to hit and the rain to begin.

[Cloud images used by permission.]


One of the Better “Cloud Computing” Posts that I have Read

Written by Michael Sheehan on Feb 20th, 2008 | Filed under: General

Alex_Iskold_graphic As I strive to better understand these new emerging technologies such as “cloud computing”, I frequently find myself reading various blog articles, many professing to be the end-all definition related to the topic. It is not very often that I actually come across an article that is informative, understandable and compelling enough to warrant note.

The post by Alex Iskold is a perfect example of one of these excellent articles. An important definition from his post:

The idea behind cloud computing is simple - scale your application by deploying it on a large grid of commodity hardware boxes. Each box has exactly the same system installed and behaves like all other boxes. The load balancer forwards a request to any one box and it is processed in a stateless manner - meaning the request is followed by an immediate response and no state is held by the system. The beauty of the cloud is in its scalability - you scale by simply adding more boxes.

Some may say that this article is a bit “heavy” on Amazon as the “killer service.” But I believe his point is that Amazon has put a lot of weight behind and person-hours into their products and they will be hard to duplicate, at least for players developing “cloud” products. But some of his general comments hold true regardless of the product: “Free from the need to solve the scalability problems, startups are able to focus on the specific problems their product or service is trying to solve.”

I recommend this as a good read on what Cloud Computing is, a la Amazon, and for people really trying to make heads or tails of grid, utility, cloud and distributed computing.

In closing, Alex’s line “…we are witnessing a fundamental shift in our ability to compute and this is just the beginning…” truly sums it up for all players and customers in this market. I echo that whole heartedly.


Understanding “Clouded” Computing Terms (revised)

Written by Michael Sheehan on Feb 5th, 2008 | Filed under: Cloud Computing, Customer, FAQs, General, GoGrid, ServePath, Templates

Author’s Note: This post was revised on 6/23/08. The nature of computing is under going a revolution and rather than fully remove this post, I elected to refresh it so as to provide a better framework for readers.

There seems to be a lot of debate around different types of Computing Terms being used to describe server and hosting solutions. In fact, in the past, the blogosphere seemed to throw around terms like Grid, Cloud, Utility, Distributed and Cluster computing almost interchangeably. But, as of this revision, one term is rising to the top: Cloud Computing. (See recent trend analysis here.)

The definitions vary from source to source, author to author. While I cannot (and will not) attempt to articulate the end-all definition, I can write about how I view these terms and how they apply to the products that we offer, namely GoGrid. But before I dive into MY interpretation, providing what others view on these subjects may shed some light on our framework.

Terms as defined by Wikipedia

wikipedia_logo_sm Many people view Wikipedia as an authoritative source of information but that is always subject to debate. Wikipedia defines some of these terms as follows (not the end-all definitions though) and I have taken some liberties of removing non-relevant information for argument’s sake:

  • Grid Computing - http://en.wikipedia.org/wiki/Grid_computing
    • Multiple independent computing clusters which act like a “grid” because they are composed of resource nodes not located within a single administrative domain. (formal)
    • Offering online computation or storage as a metered commercial service, known as utility computing, computing on demand, or cloud computing.
    • The creation of a “virtual supercomputer” by using spare computing resources within an organization.
  • Cloud Computing - http://en.wikipedia.org/wiki/Cloud_computing
    • Cloud computing is a computing paradigm shift where computing is moved away from personal computers or an individual application server to a “cloud” of computers. Users of the cloud only need to be concerned with the computing service being asked for, as the underlying details of how it is achieved are hidden. This method of distributed computing is done through pooling all computer resources together and being managed by software rather than a human.
    • The services being requested of a cloud are not limited to using web applications, but can also be IT management tasks such as requesting of systems, a software stack or a specific web appliance.
  • Utility Computing - http://en.wikipedia.org/wiki/Utility_computing :
    • Conventional Internet hosting services have the capability to quickly arrange for the rental of individual servers, for example to provision a bank of web servers to accommodate a sudden surge in traffic to a web site.
    • “Utility computing” usually envisions some form of virtualization so that the amount of storage or computing power available is considerably larger than that of a single time-sharing computer. Multiple servers are used on the “back end” to make this possible. These might be a dedicated computer cluster specifically built for the purpose of being rented out, or even an under-utilized supercomputer. The technique of running a single calculation on multiple computers is known as distributed computing.
  • Distributed Computing - http://en.wikipedia.org/wiki/Distributed_computing
    • A method of computer processing in which different parts of a program are run simultaneously on two or more computers that are communicating with each other over a network. Distributed computing is a type of segmented or parallel computing, but the latter term is most commonly used to refer to processing in which different parts of a program run simultaneously on two or more processors that are part of the same computer. While both types of processing require that a program be segmented—divided into sections that can run simultaneously, distributed computing also requires that the division of the program take into account the different environments on which the different sections of the program will be running. For example, two computers are likely to have different file systems and different hardware components.

Upon initial read, Wikipedia seems to be fairly close to my definitions but still not exact. Of note, “metered commercial service” rings true within both the Grid Computing and Cloud Computing definitions. However, it also seems to spill into the Utility Computing mantra. As a side note, our newest product, GoGrid, utilizes a metered service similar to how an energy company would charge you for electricity or gas, basing charges simply on what you use.

Traditional “Clouds” vs. Modern “Clouds”

Grid Computing seems to also have some origins in the idea of harnessing multiple computer resources to gain a more powerful source of shared power and computational resources. folding@home However, I would like to suggest that this definition is showing some age and, in my opinion, falls more under Distributed Computing. When I think about Distributed Computing, SETI@Home or Folding@Home come to mind, which is definitely very different from where things are moving now. So, let’s put Distributed Computing aside for this discussion.

Traditionally, the “cloud” was loosely defined as anything outside of a controlled network. When we, as Hosting Providers, discussed “the cloud” in the past with our customers, it was about the nebulous network that is known as the Internet. The cloud is loosely managed and traditionally unreliable. To that end, we do not refer to anything within our control or our networks as “the cloud” as it is too vague and un-manageable. It is outside of our Service Level Agreement and nothing that we can guarantee or deem reliable. However, once traffic enters our network, we manage it. That is where the modern interpretation of the “Cloud” comes into play. Products like Amazon’s EC2 and ServePath’s GoGrid have internalized Cloud Computing by building a reliable infrastructure around it. While the Internet remains as a Cloud of coupled servers and networks, GoGrid, for example, extends this by creating an infrastructure that offers “control in the cloud.”

Originally, I wrote that “Cloud Computing does not necessarily equate to reliable service.” This, obviously, is a contradiction in itself if you apply both the historic and modern definitions at the same time. If one views the Internet as “Cloud Computing,” there are obvious weaknesses within this vast network. With the Internet, you are at the whim of various service providers, Internet backbones and routers managing the traffic within the Cloud. But if one applies the more modern interpretations of this, Cloud Computing now offers robust infrastructure, features and services that were previously unavailable.

Tying the Grid to the Cloud

In order to provide “modern” Cloud Computing, a provider must have some sort of an organized and controlled network infrastructure and topology. What any particular service provider chooses is up to them. For GoGrid, we elected to build our Cloud offering on top of a Grid of servers as well as utilize a Utility-based billing model to only charge the end-user for what they use within our “Cloud.” The end-result is a tightly controlled Grid infrastructure that provides a Cloud Computing experience, more so than most if not all of the other hosting providers out there.

However, what is important here is looking at Cloud, Grid and/or Utility Computing from the perspective of a Hosting Provider. Definitely this is where things get contentious. As I mentioned before, GoGrid offers a traditional utility billing process where you simply pay for what you uses. This breaks from many “old school” hosting billing processes of paying up-front for server(s) and bandwidth, month or year-long contracts and then paying for overages. Does this mean that it is Utility Computing? Not really. One has to dig into this a bit more. GoGrid uses a network of similarly-configured servers bound together by management and administrative servers and virtualization tools to provide a very unique Cloud offering that is distinct from traditional hosting.

Dedicated, Managed and Cloud Servers offered by ServePath guarantee hardware resources like RAM and Load Balancing and full root and administrator access but these paths rapidly diverge at this point. Once one steps into the virtualization arena, or dare I say “the cloud,” new features are available including rapid deployments, cloning, snapshots, fault tolerance, and on-demand scalability.

ServePath chose Grid Computing to power GoGrid and provide the flexibility, scalability and robust infrastructure as the fundamental foundation of an award-winning Cloud Infrastructure product, GoGrid. The end results is a Cloud Hosting Provider offering that delivers better environmental properties, faster vertical and horizontal scalability and ultimately better fits for cost, performance and energy-concerned customers.