This document outlines various microservices patterns organized into 12 categories. It provides a unified naming structure for patterns along with the naming conventions used by Arcitura, Richardson, and Microsoft. Some key patterns include: service decomposition patterns like database per service and shared database; communication patterns like API composition and asynchronous messaging; deployment patterns like containerization and serverless deployment; and observability patterns like distributed tracing and log aggregation. The document aims to provide a common lexicon for discussing microservices architectural patterns.
2. Please follow me and subscribe on:
Vocal: https://vocal.media/authors/haitham-raik
Twitter: https://twitter.com/haithamraik
Instagram: https://www.instagram.com/haitham.raik/
3. Unified Pattern Name Arcitura Naming Richardson Naming Microsoft Naming
Externalized configuration NA Externalized configuration External Configuration Store
Microservice chassis NA Microservice chassis NA
Service Template NA Service Template NA
1. Utility Patterns (3 Patterns)
4. Unified Pattern Name Arcitura Naming Richardson Naming Microsoft Naming
Micro Task Abstraction Micro Task Abstraction
1
NA NA
CQRS Micro Task Segregation CQRS CQRS
Decompose by business capability NA Decompose by business capability NA
Decompose by subdomain NA Decompose by subdomain NA
Service per Team NA Service per Team NA
Strangler Fig NA Strangler Application Strangler Fig
* Note 1: Inherited from SOA style and patterns
2. Decomposition Patterns (6 Patterns)
5. Unified Pattern Name Arcitura Naming Richardson Naming Microsoft Naming
Database per service Dedicated Microservice Database Database per service NA
Shared Database Shared Isolated Database Shared Database NA
Materialized View Pre-Defined Data View NA Materialized View
Sharding NA NA Sharding
Event Sourcing Appended Events Event Sourcing Event Sourcing
3. Data Management Patterns (5 Patterns)
6. 4. Communication Patterns (17 Patterns)
Unified Pattern Name Arcitura Naming Richardson Naming Microsoft Naming
API Composition Microservice Compositor API Composition Gateway Aggregation
Gateway Routing Autonomous Proxy Service
2
API Gateway
2
Gateway Routing
Gatekeeper Gatekeeper
Gateway Offloading Gateway Offloading
Domain Event Synchronized Cross-Instance Events
3
Domain Event NA
Competing Consumers Async Queuing
4
Messaging
5
Competing Consumers
Queue-Based Load Leveling Queue-Based Load Leveling
Pipes and Filters Pipes and Filters
Claim Check Claim Check
Priority Queue Priority Queue
Sequential Convoy Sequential Convoy
Async Request-Reply Async Request-Reply
Publisher/Subscriber Event-Driven Messaging Publisher/Subscriber
Canonical Protocol Canonical Protocol
6
Domain-specific Protocol NA
Scatter Gather Micro Scatter-Gather NA NA
Idempotent Capability Idempotent Capability
6
Idempotent Consumer NA
Anti-Corruption Layer NA Anti-Corruption Layer Anti-Corruption Layer
* Note 2: Gatekeeper, Gateway Routing and offloading are considered as detailed patterns under API Gateway
* Note 3: In Arcitura, it is limited to sync data between instances of the same microservice, while Richardson pattern is more generic
* Note 4: Competing Consumers, Queue-based load leveling, async request-reply, Pipes and filters, claim check, priority queue and sequential convoy are considered detailed
patterns under Async Queuing pattern. Async Queuing Pattern is inherited from SOA patterns
* Note 5: Async Queuing and Publisher/Subscriber are considered detailed patterns under Async Messaging pattern.
* Note 6: Inherited from SOA Patterns
7. Unified Pattern Name Arcitura Naming Richardson Naming Microsoft Naming
Transactional Outbox Atomic Event Processing
7
Transactional outbox NA
Transaction log tailing Transaction log tailing NA
Polling publisher Polling publisher NA
Compensating Transaction Compensating Service Transaction
8
Saga
9
Compensating Transaction
Scheduler Agent Supervisor Scheduler Agent Supervisor
* Note 7: Atomic Event Processing includes Transaction Outbox, Transaction Tailing
* Note 8: Compensating Service Transaction is inherited from SOA patterns
* Note 9: Compensating Transaction and Scheduler Agent Supervisor are detailed patterns under Saga/Compensating Service Transaction.
5. Transaction Management Patterns (5 Patterns)
8. Unified Pattern Name Arcitura Naming Richardson Naming Microsoft Naming
Service Component Test NA Service Component Test NA
Consumer-driven contract test NA Consumer-driven contract test NA
Consumer-side contract test NA Consumer-side contract test NA
6. Testing Patterns (3 Patterns)
9. Unified Pattern Name Arcitura Naming Richardson Naming Microsoft Naming
Self-Contained Service Microservices Deployment Self-Contained Service Deployment stamps
Containerization Containerization Service deployment platform NA
Multiple Service Instances per host Single Node Multi-Containers Multiple service instances per host Compute Resource Consolidation
Serverless Deployment Serverless Microservice
Deployment
Serverless deployment NA
Service instance per host Microservice Isolation Levels
10
Service instance per host NA
Service instance per VM Service instance per VM NA
Service instance per Container Service instance per Container NA
Isolation Control Multi-Container Isolation Control NA NA
Rich Container Rich Container NA NA
Logical Pod Container Logical Pod Container NA NA
Sidecar Container sidecar NA Sidecar
Ambassador Microservice Ambassador NA Ambassador
Log Deployments and changes NA Log deployments and changes NA
7. Deployment Patterns (13 Patterns)
* Note 10: Service instance per host, per VM and per Container are considered as detailed patterns under Isolation Levels pattern
10. Unified Pattern Name Arcitura Naming Richardson Naming Microsoft Naming
Service Registry Metadata Centralization
11
Service registry NA
Self Registration Microservice Instance
Registration
12
Self Registration NA
3rd Party Registration 3rd Party Registration NA
Client-side discovery NA Client-side discovery NA
Server-side discovery NA Server-side discovery NA
8. Service Discovery Patterns (5 Patterns)
* Note 11: Metadata Centralization pattern is inherited from SOA patterns
* Note 12: Self-Registration and 3rd Party Registration are considered as detailed patterns under Microservice Instance Registration pattern
11. Unified Pattern Name Arcitura Naming Richardson Naming Microsoft Naming
Dynamic Scalability Dynamic Scalability NA NA
Service Load Balancing Service Load Balancing NA NA
Container Chain Container Chain NA NA
Leader Election Leader Node Election NA Leader Election
Circuit Breaker NA Circuit Breaker Circuit Breaker
Bulkhead NA NA Bulkhead
Cache-Aside NA NA Cache-Aside
Geodes NA NA Geodes
Retry NA NA Retry
Index Table NA NA Index Table
Throttling NA NA Throttling
9. Performance & Reliability Patterns (11 Patterns)
12. Unified Pattern Name Arcitura Naming Richardson Naming Microsoft Naming
Access Token Brokered Authentication
13
Access Token Valet Key
Federated Identity NA Federated Identity
10. Security Patterns (2 Patterns)
13. Brokered Authentication pattern covers Access Token pattern and Federated Identity. Brokered Authentication is inherited from SOA Patterns
13. Unified Pattern Name Arcitura Naming Richardson Naming Microsoft Naming
Distributed tracing Distributed Diagnostics Distributed tracing NA
Log aggregation Log Aggregator Log aggregation NA
Application metrics NA Application metrics NA
Audit logging NA Audit logging NA
Exception tracking NA Exception tracking NA
Health check API NA Health check API Health Endpoint Monitoring
11. Observability Patterns (6 Patterns)
14. Unified Pattern Name Arcitura Naming Richardson Naming Microsoft Naming
Server-side page fragment
Composition
NA Server-side page fragment
Composition
NA
Client-side UI Composition NA Client-side UI Composition NA
Backend for Frontend NA Backend for front-end Backends for Frontends
12. UI Patterns (3 Patterns)