Krishna Kumar Mahto
Learning Backend

Learning Backend

Understanding Microservices using the Scale Cube Model

Understanding Microservices using the Scale Cube Model

Krishna Kumar Mahto's photo
Krishna Kumar Mahto
·Jul 2, 2022·

2 min read

Table of contents

Scale Cube Model

The Art of Scalability (Martin Abbot and Michael Fisher) describes a 3-D scalability model called as the Scale Cube model. The model defines three ways to scale an application:

  1. X-axis scaling
  2. Y-axis scaling
  3. Z-axis scaling

We shall look at them in the following sequence - X-axis, Z-axis, and Y-axis building up context, finally reaching at a high-level definition of Microservices. scale-cube-model

X-axis Scaling, a.k.a., Horizontal Duplication - Scale by cloning

  • Common way to scale a monolithic application.
  • The requests are load-balanced among all the duplicate identical instances of an application.
  • A great way to improve the Capacity and Availability of the application.

Z-axis Scaling, a.k.a., Data Partitioning - Scale by splitting things that are similar based on an attribute of the request

  • In Z-axis scaling also multiple instances of the monolith application run, but
  • unlike X-axis scaling each instance is responsible for only a subset of the data.
  • The requests are routed based on a request attribute, for e.g. - userId, so that each instance is responsible for a subset of users.
  • The request router uses the userId specified in the Authorization header to select one of the identical instances of the application.
  • A great way to scale an application to handle increasing transaction and data volumes.

Y-axis Scaling, a.k.a., Functional Decomposition - Scale by splitting things that are different functionally

  • X- and Z-axis scaling improve the capacity and availability of an application, but
  • neither solves the problem of increasing development and application complexity.
  • To address this, Y-axis scaling or functional decomposition needs to be applied - splitting monolith into a set of services.
  • From the entire application's point of view:
    • A service is a mini application that implements narrowly focussed functionality, such as Billing, Payment Gateway, Tax, and so forth.
    • A service is scaled using X-axis scaling, although Z-axis scaling might also make sense for some services image.png

High-level definition of Microservices based on the Scale Cube Model

  • Microservice Architecture (or simply, Microservices) is an architectural style that functionally decomposes an application into a set of services (Y-axis scaling).
  • This definition does not say anything about the size of services - what matters is that each has a focussed, cohesive set of responsibilities.

Did you find this article valuable?

Support Krishna Kumar Mahto by becoming a sponsor. Any amount is appreciated!

Learn more about Hashnode Sponsors
 
Share this