- Patterns of Enterprise Application Architecture ( Martin Fowler )
- Software Architecture Patterns ( Mark Richards )
- Enterprise Integration Patterns ( Gregor Hohpe )
:TODO: cell-based Architecture (cellular architecture)
- Independent Deployments
- Fault Isolation
- Enchanced Scalability
- Scalability
- Reducing Complexity
- Distributed Data Management
- Enhancing Communication
- API Gateway
like GoF.facade single entry point for all client requests
- Database per Service
like a GoF.memento ( partially ) single databank per service, data isolation
- Circuit Breaker
prevent overwhelming of the calls to outdated external resource
- Event-Driven
like GoF.observer publish event ( notify ), when own state has changed
- Saga
like a GoF.command + GoF.proxy for list of the external call will make undo in case of fail
It is an international standard used to design large-scale, distributed systems (systems running on multiple computers or servers across networks).
RM-ODP divides a system into 5 distinct Viewpoints. Instead of looking at the whole chaotic system at once, you look at it through five different "lenses":
| Viewpoint | What it Focuses On | The Core Question |
|---|---|---|
| Enterprise | Business goals, budget, scope, and organizational policies. | Why are we building this, and what business rules apply? |
| Information | The data structure, semantics, and information flow. | What information does the system need to store and process? |
| Computational | Functional breakdown and how separate components interact. | What do the individual software blocks actually do? |
| Engineering | The underlying infrastructure, communication channels, and deployment. | How do we physically move data between servers reliably and securely? |
| Technology | The specific hardware, software, and tech stack choices. | Are we using AWS or Azure? Python or Java? Linux or Windows? |
can be considered as a RemoteMethodInvocation
flowchart LR
a[component A] --->|triggs| b[component B]
- both of the services must be online
- for scaling need to add additional layer ( facade/InformationExpert )
Model: Publisher(1) --> Subscriber(*)
"Component B" must ask by himself the Broker
flowchart LR
a(component A) --->|triggs| br(broker)
br <---|triggs| b(component B)
m[message]
a -.->|create| m -.->|read| b
Model: Producer(1) --> Consumer(+)
flowchart LR
a(component A) --->|triggs| br(broker)
br --->|triggs| b(component B)
m[message]
a -.->|create| m -.->|read| b


