정수기를 생각해보면
어딘가 수원지에서 시작한 물이
파이프를 통해 흘러오며 여러 필터를 거쳐 여과되고
결과적으로 정수된 깨끗한 물이 된다.
파이프 - 필터 패턴은 이것과 똑같다.
다만 물 대신 데이터가 흐른다.
필터는 여기서 고립된 소프트웨어 컴포넌트를 의미한다.
고립된 컴포넌트라는 의미는, 다른 필터와 무관하다는 뜻이다.
수원지는 데이터 소스, 정수된 물(데이터)의 최종 도착지는 데이터 싱크라고 한다.
데이터 소스는 백엔드 등 서비스일 수 있으며
데이터 싱크는 데이터베이스, 분산 파일 시스템 등 일 수 있다.
이 패턴에서 유의할 점은, 모든 데이터가 파이프를 통해서만 흘러야 하는 것은 아니다 라는 점이다.
파이프-필터 패턴은 매우 유명하고 다양한 곳에서 쓰이지만, 보통 특정 유형의 이벤트나 입력 요청을 트리거로 받는 간단한 어플리케이션에서 유용하다.
대표적으로는 영상 등의 데이터 스트림 처리를 할 때 자주 쓰인다고 한다.
이러한 파이프-필터 패턴의 장점은 다음과 같다.
물론 아키텍쳐에 은탄환은 없다. 사용 시 유의 사항들이 존재한다.