Part 4. Fragmented Metapatterns #
There are several patterns with no system-wide layers. Some of them incorporate two or three orthogonal domains which vary in abstractness to the extent that a service (limited to a subdomain) of one domain acts as a layer for another domain.
Layered Services #
Layered Services is an umbrella metapattern that highlights implementation details of Services, Pipeline, or Monolith.
Includes: Orchestrated Three-Layered Services, Choreographed Two-Layered Services, Command Query Responsibility Segregation (CQRS).
Polyglot Persistence #
Polyglot Persistence is about using multiple data stores which differ in roles or technologies. Each of the upper-level components may have access to any data store. Each data store is a Shared Repository.
Includes: specialized databases, private and shared databases, data file, Content Delivery Network (CDN); read-only replica, Reporting Database, CQRS View Database, Memory Image, Query Service, search index, historical data, Cache-Aside.
Backends for Frontends #
Backends for Frontends feature a service (BFF) for each kind of the system’s client. A BFF may be a Proxy, Orchestrator or both. Each BFF communicates with all the components below it. The pattern looks like multiple Proxies or Orchestrators deployed in parallel.
Includes: Layered Microservice Architecture.
Service-Oriented Architecture #
SOA comprises three or four layers of services, with each layer making a domain. The upper layer contains Orchestrators which are often client-specific, just like BFFs. The second layer incorporates business rules and is divided into business subdomains. The lower layer(s) are libraries and utilities, grouped by functionality and technologies. Any component may use (orchestrate) anything below it.
Includes: Segmented Architecture; distributed monolith, enterprise SOA.
Hierarchy #
Some domains allow for hierarchical composition where the functionality is spread throughout a tree of components.
Includes: Orchestrator of Orchestrators, Presentation-Abstraction-Control (PAC) and Hierarchical Model-View-Controller (HMVC), Bus of Buses, and Cell-Based (Microservice) Architecture (WSO2 version) (Services of Services).