Ways to deliver server solution set to customers

I’m looking for ways to deliver our server solution set to customer. So that customer can easily install and experience our solution.

Our server solution set includes tomcat+webapp, memcached, db solution and so on. What is a preferred way to deliver server solution set to customer?

What I’m thinking about is as following.

  • First, make pre-baked all in one image with vagrant compatible then ask customer provision with vagrant.
  • Second option, put all solutions into a rpm package then ask customer install solution with provided RPM.
  • Third, make live CD image then provide live CD image to customers.

I wonder what other solution exist out there and what would be the problem among above 3 options.

Answer

Given your three options, I would personally go for your option 2 and build a deployable package. The advantage of a package here is that you would only have to ship the dependencies of your application, not the entire OS.

Generally, I tend to deploy on ubuntu-based systems so I’m usually building DEBs not RPMs. Given that you mention RPM, I’m assuming that your client runs a flavour of Linux that can install RPM packages, but if you don’t know the target architecture then distributing a tarball might make more sense. Since you use Apache Tomcat, you could look at those tarballs as good examples of straightforward packaging.

The pre-baked image approach sounds really nice in principle, especially if you’re trying to build a simple demonstration for a client to play with. A few years back I looked into shipping a solution as a Virtual Appliance but in the end decided that the licensing headache of packaging the entire OS was more hassle than the benefit. For instance, you could face a licensing issue since one interpretation of the GPL would be that distributing a Linux ‘live CD’ or Vagrant image would require you to release all your code under the GPL (which I’m guessing you wouldn’t want to do). Additionally, you wouldn’t want to become responsible for ensuring that the system libraries on your disk image were updated with all the relevant security patches. Security of the runtime server should ideally remain the responsibility of your client, not you.

If you decide to build RPMs, and build with Maven, then I can recommend the JDeb and RVM maven plugins, they’re great. FPM is also a handy tool for working with package managers.

Attribution
Source : Link , Question Author : jacky jung , Answer Author : Charles

Leave a Comment