Queue-based System Architecture: Build Scalable, Fault-tolerant Distributed Systems by Sal Razzaq

2020-02-01

Intro

Modern enterprise systems often require collaboration of multiple internal and external systems.

The system must accept the fact that third-party systems may not be available or responsive at times and must build tolerances for such occurrences.

Queue-based System Architecture

In a queue-based system, the message is command to the receiver to do something; whereas in an event-driven system, the message is a notification to the subscriber that some system event has occurred.

A message defines a unit of work to be performed by the system.

The message may contain a version number for proper handling of the message by the system.

By its very nature, queue-based system architecture encourages separation of concerns and decoupling of subsystems.

QBSA employs the Command Query Responsibility Segregation (CQRS) pattern. In principle, CQRS states that a method should either change the state of an object, or return a result, but not both.

Commands change the state of the system; queries do not. As such we can scale query and command performance independently of each other.

Buy on amazon

Razzaq, S. (2014). Queue-based System Architecture: Build Scalable, Fault-tolerant Distributed Systems [Kindle Android version].

Bookshelf

Joel on Software by Joel Spolsky