클라우드 컴퓨팅/SW 아키텍처

확장성 패턴 2 - 파이프-필터 패턴(Pipe And Filter Pattern)

우잉~ 2024. 12. 6. 15:58

파이프-필터 패턴은 이름에 걸맞게 일련의 파이프를 따라 여러 필터를 통과하여 목적지에 도달하는 아키텍처이다.

더러운 물이 필터를 따라 불순물이 걸러지면서 식수나 관개용수가 되는 것이라고 생각하면 된다.

 

컴퓨팅 시스템에서는 물을 데이터로 표현할 수 있다.

그리고 이 데이터를 처리하는 소프트웨어 컴포넌트를 필터라고 할 수 있다.

파이프-필터 패턴

데이터의 출처는 Data Source(데이터 소스)라고 부른다.

모든 처리 단계를 통과한 뒤 최종적으로 도착하는 목적지는 Data Sink(데이터 싱크)라고 부른다.

 

데이터 싱크는 내부 데이터베이스나 분산 파일 시스템이 될 수도 있고, 시스템의 이벤트를 리스닝하는 외부 서비스가 될 수도 있다.

데이터 소스는 사용자 요청을 수신하는 백엔드 서비스가 될 수도 있고, 서비스형 함수 요소와 같은 경량 서비스가 될 수도 있다.

 

여기서 필터를 연결하는 파이프 역할을 하는 것은 일반적으로 분산 대기열이나 메시지 브로커이다.

필터를 연결하는 파이프: 메시지 대기열

 

 

 

파이프-필터 패턴의 대표적인 사용 사례는 특정 유형의 이벤트 또는 입력 요청을 트리거로 사용하는 애플리케이션이다.

이벤트는 데이터를 데이터베이스에 저장할 수 있는 상태로 변경하기 위해 여러 단계에 걸쳐 처리해야 할 정보를 가지고 있다.

 

파이프-필터 패턴은 처리 파이프라인을 독립적으로 배포된 소프트웨어의 컴포넌트로 분할하여 각 태스크의 프로그래밍 언어나 CPU, 메모리, 하드웨어를 자유롭게 활용하여 실행할 수 있다.

그리고 각 처리 컴포넌트에 필요한 만큼 인스턴스의 수를 쉽게 조절할 수 있다.

파이프-필터 패턴은 굉장히 독립적이고 확장성이 좋다.

파이프-필터 패턴의 장점

 

 

 

파이프-필터 패턴은 사용자 활동에 대한 데이터 스트림을 처리하는 업무에 주로 활용된다.

사물 인터넷 산업에서는 종단 장치에서 수신 데이터를 처리하는 데 사용된다.

+ 동영상 스트리밍

 

[파이프-필터 아키텍처를 사용할 때의 고려 사항]

  • 세분화된 필터일수록 오버헤드와 복잡도가 증가하므로 주의해야 한다.
  • 모든 필터는 스테이트리스여아 하며, 태스크를 수행하는 데 필요한 정보를 충분히 입력받아야 한다.
  • 파이프라인 내의 모든 작업을 단일 트랜잭션으로 수행할 경우, 파이프-필터 아키텍처는 비효율적이다.