I am writing this to start the conversation. This probably should be part of our official documentation/manual.
Cayley gives developers multiple option when it comes to setting it in production environment.
The first choice you’ll make is whether you want Cayley to run from the binary - As Application or As Library.
Another choice you’ll have to make is what Database you want to use. Cayley can work with multiple databases - BoltDB, PostgreSQL, MongoDB, and others.
For example, choosing BoltDB means you’ll get more performance but you will have to take care of backups and you probably won’t have an HA (Highly Available) setup so you’ll need to accept some downtime if your server is down. Also how do you add more capacity if your data grows? Add more drive space or switch to PostgreSQL? Also a concrete implementation of this setup on AWS stack might be ELB -> EC2 -> Cayley As Library + BoltDB.
We need to document each option and it’s use-cases. I am thinking of drawing a decision tree of all the choices that you should make in order to have the correct setup. Any thoughts/ideas are welcome!