Architecture Style: Pipeline #
Alternative names: Pipes and filters
Description #
Known as the underlying principle behind Unix terminal shell languages, those who dabble in functional programming will also see parallel’s. MapReduce is also a popular concept following this style. An entire process is built up from pipes and filters to deliver a certain functionality.
The power of composition is key in this architectural style.
Pipes & Filters #
- Pipes: Communication channel between filters. Usually unidirectional and point-to-point. Any type of data can be passed on, but small parts are favoured for high performance.
- Filters: Self-contained, independent, generally stateless pieces of code that perform a single task (responsibility). A composition of the logic should be done by a sequence of filters. There are 4 types:
- Producer: Starting point of a process. (AKA the “source”)
- Transformer: Takes input and transforms the input from the upstream pipe in some way and forwards it to the downstream pipe.
- A map in functional programming.
- Tester: Takes input from the upstream pipe and tests certain criteria (e.g. business logic), optionally producing output on the downstream pipe.
- A reduce in functional programming.
- Consumer: End of the process pipeline. The final result can be persisted or displayed.
When To Use #
- When there is one-way data processing.
- For data pipelines or event pipelines such as ETL (Extract, Transform, and Load) for data warehousing and analytics.
- Orchestration of processes.
When NOT To Use #
By default don’t use it, unless the “reasons to use” are clearly met.
Considerations #
This is still a monolithic style, so it comes with all the flaws of monolithic architectures.
Characteristics #
Characteristic | Rating |
---|---|
Partitioning Type | Technical |
Number of quanta | 1 |
Deployability | ⭐⭐ |
Elasticity | ⭐ |
Evolutionary | ⭐⭐⭐ |
Fault Tolerance | ⭐ |
Modularity | ⭐⭐⭐ |
Overall cost | ⭐⭐⭐⭐⭐ |
Performance | ⭐⭐ |
Reliability | ⭐⭐⭐ |
Scalability | ⭐ |
Simplicity | ⭐⭐⭐⭐⭐ |
Testability | ⭐⭐⭐ |