Nat Friedman

What is a Software Appliance?

This is the first in a series of posts I am writing about SUSE Studio and software appliances.

One of our main objectives in creating SUSE Studio was to make it ridiculously easy for software developers to distribute their applications as software appliances. But what is a software appliance, and why would a developer care?

In other words, what problem are we trying to solve here?

Installing software today is a repetitive, error-prone process. This is especially true for server software, and even more so for commercial server software. Let me give you an example. Here is the software installation manual for a popular commercial database on Linux:

I’ve removed all of the pages that don’t contain step-by-step technical instructions, so what’s left are 68 pages that the poor IT guy has to read.

The first 55 pages of “preinstallation” are the things that you have to do to make sure the operating system is ready to install the application. That’s 55 pages, before you even touch the application!

The manual even provides a helpful table of kernel parameters and the values they should have for the IT guy to type in by hand:

This is terrible, but in the world of software, it is way too common.

Of course, many applications are simpler to install than this example. But even relatively simple applications might fail to install because of a missing dependency or incompatible library or kernel version. This happens on Linux and it happens on Windows. It’s a universal experience.

In fact, every single person I know has had the experience of trying and failing to install an application. And giving up.

You know what I’m talking about: it’s happened to you.

And yet, at this moment on Earth, thousands of people are installing the exact same software applications on their own servers. And not all of them will succeed.

Open source software repository systems like apt-get and yum and OBS that rebuild the entire universe of applications whenever a base library changes do help. But not all software is open source, and these systems are not fool-proof either.

Talking to software vendors over the last two years, I’ve learned that improperly installed software accounts for as much as 50% of all software support incidents.

Traditional software support involves a lot of round-trips

Traditional software support involves a lot of round trips.

So today’s software installation practices are frustrating for end-users and costly for developers.

What can we do about this?

Enter the software appliance.

A software appliance is a full application stack containing the operating system, the application software and any required dependencies, and the configuration and data files required to operate. Everything is preinstalled, preintegrated, and ready to run.

You can think of this like an extreme form of static linking.

Software appliances come in the form of a file which can be a virtual machine image, an ISO, a USB key image, or an Amazon EC2 AMI.

A cute little taxonomy is depicted below.

Instead of asking their customers to assemble applications, operating systems, and middleware together themselves, software vendors can just distribute a a ready-to-run stack that boots into a setup wizard.

The stack is assembled by the developer, so it’s the expert who’s doing all of the installation and integration, not a beginner reading a manual or a high-priced consultant making a living off his voodoo expertise.

The Old Way

The Software Appliance Way

The Software Appliance Way

The software appliance form factor can make it easier for software developers to sell their software because they don’t have to send in “presales engineers” to setup an application onsite when a customer wants to just try an application out or run a “proof of concept.”

The value here is obvious: make it as easy as possible for people to try your stuff.  So we’re starting to see a lot of developers and open source projects putting VMware images or live CD ISOs on their websites for people to try out.

We’ve also found that companies selling big, complex software can use software appliances to sell to smaller companies who don’t have sophisticated IT departments. Some of the world’s largest enterprise software companies like SAP and Oracle have reached near-saturation among the world’s biggest customers, and so one of their opportunities for growth is “downmarket,” among the smaller companies who want an easier installation and maintenance process.

By the way, I personally believe that this is one of the advantages that Oracle could get from their Sun acquisition: now they can deliver a full experience for their customers by bundling their Oracle and PeopleSoft applications with Solaris in an appliance.

The Setup Wizard

Of course, preinstalling the software in a software appliance doesn’t eliminate every single setup step.

The trend here is to provide a setup wizard that runs on first boot. This is usually a web interface that runs remotely. In some cases this is automatically configured through a management system.

The first-boot setup wizard is familiar to anyone who has ever setup a wireless access point, because that’s exactly how you configured your Linksys.

Try it

If you’re a software developer and you want to try it out, you can go to SUSE Studio and create a software appliance today. Of course, software appliances aren’t the only reason we created SUSE Studio. You can also create your own custom Linux distribution with Studio, and we have a lot of users who use it for that purpose.

One final thought. Car companies don’t ask us to buy the engine, chassis, and wheels separately and put it all together ourselves. The people who spend their time assembling car parts are called hobbyists. Why are end-users still doing so much assembly in the software world?

Other articles in this series:

