1. Monolithic Architectures (Early Era)
-
Standard Model: Three-tier architecture (Data Access → Process Layer → Presentation Layer).
-
Characteristics:
-
Single deployable binary (e.g., a web artifact).
-
Internal decomposition into layers (often recursively into three layers).
-
-
Advantages:
-
Separation of concerns: Functional decomposition within code.
-
-
Challenges:
-
Tight coupling of components.
-
Difficulty in change management: Modifying one part often impacts others.
-
Slow development cycles: Long build, test, and deployment processes.
-
Technical debt accumulates over time, compounding problems.
-
2. Service-Oriented Architecture (SOA)
-
Intent: Decompose monoliths into independent services (modules).
-
Core Technology: SOAP-based Web Services.
-
Key Issues:
-
Mismatch with HTTP principles:
-
SOAP doesn’t utilize HTTP status codes effectively.
-
Example: Almost all SOAP errors return as HTTP 500, requiring clients to parse complex XML for actual error meaning.
-
-
Aggregation Layer Pitfalls:
-
Originally thin but gradually bloated with business logic.
-
Resulted in new forms of coupling between services, contradicting SOA’s original goal.
-
-
3. Emergence of Microservices
-
Response to SOA limitations and desire for agility and cloud-readiness.
-
Not a silver bullet – introduces its own complexity (e.g., network communication, service orchestration).
-
Advantages:
-
Greater agility in deployment and scalability.
-
Fits naturally with modern web and cloud-native development.
-
REST over HTTP aligns well with web standards.
-
-
Alternative Communication Patterns:
-
gRPC and GraphQL offer flexibility but share some of SOAP’s trade-offs (e.g., complexity in error handling and tooling).
-
Key Takeaway
Understanding the evolution from monolith → SOA → microservices reveals how each step tried to solve the problems of the past, often introducing new challenges. Learning from these transitions helps make informed architectural decisions that balance trade-offs effectively.