290 likes | 514 Views
POSA. Pipes and Filters Architecture Pattern. 재사용성 및 유연성 (flexibility). 성능과 재사용성에 대한 trade off 발생 리팩토링 : 겉으로 보이는 동작을 바꾸지 않고 , 이해하거나 수정하기 쉽게 소프트웨어의 내부 구조를 바꾸는 행동 리펙토링의 필요한 경우 과도한 설계 미진한 설계 패턴의 남용. 패턴의 구성. 개략. 개략 ( 계속 ). 병렬 프로세싱은 필터가 데이터를 증분적 (incremental) 으로 처리 가능해야 함 .
E N D
POSA Pipes and Filters Architecture Pattern
재사용성 및 유연성(flexibility) • 성능과 재사용성에 대한 trade off 발생 • 리팩토링: 겉으로 보이는 동작을 바꾸지 않고, 이해하거나 수정하기 쉽게 소프트웨어의 내부 구조를 바꾸는 행동 • 리펙토링의 필요한 경우 • 과도한 설계 • 미진한 설계 • 패턴의 남용
개략(계속) • 병렬 프로세싱은 필터가 데이터를 증분적(incremental)으로 처리 가능해야 함. • 증분적(incremental) 처리 : 출력을 산출하기 위해 들어온 모든 입력을 한꺼번에 처리하는 것이 아니라 입력이 일정량 들어오는 대로 출력을 바로바로 산출하는 방식 • 낮은 레이턴시(latency), 병력 프로세싱을가능하게함 • 레이턴시(latency) : 네트워크에 있는 한 신호가 임의의 다른 지점으로 이동하는 데 소요되는 시간
1. 정황(context) • 데이터 스트림 처리
4. 해법(solution) • 시스템 태스크를 몇 개의 순차적 프로세싱 단계들로 구분하고 각 단계들은 해당 시스템 내부를 오가는 데이터 흐름에 의해 연결 • 각 프로세싱 단계는 필터 컴포넌트에 의해 구현 • 필터는 증분적으로 데이터를 처리해 전달함으로써 낮은 레이턴시와 병렬 프로세싱을 가능하게 함 • 인접한 프로세싱 단계들 간의 데이터 흐름은 파이프에 의해 구현 • 능동 필터 사용을 위한 파이프를 동기화
8. 예제 심화(example resolved)Mocha 컴파일러 • 심볼 테이블을 통해 전역 상태를 공유 • 각각의 필터 사이의 파이프 연결을 단순 함수 호출로 구현
10. 용례(known use) • 유닉스 • CMS 파이프라인 : IBM 메인프레임의 운영체제를 확장 • LASSPTools : 수치해석과 그래픽을 지원하는 툴세트
11. 결과(consequence)장점 • 중간 파일을 사용 가능 • 파이프를 사용하지 않아도 됨 • 파일 저장 디렉터리가 어질러질 가능성이 많음 • 시스템을 실행할 때마다 프로세싱 단계를 설정해야 할 경우 오류 발생 • 증분적 처리 및 병렬 처리 할 수 없음 • 필터 교환의 유연성 • 필터에는 프로세싱 파이프라인 내에서 필터를 쉽게 교환할 수 있도록 인터페이스 구비 • 증분적 처리로 런타임에 필터 교환할 수 없음
11. 결과(consequence)장점 • 재조합의 유연성 • 유연하게 설계되어 필터를 재정렬하거나 새 필터를 추가시켜 새로운 프로세싱 파이프라인을 생성할 수 있다. • 필터의 재사용성 • 능동 필터로 구현할 경우 재사용성이 좋다 • 기반 플랫폼과 셰을 사용할 경우 파이프라인의 엔드유저 환경을 쉽게 만들 수 있다
11. 결과(consequence)장점 • 파이프라인 프로토타입 제작 즉시성 • 기존 필터로부터 데이터 프로세싱 시스템을 쉽게 프로토타입으로 만들 수 있다 • 병렬 프로세싱으로 인한 효율성 • 멀티프로세서 시스템이나 네트워크에서 병렬로 능동 필터 컴포넌트를 개시하는 것이 가능
11. 결과(consequence)단점 • 상태 정보 공유시 비용이 많이 들며 유연성이 저하됨 • 프로세싱 단계에서 상당한 크기의 전역 데이터를 공유해야 할 경우, 효율성이 떨어진다 • 병렬 프로세싱의 효율성이 없을 수 있음 • 필터들 사이로 데이터를 전송할 때 드는 비용은 필터 하나로 계산을 실행하는 비용보다 높다 • 증분적 처리가 안될 경우(sort 또는 코드가 좋지 않을 경우) • 스레드들이나 프로세스들 간의 컨텍스트 전환 작업은 단일 프로세서 머신에서 일반적으로 비용이 많이 드는 연산이다 • 파이프를 통해 필터를 동기화하기 위해서는 종종 필터를 멈추고 시작해야 하는 상황이 벌어질 수 있다
11. 결과(consequence)단점 • 데이터 변환에 과부하 발생 • 유연성 확보를 위해 단 하나의 데이터 타입을 사용하면 데이터 변환에 지나친 부하가 걸리게 된다. • 오류 핸들링을 구현 어려움 • 최소한 오류 기록에 대한 일반적인 전략을 정의해야 한다 • 구체적인 오류 복구나 오류 핸들링 전략은 해결해야만 하는 태스크가 무엇이냐에 좌우된다. • 업무에 민감하고 중요한 시스템일 경우 Layer 패턴을 사용한다