views:

119

answers:

1

I have an application that a customer has asked us to package into a software appliance and wanted to find a list of all of the things that I need to consider. Stuff related to choosing the operating system is well-documented, but other aspects such as building usable web consoles, frameworks I should consider (the application is written in Java) and things that I may need to refactor in terms of design are not.

Any guidance is greatly appreciated.

+3  A: 

There are several things you need to consider when creating an appliance. The one thing you don't want to be in the business of is maintaining the OS. So pick an OS that is considered stable and secure. When installing the OS, only include those packages absolutely required for your application. Always pick stable versions of any application frameworks. Ideally you'll use something that is relatively mainstream. Once again, you should be supporting your application, not the framework.

A non-exhaustive list would include things like:

  • Picking a stable, supported, secure OS.
  • Choosing commodity, off the shelf hardware. Parts should be easy to find and replace.
  • Don't install unused packages.
  • Figure out how you'll patch / update your software once deployed.
  • Provide a Web-base configuration option so you don't have to log into the shell to change settings.
  • Make log files available via a web front end for the same reason as above.
  • bootstrap your application during start up.
  • Determine how you'll secure your web front end and the appliance in general.
  • Provide a way to migrate your application to another appliance in case of general hardware failure.
  • Does your app merit clustering and failover?
  • Make backing up your application easy and pain free. Ideally your users won't have to shutdown the app to backup their data.
Aaron Saarela