패턴지향 아키텍처 개발

1 minute read

모든 결정은 나에 의해서.


패턴은 특정 설계 상황에서 반복적으로 발생하는 설계 문제를 제기하며 그 문제에 대한 해법을 제시한다.

  • 혼돈에서 질서로

고객사의 요구사항 수집 -> 명세서 작성 -> 시스템의 아키텍처 정의

여기에서 정의하게될 시스템 아키텍처에 대해서 각 패턴별로 정의가 필요하다.

Layers 패턴

애플리케이션을 구조화 하기 위해서 서브 태스크들을 그룹으로 묶어 분해한다. 이때 특정 추상 레벨에 있는 서브 태스크들끼리 묶어서 서브 태스크들을 각각의 그룹으로 분류한다.

예) 레이어 형태로 이루어진 아키텍처 중 가장 잘 알려진 예제는 네트워크 프로토콜임.

  • OSI 7 계층 모델

  • TCP/IP 인터넷 프로토콜

TCP는 TELNET이나 FTP와 같은 다양한 분산 어플리케이션에서 그대로 사용될 수 있다.

문제

하위 레벨과 상위 레벨 이슈가 서로 혼재해 있다는 점이 주된 특징인 시스템을 설계하고 있다고 해보자. 이대 상위 레벨 오퍼레이션은 하위 레벨 오퍼레이션에 의존하고 있다. 시스템의 몇몇 부분은 파일로부터 비트를 읽어들이거나 선으로부터 전자 신호를 읽어 들여서 하드웨어 트랩, 센서입력과 같은 하위레벨의 이슈를 처리한다.
대체로 이런 시스템의 경우, 레이어 들에 따라 수직적으로 기능이 나뉘어 있을 뿐만 아니라 수평적으로도 오퍼레이션들이 동일한 추상 레벨이 있으면서도 서로 독립적인 경우가 이에 해당한다.

Pipe And Filter 패턴

데이터 스트림을 처리하는 시스템 구조를 제공한다. 각 프로세싱 단계는 필터 컴포넌트로 캡술화한다. 데이터는 파이프를 통해서 인접한 필터들 간에 전달된다.

BlackBoard 패턴

명확히 정의된 해법 전략이 아직 존재하지 않는 도메인에서 문제를 해결하는데 유용하다. 이 패턴은 부분적인 해법 혹은 대략적인 해법을 수립하기 위해 몇가지 특수한 서브 시스템들의 지식을 조합한다.


  • 분산 시스템
    • Broker 패턴
    • Microkernel 패턴

  • 상호작용 시스템
    • Model View Controller 패턴
    • Presentation Abstraction Control 패턴

  • 적응 시스템
    • Reflection 패턴
    • Mircokernel 패턴

Pipes and Filters 패턴

Pipes and Filters 아키텍처 패턴은 시스템의 태스크를 몇 개의 순차적 프로세싱 단계들로 구분한다. 이 단계들은 해당 시스템 내부를 오가는 데이터 흐름에 의해 연결된다. 그러므로 어떤 단계의 필터 컴포넌트에 의해 구현된다. 필터는 증분적으로 데이터를 처리해 전달한다. 이렇게 해야 낮은 레이턴시를 얻을 수 있으며 병렬 프로세싱이 실제로 가능하게 된다. 시스템에 들어오는 입력은 텍스트 파일과 같은 데이터 소스에 의해 제공된다. 출력은 파일, 터미널, 애니메이션 프로그램과 같은 데이터 싱크로 전달된다. 데이터 소스, 필터, 데이터 싱크는 순서대로 각각 파이프로 연결되어 있다. 각 파이프는 인접한 프로세싱 단계들 간의 데이터 흐름을 처리한다. 파이프로 연결된 일련의 필터들을 프로세싱 파이프라인이라고 한다.

  • 필터
  • 데이터 소스
  • 데이터 싱크