SOA vs Microservices: Oversimplified. It misses that SOA often implies coarse-grained services and WS-* protocols, while microservices are more REST/gRPC, devops-friendly, and loosely coupled.
Master-Slave: Outdated terminology and architecture — most modern systems use leader-follower, replication, or quorum-based consensus (e.g., Raft, Paxos). "Master-slave" also has naming baggage.
MVC: Only applies to frontend or backend UI layers — doesn’t qualify as a full system architecture. More of a design pattern than architecture pattern.
Event-Driven: Could mention CQRS + Event Sourcing, or at least note complexity with eventual consistency.
I think it is a bit misleading for some of the patterns being put in this same list. Some of them are not even patterns that need to chosen one over another. E.g. You can use MVC and Microservice patterns altogether not necessarily interchangeable
Typically in an Enterprise Grade Solution, different systems are build in different patterns. And the components in each pattern can communicate with components from a different patter.
As an example, we have a user's order management platform that manages user orders and assigns different statuses to each order. This system is built in Microservice based architecture, exposing several standalone and independent APIs for each function. This system also has a feature to trigger a batch processing system which is async and this Batch system in turn, exposes APIs for batch and batch item related processing and user-batch related queries. This batch management is built in an SOA/ESB architectural style hugely relying on queues and topics to distribute data to multiple consumers and effectively persisting to a DB.
The phrasing "monolith or layered" is misleading, as it makes it seem like they are interchangeable, but they are actually two different types. One is system architecture, the other - software architecture. Your monolith can absolutely use layered architecture to separate concerns in your code.
The Master-Slave Architecture is more recently being called the Controller-Responder Architecture. It gets away from outdated terminology and is also a lot better at describing how it works.
A few point here
SOA vs Microservices: Oversimplified. It misses that SOA often implies coarse-grained services and WS-* protocols, while microservices are more REST/gRPC, devops-friendly, and loosely coupled.
Master-Slave: Outdated terminology and architecture — most modern systems use leader-follower, replication, or quorum-based consensus (e.g., Raft, Paxos). "Master-slave" also has naming baggage.
MVC: Only applies to frontend or backend UI layers — doesn’t qualify as a full system architecture. More of a design pattern than architecture pattern.
Event-Driven: Could mention CQRS + Event Sourcing, or at least note complexity with eventual consistency.
I think it is a bit misleading for some of the patterns being put in this same list. Some of them are not even patterns that need to chosen one over another. E.g. You can use MVC and Microservice patterns altogether not necessarily interchangeable
Typically in an Enterprise Grade Solution, different systems are build in different patterns. And the components in each pattern can communicate with components from a different patter.
As an example, we have a user's order management platform that manages user orders and assigns different statuses to each order. This system is built in Microservice based architecture, exposing several standalone and independent APIs for each function. This system also has a feature to trigger a batch processing system which is async and this Batch system in turn, exposes APIs for batch and batch item related processing and user-batch related queries. This batch management is built in an SOA/ESB architectural style hugely relying on queues and topics to distribute data to multiple consumers and effectively persisting to a DB.
So, as summarized very accurately - it depends!
The phrasing "monolith or layered" is misleading, as it makes it seem like they are interchangeable, but they are actually two different types. One is system architecture, the other - software architecture. Your monolith can absolutely use layered architecture to separate concerns in your code.
The Master-Slave Architecture is more recently being called the Controller-Responder Architecture. It gets away from outdated terminology and is also a lot better at describing how it works.
Love this