Extension metapatterns
These patterns extend Services, Shards, or even a Monolith with a layer that provides an aspect or two of the system’s behavior and often glues other components together.
Middleware#

A Middleware is a layer which provides communication with instances of the system’s components and it may also manage those instances. This way each instance is relieved of the need to track the other instances which it accesses.
Includes: (Message) Broker and Deployment Manager; Message Bus, Event Mediator, Enterprise Service Bus, and Service Mesh.
Shared Repository#

A Shared Repository stores the system’s data, maintains its integrity through transactions, and may support subscriptions to changes in subsets of the data. That lets other system components concentrate on implementing the business logic.
Includes: Shared Database, Blackboard, Data Grid of Space-Based Architecture, Shared Memory, and Shared File System.
Proxy#

A Proxy mediates between a system and its clients, transparently taking care of some generic functionality.
Includes: Full Proxy and Half-Proxy; Sidecar and Ambassador; Firewall, Response Cache, Load Balancer, Reverse Proxy and various Adapters, e.g. Anticorruption Layer, Open Host Service, many Abstraction Layers, Repository, and even User Interface.
Orchestrator#

An Orchestrator implements use cases as sequences of calls to the underlying components which are usually left unaware of each other’s existence.
Includes: Workflow Owner, Application Layer, Facade, Mediator; API Composer, Scatter-Gather, MapReduce, Process Manager, Saga Execution Component, and Integration (Micro-)Service.
Sandwich#

Sandwich subdivides the largest and loosely coupled domain layer into modules or services while the other layers remain monolithic.
Includes: Service-Based Architecture, Space-Based Architecture, Blackboard Architecture, Nanoservices, and Command Query Responsibility Segregation (CQRS).