I think this question is too broad for Stack Overflow, and also opinion based which is a bad match for Stack Overflow. This question is more about architecture and design. I feel this question would be much better served at the Software Engineering site. If you do post the question there, please delete the one here (cross-posting is frowned upon on Stack Exchange). — TT. 38 secs ago