title: How to modularly keep a serve-side application for different versions of an app
body: <p>I am introducing to the world of apps like Uber and Line. When I am implementing the server-side of this kind of app,  I realize I have to support different versions of my app at runtime. To overcome this requirement, I see three different choices:</p>
  
  <ol>
  <li>Keep a (different) running instance of the server-side for each app version supported. For example, if I support 3 versions of an app, I will have 3 instances running in the server. </li>
  <li>Use namespaces for functions, in a few words, clone many functions/class. For example, if I support 3 versions of an app, I will potentially have 3 versions of a function (eg. fun_v1, fun_v2, fun_v3).</li>
  <li><p>Keep a (different) configuration file for each app version. This file sets that functions or services an app can use and how to use it.  </p>
  
  <p>These three options don't look so modular and a lot "copy and paste" code. If you have any different opinion, let me know.  </p></li>
  </ol>