Pipes and Filters 패턴
1. 개요
파이프 앤 필터(Pipes and Filters) 패턴은 소프트웨어 아키텍처 패턴 중 하나로, 복잡한 처리 과정을 독립적인 처리 단위(필터)와 이들을 연결하는 데이터 통로(파이프)로 분해하여 구성하는 방식이다. 이 패턴의 목표는 시스템의 모듈성, 재사용성, 유연성을 극대화하는 것이다.
2. 구성 요소

파이프 앤 필터 패턴은 두 가지 핵심 요소로 구성된다.
가. 필터 (Filters)
필터는 입력 데이터를 받아 정해진 변환 또는 처리를 수행한 후, 결과를 출력으로 내보내는 독립적인 처리 모듈이다.
- 특징:
- 각 필터는 독립적이며, 이전 필터의 존재 여부나 다음 필터의 처리 방식을 알지 못한다 (독립성).
- 하나의 필터는 단일 책임을 가지며, 데이터의 변환, 필터링, 보강 등 특정 작업을 수행한다.
- 처리 방식에 따라 Active Filter (데이터를 자체적으로 읽고 씀)와 Passive Filter (파이프에 의해 데이터를 읽고 쓰여짐)로 나뉠 수 있다.
나. 파이프 (Pipes)
파이프는 필터 간에 데이터를 전송하는 버퍼링된 데이터 통로이며, 파이프는 데이터의 흐름을 관리하고 두 필터를 연결하는 역할을 수행한다.
- 특징:
- 파이프는 필터 간의 단방향 데이터 흐름을 지원하는 경우가 일반적이다.
- 데이터를 일시적으로 저장하는 버퍼 역할을 수행하여, 필터들이 서로 다른 속도로 데이터를 처리할 수 있도록 한다 (비동기성).
- 데이터 포맷의 일관성을 유지하는 데 중요한 역할을 수행한다.
3. 장점과 단점
| 구분 | 내용 | |
| 장점 | 재사용성 및 모듈성 | 필터가 독립적인 기능 단위로 설계 다른 시스템이나 파이프라인에서 쉽게 재사용될 수 있으며, 시스템 전체의 모듈성이 높음 |
| 유연성 및 확장성 | 기존 필터들을 조합하거나 새로운 필터를 추가함으로써, 전체 파이프라인의 기능을 쉽게 변경하고 확장 가능 |
|
| 테스트 용이성 | 각 필터를 개별적으로 테스트할 수 있어 시스템의 테스트와 디버깅이 단순 | |
| 스트리밍 처리 적합 | 대용량 데이터의 파이프라인 처리에 적절 | |
| 단점 | 성능 오버헤드 | 필터 간 데이터 전송을 위해 파이프를 통해 데이터를 일관된 형식(예: 텍스트 스트림)으로 변환해야 하므로, 이 과정에서 데이터 직렬화/역직렬화 오버헤드 발생 가능 |
| 복잡성 | 파이프라인을 구성하기 위한 공통 데이터 포맷을 정의하는 것이 복잡 | |
| 단방향성 제약 | 일반적으로 단방향 흐름만 지원하므로, 양방향 통신이나 상호 작용이 필요한 시스템에는 부적합 | |
4. 활용 분야
파이프 앤 필터 패턴은 데이터의 순차적인 변환이 필요한 다양한 분야에서 효과적으로 사용됩니다.
- 유닉스/리눅스 쉘 명령: 가장 고전적인 예시로, | (파이프)를 사용하여 여러 명령(필터)의 출력을 다음 명령의 입력으로 전달 (예: ls | grep .txt | sort).
- 컴파일러 디자인: 소스 코드 분석, 구문 분석, 최적화, 코드 생성 등 여러 단계가 파이프라인 형태로 순차적으로 연결.
- 스트리밍 데이터 처리: ETL(Extract, Transform, Load) 파이프라인, 로그 분석 시스템, 실시간 데이터 스트림 처리 등에서 데이터를 단계별로 처리하고 정제하는 데 사용.
5. 구현 고려사항
- Stateless 필터 우선: 가능하면 필터를 Stateless 로 설계하여 병렬화·재시도에 유리하게 함.
- 데이터 계약(스키마) 명시: 각 파이프 연결부의 입력/출력 스키마를 명확히 정의.
- 백프레셔(Backpressure) 설계: 소비 속도가 느릴 때 생산 속도 제어 메커니즘 필요.
- 배치 vs 스트리밍 결정: 처리 지연 허용도에 따라 배치(대량 처리) 또는 스트리밍(실시간) 선택.
- 보안·인증·데이터 프라이버시: 파이프를 통한 민감정보 전송 시 암호화·접근통제 적용.
'IT Tech.' 카테고리의 다른 글
| (소프트웨어공학) 스캐터 개더(Scatter Gather) 패턴 (0) | 2025.11.18 |
|---|---|
| (소프트웨어공학) 실행 오케스트레이터 패턴 (0) | 2025.11.18 |
| (보안) OWASP ASVS 개요 (1) | 2025.11.17 |
| (보안) XSS와 CSRF (0) | 2025.11.17 |
| (보안) 클라우드본, 클라우드재킹 공격 (0) | 2025.11.05 |