title: Client Server architecture design
body: <p>The application is a client server model.</p>
  
  <p>Client application has local database which the customer will use on their day to day transaction.</p>
  
  <p>The server holds another database which have consolidated information from client along with some other key things.</p>
  
  <p>Periodically, client and server need to communicate for: data migration, accessing data from server (which is not available at client side), etc.</p>
  
  <p>Neither the client or the server has static IP addresses.</p>
  
  <p>How to make sure client can connect to the server seamlessly? </p>
  
  <p>To put everything at a single location (e.g. in cloud or at a datacentre) is not an option due to the business requirements.</p>