7.6.2 The solution
The ideal solution is to have unlimited hardware. Traditionally, the recommendation has been to set up an identical copy of the live environment on separate machines, and configure it so that it is ready to function. Then, at the lowest possible usage point (to ensure minimum disruption if something does go wrong), use the network load balancer to send all new requests to the new version of the production environment. All old requests should still be served by the old environment, to ensure consistency, although this may not be relevant for all application types (the suggestions here need to be taken in conjunction with a deep understanding of your particular environment).
After a while, no more requests will be sent to the "old" live environment, and the new one will be servicing all of the users. After a suitable period has elapsed and we are confident that the new environment is functioning correctly, the old environment can be turned off and the hardware reappropriated.