Pipelines help split your architecture into distinct components. They help you think about how things are going to communicate. You can use the correct tool for the job, as all you need to do is implement the correct interface at the edges. Finally, they lead to a ‘tell, don’t ask’ model which makes issues easier to debug.
By designing your architecture as a pipeline, you decouple all of your components and make sure that each part has a very specific responsibility. If you ever want to replace one of the parts in your pipeline, just make sure that the new implementation adheres to the contract that it’s supposed to at both ends and things should just continue to work.
This talk will look at how to start putting together a pipeline architecture and how to test them, as well as looking at a few case studies of how existing systems can be refactored to behave as a pipeline.