Ask HN: A reasonable deployment solution for small-scale kiosk apps?
We need to find a solution for the deploy, monitor, update cycle for small-scale, multi-platform (mac, windows, linux), LAN-bound kiosk apps. So far we have survived writing our own tooling for specific tasks but it's quickly getting out of hand due to the increasing amount of clients we need to support.
After an admittedly cursory examination of a few popular solutions (docker, nomad, kubernetes) it seems their use is mostly concerned with the big-scale infrastructure side of things, and so far it's unclear to us whether they can be adapted to ad-hoc distribution / versioning on LAN and local storage.
If anyone is able to point us in the right direction it would be greatly appreciated.
3 comments
[ 3.0 ms ] story [ 18.9 ms ] threadFor the laptop deployment, I wrote a Chef script to provision a Vagrant VM, then saved it as a .box file. We delivered the .box file along with short .bat/.sh scripts to start it up. It sometimes felt like we should have used something trendier, like Docker, although Docker seemed like a bad fit both because of the Windows/OS X requirement and the multiple processes (Postgres, Unicorn, Nginx, background jobs....).
They actually volunteered how impressed they were by the smoothness of the install process. (!)
We had a sh/bat file to run Capistrano for app updates, so as long as no system changes were needed, that was very easy. Delivering system updates (e.g. now we need ImageMagick installed....) was painful though. A couple times we actually abused Rails database migrations as a poor-man's configuration management tool. :-) The .box file was very large, and we would have to replace the old VM without wiping out the database. I think there are easier ways to solve this problem than we used, e.g. Packer, but I wasn't aware of them then. I'm still not 100% sure they would have worked for us.
Anyway, this seems kind of similar to your LAN-bound kiosks.
I would definitely not use Kubernetes, which is really intended for a datacenter. I haven't tried Nomad so I can't speak to that. I might be willing to try Docker nowadays---I think it would allow incremental system updates and so alleviate the pain of moving big .box files, and you could keep the database outside of the image. I would still probably run it in a Linux VM though, since I don't really trust Docker for Windows/Mac yet.
But in general, I think the new devops tools we read about on Hacker News are intended for a different use-case than yours, so I would not feel bad for passing them by. I certainly sometimes questioned my decision to avoid Docker, and got asked by a lot of people why we weren't using it (none of whom had experience with it). But I think it was the right decision to use older, more battle-tested tools, and ones that were a better fit for what we had to do. On-prem software is really a whole different beast from webapps you host. It requires a different QA process, a robust install tool, and a good plan for handling updates.