파이프 필터 아키텍처

IT 위키

파이프 필터 아키텍처(Pipe and Filter Architecture)는 데이터를 여러 처리 단계(Filter)로 나누어 순차적으로 가공하는 소프트웨어 아키텍처 패턴이다. 각 처리 단계는 독립적으로 동작하며, 이전 단계의 출력을 다음 단계의 입력으로 전달한다.

파이프 필터 아키텍처는 복잡한 데이터 처리 과정을 여러 개의 독립적인 처리 단계로 분리하는 구조이다.

각 단계는 특정 기능만 수행하며, 처리 결과를 다음 단계로 전달한다. 이때 데이터 전달 경로를 파이프(Pipe), 데이터를 처리하는 모듈을 필터(Filter)라고 한다.

UNIX 운영체제의 파이프(pipe) 개념이 대표적인 예시이다.

예:

cat file.txt | grep hello | sort

위 예시에서:

  • cat
데이터 읽기
  • grep
문자열 필터링
  • sort
정렬 수행

각 명령은 독립적으로 동작하면서 데이터를 순차적으로 처리한다.

구성 요소

[편집 | 원본 편집]

필터(Filter)

[편집 | 원본 편집]

필터는 데이터를 입력받아 특정 작업을 수행한 뒤 결과를 출력하는 처리 모듈이다.

특징:

  • 독립적으로 동작
  • 입력과 출력 존재
  • 내부 상태 의존성이 낮음
  • 특정 기능만 수행

예:

  • 데이터 변환
  • 압축
  • 정렬
  • 암호화
  • 로그 분석

파이프(Pipe)

[편집 | 원본 편집]

파이프는 필터 간 데이터를 전달하는 통로이다.

특징:

  • 필터 간 결합도 감소
  • 데이터 흐름 연결
  • 스트림 형태 전달 가능

동작 방식

[편집 | 원본 편집]

파이프 필터 구조는 일반적으로 다음 순서로 동작한다.

  1. 입력 데이터 생성
  2. 첫 번째 필터에서 처리
  3. 파이프를 통해 다음 필터로 전달
  4. 다음 필터에서 추가 처리
  5. 최종 결과 출력

각 필터는 이전 필터의 내부 동작을 알 필요 없이 입력과 출력만 처리한다.

  • 데이터 흐름 중심 구조
  • 기능 단위 분리 가능
  • 모듈 독립성 높음
  • 재사용성 우수
  • 순차 처리 구조
  • 스트림 처리에 적합

높은 재사용성

[편집 | 원본 편집]

필터를 독립적인 모듈로 재사용할 수 있다.

유지보수 용이

[편집 | 원본 편집]

특정 필터만 수정하거나 교체할 수 있다.

낮은 결합도

[편집 | 원본 편집]

필터 간 직접 의존성이 낮다.

확장성

[편집 | 원본 편집]

새로운 필터를 추가하여 기능 확장이 가능하다.

병렬 처리 가능성

[편집 | 원본 편집]

일부 구조에서는 필터를 병렬적으로 실행할 수 있다.

데이터 변환 비용

[편집 | 원본 편집]

각 필터 간 데이터 전달 과정에서 오버헤드가 발생할 수 있다.

실시간 처리 한계

[편집 | 원본 편집]

필터가 많아질수록 지연이 증가할 수 있다.

복잡한 상태 관리 어려움

[편집 | 원본 편집]

상태 공유가 필요한 시스템에는 부적합할 수 있다.

오류 처리 복잡성

[편집 | 원본 편집]

중간 필터 장애 시 전체 흐름에 영향을 줄 수 있다.

활용 분야

[편집 | 원본 편집]

UNIX Shell

[편집 | 원본 편집]

가장 대표적인 파이프 필터 구조 사례이다.

예:

ps -ef | grep nginx | sort

컴파일러

[편집 | 원본 편집]

컴파일러는 다음과 같은 단계로 구성될 수 있다.

  • 어휘 분석
  • 구문 분석
  • 의미 분석
  • 코드 생성

각 단계가 필터 역할을 수행한다.

데이터 처리 시스템

[편집 | 원본 편집]

로그 분석, ETL, 데이터 변환 등에 사용된다.

멀티미디어 처리

[편집 | 원본 편집]

영상 및 오디오 처리 파이프라인에 활용된다.

스트림 처리

[편집 | 원본 편집]

실시간 데이터 스트림 처리 시스템에서 사용된다.

MVC와의 차이

[편집 | 원본 편집]
구분 파이프 필터 아키텍처 MVC
중심 개념 데이터 흐름 역할 분리
처리 방식 순차 처리 사용자 인터페이스 중심
주요 목적 데이터 가공 UI와 로직 분리
대표 분야 데이터 처리, 컴파일러 웹 애플리케이션

이벤트 기반 아키텍처와의 차이

[편집 | 원본 편집]
구분 파이프 필터 이벤트 기반 아키텍처
흐름 구조 순차 데이터 흐름 이벤트 중심
처리 방식 단계별 처리 비동기 이벤트 처리
연결 방식 파이프 연결 이벤트 전달
주요 활용 데이터 처리 GUI, 메시징 시스템

대표 사례

[편집 | 원본 편집]
  • UNIX Shell Pipeline
  • 컴파일러 구조
  • ETL 시스템
  • 로그 처리 시스템
  • 영상 처리 파이프라인
  • 스트림 분석 시스템

시험 포인트

[편집 | 원본 편집]
  • 파이프 필터 아키텍처는 데이터를 단계별로 처리하는 구조이다.
  • 필터는 데이터를 처리하는 독립 모듈이다.
  • 파이프는 필터 간 데이터를 전달한다.
  • UNIX 파이프 명령은 대표적인 예시이다.
  • 필터 간 결합도가 낮다.
  • 데이터 흐름 중심 구조이다.
  • 컴파일러 구조에서 자주 사용된다.

같이 보기

[편집 | 원본 편집]