Architectural Patterns for Scaling Microservices and APIs - GlueCon 2015
- 2. Scalability is not a Singleton
You have
less than 5
seconds to
deliver
content.
Maintain availability
Maintain performance
Average
cost of
critical app
failure per
hour is
$500,000 to
$1 million.
- 3. Scale is achieved by optimally distributing
load
TCP Connections
Response time
HTTP Requests
Least connections
Fastest response
Fastest app
Round Robin
Thresholds Methods
- 4. The Scale Cube
X-axis
Y-axis
Z-axis
http://microservices.io/articles/scalecube.html
- 5. Scalability: Out, Up, and Across
Creating scalability
domains
Balance
performance and
availability
- 8. Z-Axis
Like sharding
Uses one or more identifiable variables (usually from HTTP headers)
Operates at layer 7 (HTTP)
- 11. API Façade: Interpolated in Network
Standard Y-axis Scaling Pattern
Microservice A
Microservice B
Microservice C
API
- 13. Most often combined in 2-3 tiers
Y-axis routing pattern used to
distribute API calls to X-axis
scaled service clusters
- 15. Top Mistakes Regardless of
Pattern
• Choosing the wrong thresholds
• Scaling too late leads to time outs &
performance degradation
• Not monitoring
• Services fail, users get angrified by time outs
• Not scaling the scaler
• Overwhelming the upstream scaler is a Very
Bad Thing™
Editor's Notes
- Session Title
Description Scalability has come along way from the simple cloning and clustering techniques used to scale monolithic applications. As applications and APIs continue to decompose there’s a need for patterns designed to scale at an architectural level across X, Y and Z axes. This session will dive into the three axes of scale (as defined by The Scale Cube) and how smart proxies facilitate the implementation of architectural level scalability patterns.
- Thresholds and methods can be used with any pattern, and mixed and matched with patterns to achieve the goals desired.