0

We are developing a system that runs a certain kind of simulation for our customers:

enter image description here

  • Every simulation runs on it's own server.
  • We typically have a two digit number of simulations running.
  • A client can monitor multiple simulations.
  • A simulation typically runs a few weeks.
  • A new simulation requires manual deployment to a new server.
  • A simulation consists of multiple processes and a shared data cache.
  • A few of the processes are very complex and resource intensive.

The system works well enough, but we have a few pain points that we wish to resolve:

  • Setting up a development environment is extremely cumbersome. Seeing the eShopOnContainers project and how simple it can be using containers was a real eye opener.
  • Deployment is too complicated and error prone. Ideally the system would scale automatically as new simulations need to be started.
  • Deploying a new release requires setting up all the servers manually with the new software.

We are looking to reduce these pain points by having a development environment that is fast to setup, having a system that scales automatically and introducing continuous deployment.

We are considering moving to docker and the microservice architecture, but are unsure if this is the right fit for our software. In particular the complex processes that are difficult to break into smaller pieces. They are certainly not "micro", and they have to keep running even when no clients are logged on.

Are there other architectures we should consider, or is microservices a good fit?

Any insights are greatly appreciated!

2

You seem to be conflating a number of somewhat unrelated concepts:

  • Automated deployment (different from continuous deployment)
  • Containerization
  • Microservices

Of those, it sounds like what you really want is automated deployment - the ability to just "press a button" and get a new simulation running. That certainly doesn't require microservices, and quite possibly doesn't require containerization either - if you're simulation effectively uses the resources an entire machine (virtual or physical) on its own, then you don't need to put it in a container.

Microservices certainly won't fix whatever problems you may have setting up a development environment, and it won't magically give you scaling or automated deployments either.

4
  • I'm not looking for any magical fixes to solve our problems over night, but if we are going to tackle these issues we still need a long term plan. I do see that my question contains several unrelated questions though. Thanks for your input – Q-bertsuit Nov 13 '20 at 9:02
  • You mentioned that the ability to "press a button" and spin up a new simulation doesn't require containerization. What other solutions exists? – Q-bertsuit Nov 13 '20 at 9:04
  • 1) VMs 2) having a bank of physical servers, building an OS image and deploying it to a machine. – Philip Kendall Nov 13 '20 at 10:57
  • @Q-bertsuit you just install the program onto the server? For extra reliability, you could also reinstall the operating system, like Philip suggested. But you don't have to. – user253751 Nov 13 '20 at 17:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.