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.
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 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.
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: