Some comments on answers with batch ideas: Implementing a dynamic reward system
These batch processes can be on a separate server / machine, so you can recompile the application or restart the server at any time. Obtaining new rewards can be used, for example, using the mentioned approach with adding banners and restarting the server, as well as new serial tasks can be introduced at any time and so on. Thus, your main application works in 99% of cases, a periodic server can be restarted often. Therefore, you can use separate batch machines.
When you need to deploy a new version of the main application, I think you can just stop, deploy and start it with a service notification to users. This approach is used even in the best poker rooms with excellent software (for example, FullTiltPoker did it, now it doesn’t work due to a loss of license, but their site says "System Update" :)).
Thus, one of the options for updating versions is to redeploy / restart after hours.
Another approach is real-time updates. As a rule, this is done by transferring a group of users using the bundle to the new version. Therefore, at the same time, some users use the old version, and some use the new ones. Not very cool for poker software, as users with different versions can interact. But if you are confident in the compatibility of versions, you can go with this approach by checking the version of the client client, for example, at login.
In my answer, I tried to say that you do not need to enter 24/7 support logic for your code. Leave the problems of system availability for hardware (fault tolerance, load balancing, etc.). You can follow any good methods that you used to write code, only you need to remember that your key core logic is not deployed often (for example, once a week), and part of the batch can be updated / restarted at any time, if necessary.
Andrey
source share