The Scale Cube and MSA
Over time, new functions of applications are continuously developed and number of service users increase. To deal with these expansion of an application, developers and architects offer several solutions.
previous post: Monolithic Architecture
The Scale Cube
In the book <The Art of Scalability>, written by Michael T. Fisher and Martin L. Abbott, they suggest applications can be expanded by following 3-dimensional scale cube model.
Expansion in the x, y, z-axis direction
X-axis: load balancing to multiple instances
By adding load balancer to distribute incoming requests to duplicated instances, we can improve the capacity of an application. Monolithic applications can be expanded in this way.
Z-axis: routing by an attribute of the requests
The incoming requests are routed to an instance that matches the attribute of the request. Duplicated instances behind the router, then, process the subset of the entire client requests that they received from the router. This type of expansion helps an application to handle large volume of transaction and data.
Y-axis: decomposing to micro services by the function of an application
The two types of expansion above improve the capacity of applications, but still they suffer from the complexity. By decomposing monolithic application to the set of micro services that have focused/cohesive responsibility of a single function, we can ensure modularity of an application.
Micro Service Architecture (MSA)
MSA uses a service as a unit of modularity. Each services have their own database and protect their internal class with APIs. These micro services then, can be used as the building blocks of an application, build, tested and expanded independently.
SOA(Service Oriented Architecture) uses SOAP and global modeling database to design large monolithic application. Compared to SOA, MSA uses message broker or lighter protocols like gRPC and consists of individual database models of a small services.
Reference
Microservices Patterns by Chris Richardson