29 July 2009
Show comments
  1. Awesome description! Good timing, too. I had this discussion with a friend on how the technology was interesting but De Icaza’s post was overlooked because it inappropriately mentioned Mono as THE use case for it.

    I hope this works out, looks pretty interesting!


  2. Nat, can you say if Novell is going to start using appliances for OES? I would LOVE to be able to just drop in a file server of iPrint server without the headaches of hand-built servers…


    1. Hey Mike, I definitely can’t speak for the OES team, but I do know that some of the guys over there see a lot of value in the appliance model. And I agree with you that it sounds like a great idea!


  3. Gus,

    That is a shame; We use Nat’s SUSE Studio to build Mono’s appliances.

    Nat’s SUSE Studio is for everyone to build appliances.

    My team just happens to be looking at a different angle to enrich Linux: bringing .NET apps to Linux, so we have developed a plugin for Visual Studio that makes it simple to go from Windows to an appliance.


  4. Nat,

    I like the idea — I just went through this pain installing Zimbra (which, btw, is totally amazing). It doesn’t come with the OS, but almost everything but… it’s own apache, postfix, mysql, spamassassin, java, etc. Half of my install was figuring out what packages needed changes from the default Debian 5.0 install, downgrading Perl, and so on.

    At Permabit, we go through the same sort of software appliance pain but deliver it on hardware. We have our own customized Debian release so that we can track versions, maintain source compliance, and so forth.

    There’s one big problem, though, which my Zimbra experience shows well — resource duplication. Disk is cheap these days so I don’t mind having 5 copies of the OS instead of 1 (I use Xen), but when that gets up to dozens or hundreds it starts to become an inconvenience. VMs tend to require static partitioning of system RAM, even when they’re not using it all, and RAM isn’t so cheap yet. Worst, when I start running every application within its own VM, many of those VMs require precious, precious IPv4 addresses.

    Does SuSE Studio have any answers for me here?


    P.S. Any change of getting a “subscribe to comments on this post” RSS link?


    1. Hey Jered, nice to hear from you.

      Applications that need a lot of RAM will definitely have trouble sharing a computer with other applications that also need a lot of RAM.

      As far as I know all of the hypervisors pretty much require you to statically allocate RAM for the guests. I have heard (today at dinner in fact) that Xen allows you to increase or decrease RAM at run-time, but I’m not sure how this works or if it’s true.

      In fact you probably want some operating system cooperation if you were to have dynamic RAM sizing in your virtual machines. For example, you’d want the operating system to use less buffer cache. By default Linux (and most OSes) will fill up free RAM with disk cache to improve IO performance. Perhaps we could let the hypervisors do some of this caching instead.

      If the operating system needs to “play nice” with other OSes running on the same hardware, I guess that sort of thing would need to be taken into account.

      In my experience putting 16GB of RAM in a server is pretty cheap these days, and there are a lot of server apps that run in a lot less than that, so you can definitely do “server consolidation.” I am also a big fan of Zimbra, but I haven’t run it recently. Sounds like it’s pretty hungry!



      1. Xen does indeed let you change the VM memory allocation (and number of processors) while live, but it’s still a static allocation to the VM which is not an efficient way of managing things. I believe (but can’t be bothered to check right now) that VirtualBox doesn’t have this problem because it’s doing kernel-level virtualzation — there’s only one kernel running but it “pretends” to be multiple kernels to different VMs (“VMs”?) by judicious use of duplicate data structures.

        16 GB of RAM is cheap, but it seems like we’re going down the road where every app is going to want to have its own gig or more VM, and I’d like to run more than 16 apps at once. Is the hypervisor the new OS?



  5. Sounds interesting. Parallelization of CPUs should really help this work even better. Maybe I’m not understanding the concept correctly, but if each appliance is its own VM, wouldn’t that really start to task the underlying architecture once you get two or three “appliances” running on the same hardware? Seems like a lot of bandwidth (in every sense, CPU, memory, network, etc) would be required to keep all of those VMs happy.

    Still, in the arena of building one application for use on one processor, this could be really cool-especially in the embedded systems area.


    1. So the theory is that these resources are cheap and getting cheaper fast. So while there is definitely some overhead associated with compartmentalizing workloads inside VMs, there are organizational benefits that outweigh the resource cost.

      The benefits include security (compromising one app doesn’t compromise the whole “machine”) and simplification (one app can’t interfere with another).

      I think the simplification one is the big one. Reducing the amount of work a person has to do, and the number of things that the IT admin has to keep in mind, to maintain a workload, is a big win.

      Whether these advantages are big enough to outweigh the virtual machine overhead varies on a case-by-case basis. Virtual appliances aren’t right for every app but they are right for many.


  6. Could you post some concrete examples of how companies use this?

    I can see running a web app on a vm then everyone accesses it through the browser, but if it is a desktop application or other – is everyone going to be running a of it on their desktops? I may be lacking vision here but I would like to hear more of how this will/is being used by people.


    1. Jared,

      This model mostly applies to server applications. Firing up a whole VM to run one desktop app doesn’t make a lot of sense, in most cases (although there are some exceptions).

      So some examples would be: mail server, wiki, CRM app, database, file sharing server, wordpress, point of sale server, etc etc etc.

      Hope that helps,


  7. This is an excellent description and I agree with the main purpose of a software appliance. However, it gets tougher when it comes to maintenance. How do I upgrade the OS and the application I distributed or received? Is there an easy way to do that without breaking the dependencies? This is something that we need address for an wider adoption of software appliances.


    1. Great question Jaimon! I will address this in a future blog entry in a few days. Stay tuned :-)


  8. Another option to look at is Lotus Foundations which provides a SUSE based HW/SW appliance framework and you do not even need to know anything about Linux to run it. You can go from bare metal (drives not even formatted) to a complete IT environment – VPN, file server, mail server, firewall, web server, app server, etc in under 30 min with no real IT knowledge. It even includes a VMWare hypervisor so you can run Windows applications.


    1. Lotus Foundations is definitely cool if you are a small business end-user and want to use these kinds of services using software appliances.

      SUSE Studio is of course targeted at software developers who want to create software appliances.

      Thanks for your comment!


  9. thank you for all the information


  10. Hey Nat!
    Great job! That’s a project that’s been definitively worth investing the time and the resources.

    Having worked for the virtualization industry for two years at Sun, I can tell you, there are big opportunities for services and applications being deployed as a VM fashion, either running on the so called cloud or on a personal device.

    I don’t think we’re too far from the days where every OS instance in a machine will be virtualized by default and BIOSes become thin hypervisors.

    You definitively nailed the spot with this at a perfect timing, and if done well, there’s a lot of business opportunities for Novell with this service.

    By the way, can’t believe you mentioned Hyper-V and VMware and failed to mention VirtualBox !!! Shame on you! ;-)


    1. Thanks for the comment Alberto!

      Totally agree on the direction of BIOSes.

      I’m a big fan of VirtualBox. But I didn’t need to mention it explicitly because it runs VMware images so perfectly ;-)


  11. Thank you for the information.
    Congratulations for the project. Go on.


  12. Very interesting. Although, I don’t like the cars example in the end. People use cars for the same reason: to get somewhere. People use software for different reasons (writing, playing, programming, communicating, etc).


    1. You’re right that people use software for many different purposes, but it’s also true that everyone uses software to get something done, not to spend endless days tinkering with it. (Well, almost everyone).

      To address your concern, I guess you could say “vehicles” instead of cars, and imagine a car and a truck and a bus and a motorcycle and a moped and a bicycle and a jet ski being analogous to word processing and video games and email, or whatever. Even though there is a small minority of people who love tinkering with all of those things, most people just want to use them.

      Thanks for writing!


  13. Hi there,

    Great blog post – I can’t agree more with the software appliance model, it makes our life as a software company so much easier.

    We develop Atmail and support a hardware appliance running CentOS – When users evaluate our software and use a myriad of different Linux distributions, dependency hells, different PHP versions, modules, compiler deps, and so forth, this really takes away from the development teams efforts to focus on the final product. Juggling all the different variables to just install a complex software/server application, well, sucks.

    I’m keen to see Suse Studio in action, just signed up for the beta, and would definitely consider using Suse for a software appliance model.

    Keep up the great work


    1. Great post. I believe too that software appliances is THE vehicle for ISV Go To Market activities.

      One small problem today is the fact that a software appliance is monolithic, all the services are running in one container. Consequently in terms of scalability, high availability and even security, we require to manually configure multiple software appliances together to create a solution.

      We are currently developing a similar set of tools to Novell to help users to assemble software appliances based on CentOS, Fedora, Debian, Ubuntu & Open Solaris. We would also like to support OpenSuSe.

      We are also developing a framework to help users to automate the configuration of software appliances (as a vApp) in a distributed manner. This allows users to benefit from the deliver of a software appliance as a turn-key solution that can be deployed over more than one instance.

      Thanks again for helping educate the market.


Copyright © 1998 - 2011 Nat Friedman