It started from this question in StackOverflow about dependent microservices. I followed several references and found interesting things related to system architecture. I put those here for future references.
There is a model we can use for scalability, named Scale Cube. It has 3 (three) dimensions:
X-axis
– Horizontal Duplication – Scale by CloningY-axis
– Functional Decomposition – Scale by Splitting Different ThingsZ-axis
– Data Partitioning – Scale by Splitting Similar Things
Defining Service Boundaries are necessary for creating good microservices. There are several references for this:
- How to Define Service Boundaries
- Value Chain Analysis
- Example of Service Boundaries Identification
- Domain-Driven Design (DDD) Aggregate
Building good microservices is hard, but it is not impossible. We need to do proper design and great discipline on defining boundaries, so we can scale our system easily.