We are developing a system that runs a certain kind of simulation for our customers:
- 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!