Pipes and Filters
Decomposing processing into independent steps connected by channels, each transforming its input and passing it on.
Each filter does one transformation and knows nothing about its neighbours, so steps can be reordered, reused, replaced or scaled independently. Unix pipelines are the canonical example, and so is every ETL pipeline, every media transcoding chain, and most stream-processing topologies.
Where it fits well: throughput-oriented processing with a clear linear flow, where steps have genuinely different resource profiles and you want to scale the expensive one on its own.
Where it goes wrong: when steps need shared context, which forces you to thread state through every filter or read it from a side channel, at which point the independence is fictional. Also watch per-stage error semantics — a failure in stage four must have a defined answer for the work already done in stages one to three, and "the message is lost" is a common accidental answer.