Design – Build – Run: Applied Practices and Principles for Production-Ready Software Development
by Dave Ingram
19.3. Non-Stop Processing
As discussed previously, hardware clustering and load balancing can help to provide resilience within the overall architecture and infrastructure. There are a few more resilience patterns and practices that you can use to provide a more robust solution:
Running multiple synchronized processes — Where possible, it is always a good idea to run multiple processes in parallel. In some cases, the processes could be standing by to perform the exact same processing on the exact same records and data, but the processes are communicating with each other to ensure that they are fully synchronized. The communication mechanisms can range from remoting calls, metaphors, flat files, or the database. The important thing is that when one process fails or stops for some reason, there's another or possibly many others that could assume the work load. This approach of running multiple synchronized processes is nothing more than an internal clustering mechanism that offers even more resilience within the application itself. It is also possible on occasion to run processes in an active/active processing fashion. All the processes are synchronized and performing actions at the same time on different records and data. However, if one fails or stops, one of the other processes will take on the additional work. The processes could be alternative threads, other processes on the local machine, and even processes on another machine.
Automatic restart — When a process stops or exits, ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access