Entries in cloud computing (4)

Is SaaS Cloud Computing?

The question of weather SaaS is Cloud Computing keeps coming up again and again.  So, since I didn't get to attend that session at Cloud Camp SF I'll weigh in here.

I view cloud computing as a commercialized extension to utility/grid computing from government and educational spaces.  My definition of cloud computing is, "cloud computing is a commercial extension of utility computing that enables scalable, elastic, highly available deployment of software applications while minimizing the level of detailed interaction with the underlying technology stack itself."

More details in this article (mine):
http://www.productionscale.com/home/2008/4/24/cloud-computing-get-your-head-in-the-clouds.html

In that definition you can see that I'm positing that SaaS is enabled by Cloud Computing.  SaaS is the "software application" that is enabled and endowed with all those awesome attributes provided by Cloud Computing.  That makes most SaaS offerings Cloud Computing Applications as opposed to traditional stand alone or even web applications.  It does not make the applications themselves Cloud Computing.

The most interesting thing about Cloud Computing to me is that it enables entirely new types of business to exist and be economically viable that never could have persisted before.  The economics changed and this is only the tip of the iceburg.  Fun times!

Posted on Sunday, June 29, 2008 at 10:18AM by Registered CommenterKent Langley in | CommentsPost a Comment Sphere: Related Content

Private Cloud Computing: A Few Thoughts

We are awash in a world of new and disruptive technology products and services.  One of the most prevalent is Cloud Computing.  The topic of this article is primarily Private Cloud Computing and thoughts on what it will mean for Enterprise IT.  Unfortunately it's a bit of a ramble but I'm not much for spending more hours tweaking and editing this one.

What is private cloud computing?  To make a non-technical analogy, Private Cloud Computing is a little like owning your own car instead of using a rental car that you share with others others and that someone else owns for your automobile and transportation needs.  Rental cars haven't completely replaced personal automobile ownership for many obvious reasons.  Public Cloud Services will not likely replace dedicated private servers either and will likely drive adoption of private cloud computing.

Security is a serious issue with public cloud computing in any form.  Would you be willing to run a critical corporate financial application on a shared cloud computing platform when the terms of service state something like, if we get a court order we'll hand your data over without question or battle and there is nothing you can do about that fact because by using our service you implicitly give us that right as a means of protecting ourselves?  In fact, entire countries are already becoming embroiled in this very debate.   In a recent article in Network World there was discussion about Cloud Storage and international law.  The question was asked, "What does it mean if your data is stored in the cloud and some foreign government entity might have access to it?" That is in fact a really interesting question!

When you have a few minutes and a law degree take a look at seciont 5.4.2 of Amazon Web Services Terms of Service. I am not an attorney but to me it says, you data/information can and will be turned over if we feel like it.  Other parts of that document limit liability and such for Amazon as well.  Now, were I Amazon I'd do exactly the same thing I suppose.  This isn't an article about Amazon though.  It's an article about why private cloud computing is a must.  You can't necessary trust your sensitive data, even in transient states, to public service providers that are required to write Terms of Service agreements like that.

