Answers: <p>First of all, I would <strong>not</strong> recommend to use a single system for running stable and testing version both on the same system. There are many reasons for this such as:</p>
  
  <ul>
  <li>Your <code>testing</code> version can cause cpu and memory spikes on system which will ultimately affect your <code>stable</code> version and end users.</li>
  <li>Secondly, it will be difficult to manage the dependencies and resources for multiple versions in a single system. </li>
  <li>It can also take a lot of debugging time if the monitoring is not properly setup. </li>
  </ul>
  
  <p>Ideally, you should use 2 different system. One for running the <code>stable</code> version and other <code>testing</code> versions. It will be easy to manage and always a good practice to keep it on different stack.</p>
  
  <p>Still, if you want to use a single system, then yes, you can use docker which will avoid a lot of conflict issues which can arise. Also, the dependencies and shared libraries can be managed easily with different docker images and running docker containers. </p>
  
  <p>If the team is proficient in docker, you can also use <code>docker swarm</code> to setup clusters. You can setup different clusters for <code>stable</code> and <code>testing</code> versions.</p>
  
  <p>I hope you chose the best possible option and implement it.</p>
  
Answers: CC BY-SA 4.0
Answers: 2019-09-18T07:39:57.150Z
Answers: I should mention that both the stable and test versions are deployed in the same system for internal use only. We have a separate system which runs a major version used by external users.
Answers: Sayak Mukhopadhyay
Answers: CC BY-SA 4.0
Answers: 2019-09-18T20:20:08.147Z
Answers: Then going with docker will be better in this case.
Answers: Samit
Answers: CC BY-SA 4.0
Answers: 2019-09-17T17:02:16.140Z
Answers: 2019-09-17T17:02:16.140Z
Answers: Samit
Body: <p>We are a small team with few resources and we have a product which is near completion. The stack comprises of a few Java Spring Applications, a Python Application and a Windows Application and using a Postgresql DB. We have a single physical system where till now, we used to deploy all of these application and test them.</p>
  
  <p>Now we are in a situation where we would need to have multiple versions of this stack running at the same time. For eg. there should be a stable running version and at least 2 versions under testing. We want to achieve this using the single Windows system we have. Is there a way to achieve this? How viable is using multiple Docker images?</p>
  
Tags: <docker><deployment>
Title: Deploying different versions of the same application stack in the same system
UserDisplayName: Sayak Mukhopadhyay
ThreadText: # Deploying different versions of the same application stack in the same system
  
  (Asked by: username_0 on 2019-09-17)
  
  We are a small team with few resources and we have a product which is near completion. The stack comprises of a few Java Spring Applications, a Python Application and a Windows Application and using a Postgresql DB. We have a single physical system where till now, we used to deploy all of these application and test them.
  
  Now we are in a situation where we would need to have multiple versions of this stack running at the same time. For eg. there should be a stable running version and at least 2 versions under testing. We want to achieve this using the single Windows system we have. Is there a way to achieve this? How viable is using multiple Docker images?
  
  **Tags:** docker, deployment
  
  
  ---
  
  ## 1 answers
  
  ### Answer by username_1 on 2019-09-17. Score: 1
  
  First of all, I would **not** recommend to use a single system for running stable and testing version both on the same system. There are many reasons for this such as:
  
  * Your `testing` version can cause cpu and memory spikes on system which will ultimately affect your `stable` version and end users.
  * Secondly, it will be difficult to manage the dependencies and resources for multiple versions in a single system.
  * It can also take a lot of debugging time if the monitoring is not properly setup.
  
  Ideally, you should use 2 different system. One for running the `stable` version and other `testing` versions. It will be easy to manage and always a good practice to keep it on different stack.
  
  Still, if you want to use a single system, then yes, you can use docker which will avoid a lot of conflict issues which can arise. Also, the dependencies and shared libraries can be managed easily with different docker images and running docker containers.
  
  If the team is proficient in docker, you can also use `docker swarm` to setup clusters. You can setup different clusters for `stable` and `testing` versions.
  
  I hope you chose the best possible option and implement it.
  
  > **Comments:**
  > **username_0**: I should mention that both the stable and test versions are deployed in the same system for internal use only. We have a separate system which runs a major version used by external users.  
  > **username_1**: Then going with docker will be better in this case.  
  
  ---
  
  