title: How to re-deploy springboot application without down time
body: <p>I have limited resources so I can't set complete <code>microservices</code> architecture with docker &amp; kubernetes, and my app is being used continuously bu users.</p>
  
  <p>I have to re-deploy my app for each new release/hot-fix, do you know how can I achieve that with minimal down time?</p>
  
  <p>Information about my app:</p>
  
  <ul>
  <li>Startup duration in the server: <code>80 seconds</code>.</li>
  <li>Port: <code>8080</code></li>
  <li>App server: <code>embedded tomcat</code></li>
  <li>Spring-boot release: <code>2.0.1.RELEASE</code>.</li>
  <li>I am behind a corporate <code>nginx</code> reverse proxy.</li>
  <li>Packaging: <code>jar</code></li>
  <li>Stage: <code>production</code></li>
  </ul>
  
  <p>I thought about this solution:</p>
  
  <ul>
  <li>Setting up internal <code>nginx</code> that listens on port 8080 rather than my app and forward to new port.</li>
  <li>Each time I want to deploy, I start my app in a new different port and change nginx conf then reload it.</li>
  </ul>
  
  <p>Is there anyone who faced this problem before ? or any thought how to achieve it?</p>
  
  <p>Thank you in advance.</p>