One of the fundamental styles in software architecture that appears again and again is the Pipeline architecture (also known as the pipes and filters architecture). As soon as developers and architectures decided to split functionality into discrete parts, this pattern surely followed shortly after. Most developers know this architecture as this underlying principle behind Unix terminal shell languages such as Bash and zsh.
Developers in many functional programming languages will also see parallels between language constructs and elements of this architecture. In fact, many tools that utilize the Map/Reduce programming model follow this basic topology. While these examples show a low-level implementation of the pipeline architecture style, it can also be used for higher-level business applications as well.
The topology of the pipeline architecture consists of pipes and filters, illustrated in Figure 11-1.
Figure 11-1 illustrates that the two components of this architecture (pipes and filters) coordinate in a specific fashion, with pipes forming one-way communication between filters, usually in a point-to-point fashion.
Pipes in this architecture form the communication channel between filters. Each pipe is typically uni-directional and point-to-point (rather than broadcast) ...