I started a project and I started to have a lot of web traffic, and at some point I felt insecure of how to scale the project to production in two issues:
- How to perform updates without leaving my users without service?
- How to correctly configure Node.js so that it consumes less memory?
I have microservices working with Hydra-express, and I have not been able to implement Hydra-router and I do it with Express.js; I also have NGINX as a proxy gateway.
I am programming in ES6, transpiling with BABEL and maintaining active microservices with PM2, some with fork and the most important in cluster mode.
I was thinking about using docker, but I have not found any tutorial on how to use it with CDN, upload files and serve them to the user.
Adding to @ralphtheninja answer, I suggest you reading more about blue green deployments, as proposed by Martin Fowler; https://martinfowler.com/bliki/BlueGreenDeployment.html
I have no idea where your backend is running but there are some services that will do it for you, AWS ElasticBeanstalk for example will put your instances behind a load balancer and will manage deployment according to a policy. have a look; https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.rolling-version-deploy.html.