The first stages have already blown right by us in the form of Virtualization technologies like VMWare, Xen, and others that have been commercialized over the last several years and themselves become enablers of the current wave of products and services.  Terms like VM (virtual machine), and Virtualization (which my spell checker still doesn't even recognize) are common now in IT departments and CxO suites everywhere.  Xen is an underlying piece of Amazon Web Services EC2 platform.  VMWare underlies the virtualization and cloud offerings of some newer companies.  Then, there are even companies creating management tools to better manage Xen, VMWare, EC2, and other platforms better than the companies that created the software in the first place.  There are still laggards that haven't effectively used or even explored the earlier rounds of such technologies yet for strategic and tactical business purposes.  We all know what happened to the dinosaurs when things changed.

Today there are very few companies that have the internal knowledge and the resources to create and effectively manage true Cloud Computing infrastructures.  These are well known names like Google, Yahoo, and Amazon.  It is these companies that have dramatically leveraged their internal and originally Private Cloud Computing infrastructures to significant economic benefit.  But, this fact is changing very quickly.

There are many up and coming competitors as well that can make significant contributions in the private cloud computing space over time like Nirvanix, XCalibre, 3Tera, Enomolism, and Joyent.  Then, there are companies like Gigaspaces, 3Tera, and Enomolism that are already rolling out private cloud related services and products that you can use in your own data center.  While some have relatively mature feature sets, the genre as a whole is still very young and deeply segmented.  But, what is happening is a fast and significant shift towards the ubiquitous availability of the technology required to install and manage your own personal cloud computing infrastructures.

As with so many things, this is very much about business economics.  The companies, like Google, that have pioneered and used their private cloud computing platforms effectively today and over the last few years can and do generate staggering economic values.  The economic benefits should, if the project is properly executed,  translate directly to the bottom line in a variety of ways due to increased technology operations effectiveness.

Existing corporations across many industries can benefit similarly to various degrees by leveraging both public cloud computing services and also building private clouds behind the firewall when it's necessary.  The New York Times is a fairly dramatic and recent example of this trend.  They've used modern shared cloud computing to generate economic value from old archived content.

What does all this mean for Corporate IT?  The trend in IT that will materialize more clearly over time is a shift toward internal software and hardware changes that will make the corporate infrastructures resemble current commercial cloud computing infrastructures.  Enterprises need and will want these technologies.  But, the necessary trade-offs regarding security and privacy inherent in public cloud computing will likely cause private clouds will flourish.  Even though the public services themselves are technically secure; it's simply a domestic and international legal matter no matter what country your businesses home office resides.  Just have your attorney read Amazon's terms of service and let us know what they have to say.  So, we'll probably see white label private cloud computing products and services spawn across the industry and settle right in behind the corporate firewall.  Companies will find this economically desirable, managerially pragmatic, cost effective, and very disruptive to their IT Departments.

Posted on Sunday, June 22, 2008 at 11:01AM by Registered CommenterKent Langley in | Comments2 Comments Sphere: Related Content

Hadoop Meetup San Francisco by GigaOM

If you know me then you know I really like grids, clusters, and large scale computing technologies.  So, I was happy to get the opportunity to attend the Hadoop Meeting up in San Francisco a little over a week ago.  They said it filled up in 1-2 hours so I was lucky to get a spot it would seem.  I'm a fan of the Hadoop project and I've been thinking about it for a while.  What follows are some of my observations and thoughts about the event.

The Realities

I asked what the technical barriers were causing a 2000 node limit.  I got back an answer that the namenode for the HDFS cluster simply can't scale beyond a couple of thousands nodes since it's a single point of failure non-horizontally scalable system.  That's not exactly the way they put it but that's what they meant I do believe.  That's a surprising weakness really.  The namenode does two primary things.  It manages file system namespace, including the replication factor, how many replicas of any single file there are in the total system, and regulates access to files by clients.  For better or worse, I found myself wondering what needs to be done is to port FSImage and EditLog, the two main components of the namenode, to a distributed database format like CouchDB. Everything in the name node seems to be just a name/value pair that would benefit from using a distributed columnar DBMS.

I also asked the admittedly odd question of what is Hadoop very bad at doing.  I really didn't get a good answer on that overall.  But, I'll interpret the entire evening into saying that it's bad at being highly available and massively scalable due to currently existing single points of failure.  This is one area where Hadoop and all it's related components shows it's youth.  Of course, what I really meant was, what can Yahoo NOT port to Hadoop for competitive advantage because it's just not in the Hadoop map-reduce problem domain.  Unfortunately, I didn't ask the question well enough.  In general, there is as much or more sometimes to be learned from failed mistakes and experiments than from successes.  But, nobody wants to talk about that much usually.

I also observed a trend in the statements made throughout the talk in that the code could be significantly optimized to run better on fewer nodes.  In short, that would certainly be a money saver and help push the system with it's current architecture a little further.

They also mentioned that in no way are they trying to do the Globus like thing of distributing work over a WAN (Wide Area Network).  The excellent Globus project is a long standing Grid framework well worth examining.  This is a serious limitation of the system overall in terms of it's overall scalability in my opinion.  It was also contrary to an earlier statement that said, "if you are going to be scalable then you must be distributed."  But, to be fair, they reminded us many times that the software is young and there is still a lot left to do.  In particular, it sounds like they are working very hard on their advanced job scheduler which will likely have some relevance in this area some day.

I learned that in no way does Yahoo consider Hadoop to be truly "real-time" production ready.  Although they are using it and actively porting applications to use it, they seemed very hesitant about proclaiming it production ready.  I think this reticence is primarily related to performance and scalability issues and the difficulty in job scheduling in complex multi-tenant environments.

Another piece of software and knowledge I picked up that is worth mentioning was regarding HBase and Varnish.  I have no idea why I didn't think of this but you can front HBase with Varnish (or any reverse cache; aka any CDN probably) to scale read performance of the dataset/documents in document data stores.  I need to email Jan from the CouchDB project and ask him if he's ever tried this for accelerating/caching CouchDB reads.  I use varnish plenty for other projects but I hadn't thought to use varnish this way.  So, I found myself wondering why not front HBase with Akamai for a globally distributed read farm?  Anyway, those were the kinds of technical gems I was hoping for at the meetup.

I would have liked a little more tech and a case study type of information as opposed to the Hadoop history lesson.  I knew the history going into the event so I was looking for more readily useful information.

The Take Away

Hadoop is a very nice piece of work and it, combined cloud computing initiatives it is well on the way to creating some extremely powerful tools for many uses.  There is a great deal to learn from what the Hadoop project has accomplished thus far and it seems like they are on the path to greater things.  I certainly got the message that they are working hard on the scalability and availability issues.  I think this just adds more validity to my feeling that we live in an very exciting time technologically and that we have really only just scratched he surface of what is possible.  I walked away with some new ideas and a good checkpoint on where the technology is today.  Thanks to GigaOM for sponsoring.

Posted on Friday, May 9, 2008 at 05:39PM by Registered CommenterKent Langley in | Comments1 Comment Sphere: Related Content

Cloud Computing: Get Your Head in the Clouds

Almost every day recently I find myself explaining Cloud Computing to different people at all levels and roles in various organizations. So, I decided to take a stab at it from my point of view.  The challenge in explaining cloud computing is that there is more than one answer to the what is it question. The field is evolving rapidly and everyone wants a piece now. This article attempts to define and break down cloud computing to it's most important components in the context of the business use case. This article is for the potential cloud computing consumer. So, what is cloud computing?

Cloud Computing (Figure 1.0) is a commercial extension of computing resources like computation cycles and storage offered as a metered service similar to a physical public utility like electricity, water, natural gas, or telephone network. It cloudcomputinggraphic.jpegenables a computing system to acquire or release computing resources on demand in a manner such that the loss of any one component of the system will not cause total system failure. Cloud computing also allows the deployment of software applications into an environment running the necessary technology stack for the purposes of development, staging, or production of a software application. It does all this in a way that minimizes the necessary interaction with the underlying layers of the technology stack. In this way cloud computing obfuscates much of the complexity that underlies Software as a Service (SaaS) or batch computing software applications. To explain better though, let's simplify that and break it down this definition to it's constituent parts.

More compactly stated, cloud computing is a commercial extension of utility computing that enables scalable, elastic, highly available deployment of software applications while minimizing the level of detailed interaction with the underlying technology stack itself.


Definitions of Necessary Terms to clarify and define cloud computing:

Utility Computing - The combination of computing resources as a metered service in a way similar to a physical public utility.

Scalability - The ability of a computing system to grow relatively easily in response to increased demand

Elasticity - The ability of a system to dynamically acquire or release compute resources on-demand

Highly Available - Systems designed such that the loss of any one component of a system will not result in system failure

Deployment - Placing your software application into a technology stack in a running environment for development, testing, or production

Software Application - An arrangement of programming code designed to achieve some specific purpose

Technology Stack - The Hardware and Software layers underlying a given software application. Figure 1.1.

generictechstack.jpeg 

Now we know what cloud computing is and that's great. But, I'll let you in on a little secret. For most people, it just doesn't matter! Remember, we're talking about cloud computing in the context of business. We're not talking about buzz words, technobabble, or hope. Let's get to the really important question. How can all this cloud computing alphabet soup help my business or my idea flourish? Starting again with that question and keeping it in mind at all times you and your technology team can make pragmatic decisions over time. You may have heard it before, and it bears repeating, that there is no place in day to day businesses for technology for technologies sake alone in most companies. Technology, cloud related or otherwise, has to make good business sense to make any sense at all.

To decide if cloud computing can help your idea or business flourish you have to decide what type of service provider you need. There are three distinct sub-areas of cloud computing. They are IaaS, PaaS, and SaaS. We will define and discuss these in turn.

Infrastructure as a Service (IaaS)

IaaS clouds make it very easy and affordable to provision resources such as servers, connections, storage, and related tools necessary to build an application environment from scratch on-demand. IaaS clouds are the underlying infrastructure of PaaS and SaaS clouds. A common characteristic of IaaS clouds is that they are more complex to work with but with that complexity comes a high degree of flexibility. So, these are generally lower level services in the grand scheme of things; not in a derogatory sense of course. You'll be dealing with virtual machines, operating systems, patches, and various other issues. You'll likely require some specialized help to make it all work well.

Some current examples of these types of services are (some of these are hybrids too but I put them where the most belong in my opinon).

Amazon Web Services - Extremely flexible Build your own w/ many add-ons
VMWare - Build your own
Elastra - Up an comer build and manage your own IaaS
3Tera - Sexy GUI based IaaS/PaaS building tools
Xen - Build your own
XCalibre - Very interesting and can do Linux or Windows
Nirvanix - All about cloud storage, very interesting subset similar to Amazon S3
EngineYard - Rails only Build your own
Joyent - Build your own on Solaris w/ Java/PHP/Rails/Python

The number one benefit of such services is rapid provisioning. You will not have to wait days, weeks, or months for new servers. In some cases, you can have them in minutes! In fact, it's so easy to provision that it's easier to just throw away "broken" servers and replace them with new instances in most cases. All the details of provisioning, racking, stacking, cabling, and more are completely abstracted away from you.

The developers of applications for such systems will often need to adjust things to accommodate for the IaaS cloud. It can also be somewhat difficult to move from one cloud to another in some cases. But, less so with IaaS clouds than the PaaS clouds we will discuss next.

Billing for these services is usually incremental by use and can get complex with tiered on-demand pricing that can be difficult to track in real time. Pricing is usually well defined but can be rather difficult to forecast in some cases. It can vary to the minute depending on levels of use, tiers of service, and other interesting combinations. Now, on to the second type of cloud computing model that's important in the context of this article.

Platform as a Service (PaaS)

PaaS clouds are designed, often within IaaS Clouds by experts to make the deployment and scalability of your application trivial and your costs incremental and reasonably predictable. Here are a few of the choice Application Stack Cloud Providers (ASCP) in this space today.

Mosso, PHP, .NET, Java, Rails, Python, other?
Google App Engine, Python
SalesForce - Proprietary
Morph - Ruby on Rails
Heroku - Ruby on Rails

There are more and more PaaS clouds sprouting up constantly and rapidly. The number one benefit of such a service is that for very little money, none in some cases, you can launch your application with little effort beyond having developing and and possibly some porting work if it's an existing application. Additionally, there will be a large degree of scalability built into your PaaS choice by design as it is a cloud as defined earlier in the article. Finally, you will not need to hire a professional systems administrator more than likely as they are part of the service itself. If you are trying to keep your operations staff lean this can be a useful path to follow assuming your application will capitulate.

The number one down side of choosing an PaaS Cloud provider is that all such services come with various restrictions or trade-offs that may be a non-starter for your project. This is especially true of you already have a pre-existing application that might need to be ported to the PaaS solution you choose. You will need to plan on some porting development time costs and it might not be trivial. For example, a particular PHP extension, rails gem, or operating system tool may be unavailable that your application needs and you'll have to code around these types of issues as your ability to add this to an Application Platform Cloud will be limited unless it's a custom PaaS.

Billing for these services varies. It can be by the hour, request, CPU cycle, or other creative ways. Some even help you do pass through billing for your customers; like Mosso. But, the defining factor in pricing of Application Platform Clouds is that they generally strive to be robust, simple, and easy to load your application into when you are ready.

Software as a Service (SaaS)

Software as a Service has been around for a while now and actually precedes the newer term Cloud Computing. What's interesting, and the reason to include SaaS in this article is that Cloud Computing is breathing ever more life into the SaaS model by reducing the costs associated with producing a SaaS application. A couple of well known examples of SaaS are GMail or Salesforce.

SaaS is not really the ultimate goal of Cloud Computing per say but it is an important, relevant, and right now step along the evolution of compute resource management and allocation.

In summary, understanding cloud computing requires some base knowledge and historical review to know where it came from. This will enlighten people that it's not exactly new but that there is a new excitement now due to technology and business convergence. Once you have that base, which you now do, explicitly learning to use the cloud is the next step. Then, you can almost certainly implement your ideas faster, cheaper, and more profitably than people have ever been able to do before. It's a very exciting time to be in computing and in fact, to be on this planet. Welcome to the clouds!

Posted on Thursday, April 24, 2008 at 12:57PM by Registered CommenterKent Langley in , | Comments5 Comments | References2 References Sphere: Related Content