Scale cube

From HandWiki

The scale cube is a technology model that indicates three methods (or approaches) by which technology platforms may be scaled to meet increasing levels of demand upon the system in question. The three approaches defined by the model include scaling through replication or cloning (the “X axis”), scaling through segmentation along service boundaries or dissimilar components (the “Y axis”) and segmentation or partitioning along similar components (the “Z axis”).[1][2][3][4][5][6]

History

The model was first published in a book in the first edition of The Art of Scalability.[7] The authors claim first publishing of the model online in 2007 in their company blog.[6] Subsequent versions of the model were published in the first edition of Scalability Rules in 2011,[8] the second edition of The Art of Scalability in 2015 [1][4] and the second edition of Scalability Rules in 2016.[9]

Model overview

The X axis of the model describes scaling a technology solution through multiple instances of the same component through cloning of a service or replication of a data set. Web and application servers performing the same function may exist behind a load balancer for scaling a solution. Data persistence systems such as a database may be replicated for higher transaction throughput.[1] The Y axis of the model describes scaling a technology solution by separating a monolithic application into services using action words (verbs), or separating “dissimilar” things. Data may be separated by nouns. Services should have the data upon which they act separated and isolated to that service.[1][10] The Z axis of the cube describes scaling a technology solution by separating components along “similar” boundaries. Such separations may be done on a geographic basis, along customer identity numbers, etc.[1][11]

X axis

X axis scaling is the most commonly used approach and tends to be the easiest to implement. Although potentially costly, the speed at which it can be implemented and start alleviating issues tends to offset the cost. The X Axis tends to be a simple copy of a service that is then load balanced to either help with spikes in traffic or server outages. The costs can start to become overwhelming, particularly when dealing with the persistence tier.[6]

Pros of X axis scaling

  • Intellectually easy
  • Scales transactions well
  • Quick to implement

Cons of X axis scaling

  • Cost (multiple database copies)
  • Does not address caching
  • Does not address organizational scale

Y axis

Y axis scaling starts to break away chunks of monolithic code bases and creates separate services, or sometimes microservices.[12] This separation creates clearly defined lanes for not only responsibility and accountability, but also for fault isolation. If one service fails, it should only bring down itself and not other services.[6][13]

Pros of Y axis scaling

  • Allows for organizational scale
  • Scales transactions well
  • Fault isolation
  • Increases cache hit rate

Cons of Y axis scaling

  • Intellectually hard
  • Takes time to implement

Z axis

Z axis scaling is usually looking at similar use cases of data. Whether that be geographic in nature or how customers use your website, or even just a random modulus of your customer dataset. The Z Axis breaks customers into sequestered sections to benefit response time and to help eliminate issues if a particular region or section should go down.[6][14]

Pros of Z axis scaling

  • Intellectually easy
  • Scales transactions well
  • Can provide fault isolation
  • Can improve response times

Cons of Z axis scaling

  • Takes time to implement
  • Does not address organizational scale
  • Requires increased automation to reduce systems overhead

References

  1. 1.0 1.1 1.2 1.3 1.4 Abbott, Martin; Fisher, Michael (June 13, 2015). The Art of Scalability : Scalable Web Architecture, Processes, and Organizations for the Modern Enterprise (Second ed.). Addison-Wesley. p. 2. ISBN 978-0134032801. 
  2. "Scaling Applications: The Scale Cube". https://geeknarrator.com/2018/03/06/scaling-applications-the-scale-cube/. 
  3. "Architecture Cubed". https://www.benefitfocus.com/blogs/design-engineering/architecture-cubed. 
  4. 4.0 4.1 "The scale cube". https://www.lynda.com/Node-js-tutorials/scale-cube/661809/798830-4.html. 
  5. "Scale Cube". https://uniknow.github.io/AgileDev/site/0.1.10-SNAPSHOT/scale-cube.html. 
  6. 6.0 6.1 6.2 6.3 6.4 "The Scale Cube". https://akfpartners.com/growth-blog/scale-cube. 
  7. Abbott, Martin; Fisher, Michael (December 15, 2009). The Art of Scalability : Scalable Web Architecture, Processes, and Organizations for the Modern Enterprise (First ed.). Addison-Wesley. ISBN 978-0137030422.  December 15th, 2009.
  8. Abbott, Martin; Fisher, Michael (May 4, 2011). Scalability Rules : Principles for Scaling Web Sites (First ed.). Addison-Wesley. ISBN 978-0321753885. 
  9. Abbott, Martin; Fisher, Michael (September 9, 2016). Scalability Rules : Principles for Scaling Web Sites (Second ed.). Acknowledgements Section: Addison-Wesley. ISBN 978-0134431604. 
  10. "From Monoliths to Microservices: An Architectural Strategy". https://thenewstack.io/from-monolith-to-microservices/. 
  11. "Z-Axis Scaling". https://shekhargulati.com/2019/01/09/z-axis-scaling/. 
  12. "What are Microservices?". https://akfpartners.com/growth-blog/what-are-microservices. 
  13. "Architectural Principles-Fault Isolation and Swimlanes". https://akfpartners.com/growth-blog/fault-isolation-swim-lane. 
  14. "AKF Scale Cube: Ze Case for Z Axis". https://akfpartners.com/growth-blog/akf-scale-cube-ze-case-for-z-axis.