| Distributed System & Microservices |
| 1 |
SAGA Pattern |
The SAGA pattern is a failure management pattern for distributed transactions. It manages data consistency across mic... |
Distributed |
E-commerce Order Processing: Order Service -> Payment Service -> Shipping Service. If Shipping fails, the system executes compensating transactions to refund payment and cancel the order. |
| 2 |
Two-Phase Commit (2PC) |
Two-Phase Commit (2PC) is a standardized protocol that coordinates all the processes that participate in a distribute... |
Distributed |
Transferring funds between two different bank databases (Shards). Both shards must confirm they are ready to commit before the transaction is finalized. |
| 3 |
Three-Phase Commit |
Three-Phase Commit (3PC) is an atomic commitment protocol for distributed systems. It is an extension of the two-phas... |
Distributed |
A distributed database system where the coordinator might crash. 3PC ensures participants don't get stuck indefinitely holding locks. |
| 4 |
Outbox Pattern |
The Outbox pattern ensures that a database update and sending of a message to a message broker happen atomically. Ins... |
Distributed |
User Signup: The system inserts the User into the database and a 'WelcomeEmail' event into an 'Outbox' table in the same transaction. A background worker polls the table and sends the email. |
| 5 |
Event Sourcing |
Event Sourcing stores the state of a business entity as a sequence of state-changing events. Whenever the state of a ... |
Distributed |
A Bank Account. Instead of storing 'Balance: 100', we store [Deposited 50, Withdrew 10, Deposited 60]. The balance is calculated on the fly. |
| 6 |
Idempotency Keys |
An idempotency key is a unique token that identifies a request. If a client sends the same request with the same idem... |
Distributed |
Stripe API: If a timeout occurs during a charge request, the client retries with the same Idempotency-Key. Stripe checks the key and returns the original successful response instead of charging again. |
| 7 |
Compensating Transactions |
A compensating transaction is a transaction that undoes the effects of a series of steps that have already been commi... |
Distributed |
Booking a Flight and Hotel. If the Hotel booking fails, a Compensating Transaction is triggered to Cancel the Flight booking which was already committed. |
| 8 |
Retries with Backoff |
The Retry pattern enables an application to handle transient failures when it tries to connect to a service or networ... |
Distributed |
Calling an external Weather API. If it returns 503, wait 1s and retry. If fail, wait 2s, then 4s, then give up. |
| 9 |
Circuit Breaker Pattern |
The Circuit Breaker pattern prevents an application from repeatedly trying to execute an operation that's likely to f... |
Distributed |
If the 'Recommendation Service' is down, the 'Frontend' stops calling it (Circuit Open) and just shows popular products from a cache instead of hanging for 30 seconds. |
| 10 |
Bulkhead Pattern |
The Bulkhead pattern isolates elements of an application into pools so that if one fails, the others will continue to... |
Distributed |
A service has two thread pools: one for processing User Requests and one for Background Reports. If reports are slow and use up all threads, users can still log in. |
| 11 |
Timeout Pattern |
The Timeout pattern limits the amount of time an application waits for a response from a service. If the response is ... |
Distributed |
An HTTP client is configured with a 2-second timeout. If the server doesn't respond in 2 seconds, the client throws an error and frees up the connection. |
| 12 |
Request/Response |
This is the most common synchronous communication pattern where a client sends a request to a service and waits for a... |
Communication |
A browser sending an HTTP GET request to a web server for an HTML page. |
| 13 |
Event-Driven Architecture (EDA) |
A software architecture paradigm promoting the production, detection, consumption of, and reaction to events. Systems... |
Communication |
When a user updates their profile, a 'ProfileUpdated' event is emitted. The Search Service, Email Service, and Analytics Service all independently react to this event. |
| 14 |
Publisher–Subscriber |
A messaging pattern where senders of messages, called publishers, do not program the messages to be sent directly to ... |
Communication |
A YouTube channel uploads a video (Publish). Millions of subscribers get a notification (Subscribe). |
| 15 |
Message Queues (MQ) |
Message queues provide an asynchronous communications protocol, meaning that the sender and receiver of the message d... |
Communication |
An Image Upload service pushes a job to a RabbitMQ queue. A separate Worker service pulls the job and resizes the image. |
| 16 |
API Gateway |
An API Gateway is a server that acts as an API front-end, receiving API requests, enforcing throttling and security p... |
Communication |
Mobile App sends all requests to 'api.company.com'. The Gateway routes 'api/users' to User Service and 'api/orders' to Order Service. |
| 17 |
Sidecar Pattern |
Deploys components of an application into a separate process or container to provide isolation and encapsulation. Thi... |
Communication |
A Kubernetes Pod contains two containers: the Node.js API (Main) and Envopy Proxy (Sidecar). All network traffic flows through Envoy. |
| 18 |
Ambassador Pattern |
Creates a helper service that sends network requests on behalf of a client or consumer. It acts as an out-of-process ... |
Communication |
A legacy application needs to call a secure cloud API. An Ambassador proxy is installed on the localhost that handles the mTLS authentication, so the legacy app just calls localhost:8000. |
| 19 |
Strangler Fig Pattern |
A pattern for migrating a legacy system by gradually replacing specific functionalities with new applications and ser... |
Communication |
An old E-commerce monolith exists. You build a new 'Review Service'. The API Gateway routes '/reviews' to the new service, while everything else still goes to the Monolith. |
| 20 |
CQRS |
Command Query Responsibility Segregation (CQRS) is an architectural pattern that separates reading and writing into t... |
Data |
A social network details profile updates (Commands) to a Normalized SQL DB, while the Feed (Query) is read from a Denormalized NoSQL store for speed. |
| 21 |
Database per Microservice |
Each microservice's persistent data is private to that service and accessible only via its API. This ensures loose co... |
Data |
Order Service uses PostgreSQL. Catalog Service uses MongoDB. Recommendation Service uses Neo4j. They cannot access each other's DBs directly. |
| 22 |
Shared Database Pattern |
Multiple services access the same database. This is generally considered an anti-pattern in microservices but is comm... |
Data |
Order Service and Customer Service both read tables from the same Oracle instance. |
| 23 |
Sharded Database Pattern |
Database Sharding is a type of database partitioning that separates very large databases into smaller, faster, more e... |
Data |
A Global User Database is sharded by region: Users in US-East go to Shard A, Users in EU-West go to Shard B. |
| 24 |
Materialized Views |
A database object that contains the results of a query. It may be a local copy of data located remotely, or may be a ... |
Data |
Instead of joining 5 tables every time to show the 'Daily Sales Dashboard', a background job runs every hour and saves the result to a 'DailySales' table (view). |
| 25 |
Read Replicas |
Creating read-only copies of a database instance to scale out read-heavy workloads. |
Data |
A primary DB handles all INSERT/UPDATEs. Five Read Replicas handle all SELECT queries for the website. |
| 26 |
Distributed Cache |
A cache shared by multiple application servers, typically maintained as an external service. |
Data |
Redis or Memcached cluster used to store User Sessions and frequent Product Data, accessible by all instances of the web server. |
| 27 |
Cache-Aside |
The application code effectively maintains the cache. It attempts to read from cache; if miss, it reads from DB and w... |
Data |
App checks Redis for 'user:123'. If missing, fetches from MySQL, saves to Redis, and returns to user. |
| Event-Driven & Messaging |
| 28 |
Domain Events |
A Domain Event captures the memory of something interesting which affects the domain. It is strictly part of the doma... |
Event-Driven |
When a user changes their address, a 'UserAddressChanged' event is created, not just a database update. This allows other systems to react. |
| 29 |
Event Notification Pattern |
A system notifies other systems that a change has occurred, but does not provide the full state. The receiver must ca... |
Event-Driven |
A webhook sends 'Order #123 Updated'. The receiver then calls GET /orders/123 to see what changed. |
| 30 |
Event-Carried State Transfer |
The event itself contains all the data the consumer needs. The consumer doesn't need to contact the producer for more... |
Event-Driven |
The 'OrderCreated' event includes the full item list, shipping address, and total amount. The Shipping Service can generate a label without calling the Order API. |
| 31 |
Transactional Outbox Pattern |
See 'Outbox Pattern' in Distributed Systems. Uses a local transaction to ensure event reliability. |
Event-Driven |
Writing the event to a SQL table in the same transaction as the business entity. |
| 32 |
Polling Publisher |
A polling process periodically queries the database for new events (like in an Outbox) and publishes them to a messag... |
Event-Driven |
A Cron job runs every 1 second: SELECT * FROM outbox WHERE sent=false; publish(); UPDATE set sent=true; |
| 33 |
Competing Consumers |
Multiple consumers pull messages from the same channel to share the workload. The system ensures only one consumer pr... |
Event-Driven |
10 worker containers all listening to the 'ImageResize' queue. If 100 images are uploaded, the work is distributed across the 10 workers. |
| 34 |
Message Routing / Filtering |
The messaging system directs messages to specific queues based on content or metadata. |
Event-Driven |
A Topic Exchange routes log messages: 'error.*' goes to the Alert Queue, 'info.*' goes to the Audit Queue. |
| 35 |
Fan-out / Fan-in |
Fan-out broadcasts a message to multiple processors. Fan-in aggregates results from parallel executions. |
Event-Driven |
An Order is placed (Fan-out). Inventory, Email, and Fraud services process it in parallel. Once all 3 reply (Fan-in), the order is confirmed. |
| 36 |
Dead Letter Queue (DLQ) |
A service queue implementation to store messages that the messaging system cannot deliver to their destination or can... |
Event-Driven |
If a message fails to process 5 times, it is moved to the DLQ. DevOps can later inspect why it failed. |
| 37 |
Poison Message Pattern |
Handling a message that consistently causes a consumer to crash or fail. The solution is usually to detect this and m... |
Event-Driven |
A malformed JSON packet causes the parser to throw an unhandled exception. The consumer catches this, marks it 'Poison', and discards it. |
| GoF Patterns |
| 38 |
Singleton |
Ensures a class has only one instance and provides a global point of access to it. Often used for shared resources. |
Creational |
A 'Logger' class where every part of the app writes to the same log file via the same instance. |
| 39 |
Factory Method |
Defines an interface for creating an object, but let subclasses decide which class to instantiate. It defers instanti... |
Creational |
A 'Logistics' class handles delivery. 'RoadLogistics' creates a 'Truck', 'SeaLogistics' creates a 'Ship'. The client just calls 'createTransport()'. |
| 40 |
Abstract Factory |
Provides an interface for creating families of related or dependent objects without specifying their concrete classes. |
Creational |
A UI Factory creates Buttons and Checkboxes. The 'MacFactory' creates MacButton and MacCheckbox. The 'WinFactory' creates WinButton and WinCheckbox. |
| 41 |
Builder |
Separates the construction of a complex object from its representation so that the same construction process can crea... |
Creational |
A 'HouseBuilder'. You can call .setWalls(4), .setRoof('Shingle'), .addGarage().build(). You can use the same builder to make a different house. |
| 42 |
Prototype |
Creates new objects by copying an existing object, known as the prototype. |
Creational |
In a game, spawning 1000 'Goblin' enemies. Instead of running the initialization code 1000 times, you create one Goblin and clone it 999 times. |
| 43 |
Adapter |
Allows objects with incompatible interfaces to collaborate. It acts as a wrapper. |
Structural |
You have a 'StockData' XML service, but your analytics library needs JSON. You write an XMLtoJSONAdapter class. |
| 44 |
Bridge |
Splits a large class or a set of closely related classes into two separate hierarchies—abstraction and implementation... |
Structural |
A 'RemoteControl' (Abstraction) works with a 'TV' (Implementation). You can add new Remotes or new TVs without breaking each other. |
| 45 |
Composite |
Lets you compose objects into tree structures and then work with these structures as if they were individual objects. |
Structural |
A 'Folder' contains 'Files' and other 'Folders'. You can call 'getSize()' on a Folder, and it recursively calculates the size of everything inside. |
| 46 |
Decorator |
Lets you attach new behaviors to objects by placing these objects inside special wrapper objects that contain the beh... |
Structural |
A 'Coffee' object. You wrap it in 'MilkDecorator', then 'SugarDecorator'. The cost() method adds up existing cost + milk + sugar. |
| 47 |
Facade |
Provides a simplified interface to a library, a framework, or any other complex set of classes. |
Structural |
A 'SmartHome' facade has a method 'movieMode()'. Internally, it dims lights, turns on TV, closes blinds, and sets volume. |
| 48 |
Flyweight |
Lets you fit more objects into the available amount of RAM by sharing common parts of state between multiple objects ... |
Structural |
A Text Editor. Instead of storing font data for every letter 'A', it stores one 'Font object' for 'A' and 1000 pointers to it. |
| 49 |
Proxy |
Lets you provide a substitute or placeholder for another object. A proxy controls access to the original object. |
Structural |
A website displays a low-res placeholder image while the high-res image downloads in the background. |
| 50 |
Chain of Responsibility |
Lets you pass requests along a chain of handlers. Upon receiving a request, each handler decides either to process th... |
Behavioral |
Web Server Middleware: Authentication -> Logging -> Compression -> Router. Each step passes control to the next. |
| 51 |
Command |
Turns a request into a stand-alone object that contains all information about the request. |
Behavioral |
A text editor. 'Copy', 'Paste', 'Type' are all Command objects. You can put them in a stack to Undo them. |
| 52 |
Interpreter |
Given a language, defines a representation for its grammar along with an interpreter that uses the representation to ... |
Behavioral |
An app that calculates '5 + 10 * 2'. It parses the string into an expression tree and evaluates it. |
| 53 |
Iterator |
Lets you traverse elements of a collection without exposing its underlying representation (list, stack, tree, etc.). |
Behavioral |
The 'foreach' loop in most languages. It works on Arrays, Lists, and Trees identically. |
| 54 |
Mediator |
Lets you reduce chaotic dependencies between objects. The pattern restricts direct communications between the objects... |
Behavioral |
Air Traffic Control. Planes don't talk to each other; they talk to the Tower, which coordinates them. |
| 55 |
Memento |
Lets you save and restore the previous state of an object without revealing the details of its implementation. |
Behavioral |
A text editor saves a snapshot of the document state before every change. |
| 56 |
Observer |
Lets you define a subscription mechanism to notify multiple objects about any events that happen to the object they'r... |
Behavioral |
A Spreadsheet. If you change value in Cell A1, the Chart observing A1 automatically updates. |
| 57 |
State |
Lets an object alter its behavior when its internal state changes. It appears as if the object changed its class. |
Behavioral |
A Phone. If 'Unlocked', pressing buttons calls numbers. If 'Locked', pressing buttons turns on the screen. |
| 58 |
Strategy |
Lets you define a family of algorithms, put each of them into a separate class, and make their objects interchangeable. |
Behavioral |
A GPS App. You can switch routing strategy: 'Walking', 'Driving', or 'Public Transport'. The map logic remains the same. |
| 59 |
Template Method |
Defines the skeleton of an algorithm in the superclass but lets subclasses override specific steps of the algorithm w... |
Behavioral |
A Data Miner. Steps: openFile() -> extractData() -> userMethod() -> closeFile(). Subclasses only implement extractData(). |
| 60 |
Visitor |
Lets you separate algorithms from the objects on which they operate. |
Behavioral |
You have a graph of shapes. You write an 'XMLExportVisitor' that walks the graph and generates XML, without modifying the shape classes. |
| Architectural Patterns |
| 61 |
Monolithic Architecture |
A single tiered software application in which the user interface and data access code are combined into a single prog... |
Architecture |
A standard Ruby on Rails or Django app where everything is in one repo and deployed as one unit. |
| 62 |
Layered Architecture |
Organizes the system into horizontal layers, where each layer has a specific role (Presentation, Business, Persistenc... |
Architecture |
Presentation Layer -> Service Layer -> DAO Layer -> Database. |
| 63 |
Hexagonal Architecture |
Also known as Ports and Adapters. It allows an application to easier be tested in isolation from external devices lik... |
Architecture |
The Core logic is in the center. Database adapters and REST adapters plug into the Core. |
| 64 |
Clean Architecture |
A philosophy that separates the elements of a design into ring levels. The most important rule is that dependencies c... |
Architecture |
Entities (Center) -> Use Cases -> Adapters -> Frameworks (Outside). |
| 65 |
Onion Architecture |
Similar to Hexagonal/Clean. It relies on the Dependency Inversion Principle. The application core needs no dependenci... |
Architecture |
Core Domain -> Domain Services -> Application Services -> UI/Infra. |
| 66 |
Microservices Architecture |
An architectural style that structures an application as a collection of services that are highly maintainable, testa... |
Architecture |
Netflix: hundreds of small services talking to each other. |
| 67 |
Serverless Architecture |
A way to build and run applications and services without having to manage infrastructure. Your application is split i... |
Architecture |
AWS Lambda functions triggering on S3 uploads or API Gateway calls. |
| 68 |
Service-Oriented Architecture (SOA) |
A style where services are provided to the other components by application components, through a communication protoc... |
Architecture |
An Enterprise Service Bus (ESB) connecting a Billing System (Mainframe) to a Web Portal. |
| 69 |
Headless Architecture |
Decoupling the frontend (head) from the backend (body). The backend just serves data via API. |
Architecture |
Contentful (Headless CMS) serving content to a Website, a Mobile App, and a Smart Watch. |
| 70 |
MVC |
Model-View-Controller. Separates internal representation of information from the way information is presented to and ... |
UI Arch |
Spring MVC, Ruby on Rails. |
| 71 |
MVVM |
Model-View-ViewModel. Facilitates a separation of development of the graphical user interface. |
UI Arch |
React (View) + State (ViewModel). |
| 72 |
MVP |
Model-View-Presenter. Derivation of MVC, mostly used for building user interfaces. |
UI Arch |
Windows Forms applications. |
| 73 |
Flux |
Application architecture for building client-side web applications. It utilizes a unidirectional data flow. |
UI Arch |
Redux or Vuex state management. |
| 74 |
Redux |
A predictable state container for JavaScript apps. |
UI Arch |
Global Store with Actions and Reducers. |
| 75 |
Observer-Based UI |
UI updates automatically when underlying data changes. |
UI Arch |
RxJS Observables binding data to UI components. |
| Cloud & Deployment |
| 76 |
Blue–Green Deployment |
A technique that reduces downtime and risk by running two identical production environments called Blue and Green. |
Deployment |
Router points to Blue (v1). Deploy v2 to Green. Switch router to Green. |
| 77 |
Canary Deployment |
A pattern to roll out new features to only a small subset of users before rolling it out to the entire infrastructure. |
Deployment |
Route 5% of traffic to v2 pods. If no errors, increase to 100%. |
| 78 |
Rolling Updates |
Updating instances one by one or in batches, rather than all at once. |
Deployment |
Kubernetes Rolling Update: Replace Pod 1, then Pod 2, etc. |
| 79 |
Immutable Infrastructure |
Servers are never modified after they're deployed. If something needs to be updated, you replace the entire server/co... |
Deployment |
Docker containers. You don't patch a running container; you build a new image and deploy it. |
| 80 |
Infrastructure as Code |
Managing and provisioning computer data centers through machine-readable definition files, rather than physical hardw... |
Deployment |
Terraform scripts defining the AWS VPC and EC2 instances. |
| 81 |
Circuit Breaker |
See 'Circuit Breaker' in Distributed Systems. Prevents cascading failures. |
Reliability |
Hystrix. |
| 82 |
Retry Pattern |
See 'Retries with Backoff' in Distributed Systems. Handling transient failures. |
Reliability |
HTTP Retries. |
| 83 |
Fail-Fast |
A system that immediately reports at its interface any condition that is likely to indicate a failure. |
Reliability |
Checking for null arguments at the start of a function. |
| 84 |
Fallback Pattern |
Providing a backup plan or default value when a service fails. |
Reliability |
If the movie poster service is down, show a generic placeholder image. |
| 85 |
Graceful Degradation |
The ability of a computer, machine, electronic system or network to maintain limited functionality even when a large ... |
Reliability |
If the search index is down, show 'Recent Items' list instead of a 500 error. |
| 86 |
Rate Limiting |
Controlling the rate of traffic sent or received by a network interface controller. |
Reliability |
Allowing only 100 req/min per IP address. |
| 87 |
Bulkhead Pattern |
See 'Bulkhead' in Distributed Systems. Isolating resources. |
Reliability |
Thread pools. |
| 88 |
Sidecar |
See 'Sidecar' in Communication. Helper container. |
Container |
Envoy. |
| 89 |
Ambassador |
See 'Ambassador' in Communication. Proxy for client. |
Container |
Proxy sidecar. |
| 90 |
Adapter |
See 'Adapter' in GoF. Structural pattern adaptation. |
Container |
Legacy wrapper. |
| 91 |
Service Mesh |
A dedicated infrastructure layer for facilitating service-to-service communications between microservices, often usin... |
Container |
Istio managing mTLS and tracing between services. |
| High Availability & Scaling |
| 92 |
Horizontal Scaling |
Adding more machines to a resource pool (also known as scaling out). |
Scaling |
Adding more EC2 instances to an Auto Scaling Group. |
| 93 |
Vertical Scaling |
Adding more power (CPU, RAM) to an existing machine (also known as scaling up). |
Scaling |
Upgrading an AWS RDS instance from t3.micro to m5.large. |
| 94 |
Sharding |
A method of splitting and storing a single logical dataset in multiple databases. |
Scaling |
Splitting a User table into 10 servers based on UserID. |
| 95 |
Partitioning |
Dividing a logical design into several distinct physical units. |
Scaling |
Functional partitioning: putting Inventory and Orders on different servers. |
| 96 |
Leader–Follower |
Ideally suited for read-heavy workloads. One node (Leader) handles writes, others (Followers) replicate data and hand... |
Scaling |
Primary DB accepts writes, replicas serve read traffic. |
| 97 |
Active–Active |
A cluster of at least two nodes running the same kind of service simultaneously. |
Scaling |
Two Load Balancers in different zones serving traffic at the same time. |
| 98 |
Active–Passive |
One node is active, others are on standby waiting for a failure to take over. |
Scaling |
Primary server runs. Secondary server is off/idle until Primary fails. |
| 99 |
Distributed Cache |
See 'Distributed Cache' in Data Patterns. |
Scaling |
Redis. |
| Security Patterns |
| 100 |
Zero Trust Architecture |
A security concept centered on the belief that organizations should not automatically trust anything inside or outsid... |
Security |
Google BeyondCorp. Every request must be authenticated and authorized. |
| 101 |
Defense in Depth |
A layering tactic, conceived by the NSA as a comprehensive approach to information and electronic security. |
Security |
Firewall -> WAF -> App Auth -> Database Encryption. |
| 102 |
JWT Authentication |
JSON Web Token is an open standard that defines a compact and self-contained way for securely transmitting informatio... |
Security |
User logs in, gets a JWT. Sends JWT with every request. Server validates signature. |
| 103 |
Token Bucket |
An algorithm used in packet switched computer networks and telecommunications networks to check that data transmissio... |
Security |
API Gateway gives each user a bucket of 10 tokens. Each request takes 1. |
| 104 |
RBAC |
Role-based access control is a method of restricting network access based on the roles of individual users within an ... |
Security |
Admin role has all permissions. Viewer role can only generic GET requests. |
| 105 |
OAuth 2.0 |
OAuth 2.0 is the industry-standard protocol for authorization. |
Security |
Allowing a third-party print service to access your photos on Google Photos without giving them your password. |
| 106 |
API Key |
A code passed in by computer programs calling an application programming interface (API) to identify the calling prog... |
Security |
Google Maps API keys. |
| 107 |
Certificate Pinning |
Associating a host with their expected X.509 certificate or public key. |
Security |
App contains the hash of the backend's SSL cert and rejects any other certs. |