0

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.

Sven
  • 98,649
  • 14
  • 180
  • 226

3 Answers3

0

Amazon Cloud. Build your servers in the cloud then you can create an image using Amazon Machine Images. Spin up a duplicate, create an account for them to log in and email them credentials. Of course this only works if they are happy with testing in the cloud and not on their own hardware, but it would be easy for your client.

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/CopyingAMIs.html

Spencer5051
  • 301
  • 2
  • 4
  • Great Idea. However I'm looking for a solution which is not using public cloud. I should've mentioned about it in advance. – jacky jung Jul 28 '14 at 11:12
0

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.

Charles
  • 56
  • 2
  • Disagree on the licensing issues: http://stackoverflow.com/questions/2162038/can-i-distribute-my-app-on-a-linux-based-virtual-machine-and-keep-it-closed-sour – faker Jul 28 '14 at 11:58
  • It's a grey area and I suspect that you are right, it seems pragmatic after all. But I think you can see why I prefer to stay clear of distributing the entire OS. – Charles Jul 28 '14 at 12:05
  • The GPL very blatantly does _not_ say that. If you shipped such an image, you would have to also ship the source code of the Linux distribution, since it's all under open source licenses, but not your own code. – Michael Hampton Jul 28 '14 at 12:09
  • Thank you for sharing your experience. It sounds making rpm/tar better for me. – jacky jung Jul 29 '14 at 00:23
0

It depends a bit on the target audience but very generally you need a solution that takes very little effort to setup and consistently works.

Most commonly when vendors gave us test versions, they provided us complete VMWare disk images (vmdk files).
These are compatible with VMWare and VirtualBox.
This has the big advantage that you basically control the environment and can test it well before handing it over.
The disadvantage is that it doesn't necessarily resemble the production environment or installation process (unless you sell appliances).
I haven't seen any (commercial) vendor providing Vagrant boxes.
I personally would not only provide Vagrant boxes, I would fear it scares of potential customers who don't use Vagrant yet.
I would consider providing both Vagrant and vmdk files.

Providing RPMs is great if this is what you would sell in the end to the customer.
This allows the administration team to evaluate the installation process too.
Of course this requires very good documentation from your part (requirements, configuration settings, ...).
But I would still provide a vmdk image.
For a quick evaluation it is simply the most trouble free way to go (for both the customer and the vendor).

faker
  • 17,496
  • 2
  • 60
  • 70