During the past few days, the clouderati
were busy discussing whether virtualization is a solution or part of
the problem when applied to enterprise cloud computing. Christofer Hoff
started off the discussion by throwing his thoughts out in the public. A lively good discussion ensued on his post and Surendra Reddy, from Yahoo, added his take on the topic.
Even though I follow the enterprise space closely, I am not a hardcore
infrastructure guy like the others. My experience is more on the
startups and SMB side. With my perspective, I am going to pick one
aspect of their discussions and try to talk about the open source
opportunity. If you are an enterprise infrastructure person, I strongly
urge you to check out Christofer’s post and the discussion that follows.
In his post, while discussing about the problems that arise when applications are packaged in virtualized containers, Christofer asks
For example, most of the pre-packaged AMIs found on AWS are bloated
general purpose operating systems with some hardening applied (if at
all) but there’s just all that code… sitting there…doing nothing except
taking up storage, memory and compute resources.
Why do we need this?
He follows up this question with a suggestion to overcome this bloatedness.
Why don’t we at at least see more of a push towards JEOS (Just Enough OS) in the meantime?
As I told previously, I can’t comment on why this is happening on the
enterprise front and how one can overcome it but I could talk about
this from a different angle. There are cases in the startup and SMB
segment where people take advantage of JeOS while running their apps on
a cloud provider like Amazon EC2. In fact, some vendors in the Amazon
ecosystem offer just that. Jumpbox comes to my mind immediately and
they package JeOS and the app to offer a virtual appliance ready to be
deployed on the Amazon EC2 cloud. Let us take a Q&A approach from here and see if we can understand the premise of my post.
1) What is the problem with general purpose OS? Why can’t we just use it in the cloud?
The OS does two things.
- Provides a framework for applications to run.
- Manages and allocates the hardware resources so that applications need not worry about it.
However, with the advent of hardware devices of all kinds and libraries
for various kinds of platforms, the general purpose OS has grown into a
bloatware. We all know very well how badly Microsoft Windows is
bloated. Linux is no different either, even though it is not as bad as
Windows OS. The Linux god himself has spoken about the Linux bloat.
The problems with using such bloated general purpose OS are many. But, some of the significant ones are
- The cloud pricing model is different from the
traditional model. Here, we pay based on the resource consumption. If
the OS is bloated, we will end up paying more money to store the
machine images, we will need more storage space on the running
instances, we will need more CPU and RAM for even running these bloated
- Having unwanted garbage means we will have to deal with the security of everything that is part of the OS.
- Patch management could be disastrous. A patch applied to an unused component could bring down the instance(s) and, hence, the entire application or service.
2) What is JeOS and how does it solve the problem?
JeOS, called Just Enough Operating System, is a barebones OS with just
enough libraries to run a database or a file server or an app. Well,
you can’t run it on a desktop (unless it is used for a very specific
purpose) but it can be used on the virtual instances running on the
cloud with ease.
One of the biggest advantages of the “lean” JeOS is that it consumes
very little computing and storage resources and, hence, significant
cost savings. Even though it doesn’t eliminate security
vulnerabilities, we just have to worry about any vulnerabilities that
are related to the running of the application. We don’t have to worry
about the security problems associated with unused components of the
OS. A patch applied to JeOS could still bring down the instance or
application but it does only when there is an issue with the patch
applied on the OS and libraries that are needed to run the application.
There is no danger of the entire application going down just because of
a patch applied to an obscure component messing up.
3) How do I get started with JeOS?
Well, there are many ways to get started including doing it by hand in
the old fashioned manual way. However, there are many vendors in the
cloud ecosystem that offers a semi-automated solutions to build JeOS,
the application and the associated libraries and then deploy directly
on many different cloud providers. Jumpbox, for example, offers ready made virtual application appliances. CohesiveFT ‘s Elastic Server service allows you to build lean stacks and deploy it on multiple cloud platforms. rPath’s rBuilder
service allows you to start with any one of the available JeOS builds
(CentOS, Ubuntu, rPath’s own build, etc.) and add any application and
save it as a DVD image or Amazon Machine Image (AMI) or VMware image or
Citrix appliance, etc.. There are many other vendors offering similar
services and it is also possible to build these virtual images by hand.
4) Well, what is it about open source you are talking here?
I was just highlighting how open source makes it easy to take the JeOS approach to solving the bloat problem. Yes,
some versions of Windows OS allows you to stop unwanted services and use it
as Windows JeOS. Yes, there are some other proprietary JeOS designed
for a specific platform, like Java. However, these proprietary OSes restrict
the user from building an optimized JeOS by themselves. They are forced
to rely on (and pay) the vendors to achieve this. The proprietary
licenses ensures that the users cannot modify it in any way they want.
The proprietary licenses will also stop anyone from redistributing the
packaged JeOS, thereby, not allowing an ecosystem to develop around the concept.
However, in the case of open source OSes, the user is the king. The
user has complete control over how effectively the OS can be trimmed,
modified and otherwise optimized to suit the needs of the user. The
very fact that the licenses are very permissive ensures that the JeOS
can be repackaged or redistributed, leading to an ecosystem of vendors
offering different services around the JeOS. The use of open source
OSes in building JeOS empowers the users to optimize, secure and save
money on the virtual instances they run on the cloud. This also highlights
the importance of open source in cloud computing from another