1

I have some software running on my AWS cloud and I would like to be able to offer this software package as an on-premise solution so that anyone can configure it on their own servers. What would be the best way to make this process as painless as possible?

For some background, we're running node.js on an Amazon Linux server. We're using a couple of open source NPM packages in addition to our custom code. We're also using MongoDB as a session store and redis as a cache. It's all in one instance for now, but the solution we would provide would have mongodb and redis each on its own server, as well as a Haproxy load balancer server in front of multiple application servers. We use EBS to store our MongoDB data.

Justin Meltzer
  • 621
  • 1
  • 9
  • 18
  • 3
    With that many moving parts, I'd personally sell it as a "we'll install it for you for $XX,000." I can't imagine packaging such a system with that many moving parts and expecting it to work out of the box. – ceejayoz Feb 13 '13 at 17:56

2 Answers2

2

This is really a product development question more than a system administration one.

That said, pretty much what ceejayoz said: Provide it as either a consulting service or a pre-built appliance.

My choice for this would be either a physical or VMWare appliance that has your software installed on an operating system you are comfortable managing, and is sold completely hands-off for the customer: Your team would have to manage the systems end-to-end.

As you scale up this could include "rack-in-a-box" solutions, where you sell your customer an integrated environment in a self-contained rack (all they do is provide power and a network drop to get it into their environment), or solutions where you provide a VMWare cluster implementing the equivalent of the rack-in-a-box.

voretaq7
  • 79,345
  • 17
  • 128
  • 213
  • Thanks! Could you explain the "rack-in-a-box" solution a bit more? I'm a bit confused as to what you mean. – Justin Meltzer Feb 13 '13 at 18:38
  • Also what is the name of the VMWare product best for this? (Am I allowed to ask this in a comment?) – Justin Meltzer Feb 13 '13 at 18:39
  • 1
    A rack-in-a-box is exactly what it sounds like: A standard server rack, loaded up with equipment, cabled together, and packed in a big box (usually a crate), shipped by freight to the customer (sometimes to save on shipping you send all the components plus a couple of engineers and built it out on-site instead). Picking an appropriate VMWare product depends on the scale of the implementation, but generally I would assume you'd want to use ESX + vSphere solutions since you'd be charging the customer for the licenses. – voretaq7 Feb 13 '13 at 18:47
  • I'd go down the rack-in-a-box route, probably. Or you could produce a VMWare ESXi virtual appliance (https://solutionexchange.vmware.com/store/category_groups/19) etc – Tom O'Connor Feb 13 '13 at 19:36
1

For such a complex system I would look into provisioning and configuration tools. You have dozens of choices for the former, and Puppet and cfengine are two typical examples of the latter.

Don't expect full automation to be an easy task. If you don't expect to produce many copies of the system and to manage them more or less manually you could to with some "bootstrap" bash script to run on freshly-installed systems...

Luke404
  • 5,708
  • 3
  • 44
  • 58