6 Scalability Patterns
This chapter details patterns that help to scale and manage scalable systems – one of the fundamental driving forces behind distributed systems.
Competing Consumers & Load Balancer in § 6.1 have differing implementations, but the same underlying structure and intent – to distribute work among multiple identical consumers
Partitioning in § 6.2, also known as sharding, is a similar pattern, but with predetermined responsibilities for each participant, be it data or tasks
Scatter–Gather in § 6.3 presents a common way to work with different forms of partitioning
Externalised Configuration in § 6.4 deals with management of scaled systems
Other patterns that could be considered a part of this category include:
- Publisher–Subscriber can be used to scale broadcasts
- Choreography which helps scalability by losing dependence on a central coordinating, potentially bottlenecking, service
- Identity Provider improves handling of secrets in scaled systems
- Sidecar for introducing shared functionality without a bottleneck
- Ambassador for plugging scaling services into existing systems
- Colocate to apply physical restrictions to scaling to improve scaling efficiency
- Rate Limiting to protect scaled systems from individual abusive clients
- Leader and Followers for coordination in scaled systems
- Event Sourcing for easier replication in scaled systems
Notable omissions in this category due to the methodology described in § 1 include:
Pipes and Filters by Hohpe et al. [4, p. 85] and Microsoft [74], due to its classification as an architectural style by Richards et al. [2, p. 143]. Furthermore, describing it in the context of distributed systems does not add much and presents notions already discussed in Choreography
Map Reduce by Fehling et al. [15, p. 106] and Wilder [14, p. 59], as it usually depends on specific products, and has an identical structure to scatter–gather
Geode (Geographic Nodes) by Microsoft [75], which does not appear outside of Azure and seems to just be a combination of load balancing and eventual consistency wrapped around specific products