Identifying and codifying scalability issues across microservices-based distributed systems is challenging. This paper provides “a preliminary list of microservices architecture patterns” and “a principled patterns taxonomy ... for scalability requirements.” A scale cube is used to define these patterns across three dimensions: X-axis scaling focuses on load balancing, especially across distributed network elements; Y-axis focuses on decomposition, so the parts are easier to analyze, develop, and maintain; and the Z-axis of the cube is for grouping related and recurrent items.
The proposed steps explain how this pattern language identifies and selects aspects across the three dimensions. For example, architecture patterns for service discovery belong to the Z-axis grouping pattern since deployment clustering mitigates scaling concerns. The paper further decomposes the scalability dimensions, listing a set of pattern categories. The authors’ taxonomy for scalability patterns could help architects as they discuss, develop, and manage their designs. This pattern language lookup service would be based on (a) context, (b) problem, and (c) solution. When looking up an example for, say, connecting small microservices, the results show: the service discovery pattern is applicable for this (a) context; the (b) problem description shows how this pattern supports dynamically locating services as they start up and move around; and the (c) solution is appropriate since the pattern uses a service discovery process for finding service addresses.
A worked example then shows how a Chilean company’s real-time vehicle position capturing system could use these patterns. While the paper stays with higher-level patterns, the same process steps could help with the decomposition of a system into graphic representations of systems and eventually code-level patterns.