This is very interesting question for the professionals. Recently I have worked with Amazon Web Services (if someone of you knows about AWS cloud), I have created a cloud in AWS hosting two Availability Zones, and each Availability Zone have 2 subnets (public and private). The goal was to have secure environment and also application should be highly available 24/7. Moreover, I have setup Auto Scaling group on my cloud, which launches new instances automatically when any server goes down (in any Availability Zone/subnet), and launch application on it and my cloud becomes complete and healthy again.
Above case is for Amazon Web Services only, now I wonder how a locally hosted (server inside our office) can be managed to achieve similar goal (regardless of internet connection and networking quality or throughput). We have to setup a highly available an secure environment in our office which will run our Node.JS application.
I just learned about Docker Container, which raised a question in my mind that can Docker Container assist me to achieve the goal? We can not afford down time, or slow performance, and hurdles on deployments (regardless of internet connection line, leave that for now).
I’m looking for solution for two forms: 1). When Node.js application is simply configured on the linux/ubunto server. 2). When we use Docker Container strategy.
For both cases I would love to know (keeping in mind Node.js is single threaded so need to think about that also):
i). Steps required to make it highly available environment ii). How can it recover from any disaster (when due to some reason the server goes down). iii). Handling heavy traffic in rush hours for both forms of deployment. iv). How security features can be applied on both forms. v). How DDoS can be prevented for both forms differently. vi). How deployment of newer version of application can be managed easily with minimum down time.
These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.