아키텍처 패턴은 특정 상황에서 소프트웨어에 문제가 발생했을 때 적용할 수 있는 전형적인 해결방식 또는 예제를 말합니다. 아키텍처 패턴의 장점은 시행착오를 줄여 개발시간을 단축시키고 고품질 소프트웨어를 생산할 수 있다는 것, 이해관계자들이 공통된 아키텍처를 공유하기 때문에 안정적인 개발이 가능하고 의사소통이 간편해 진다는 것입니다.
아키텍처 패턴의 종류에는 레이어 패턴, 클라이언트-서버 패턴, 파이프-필터 패턴, MVC패턴 등이 있습니다.
1) 레이어 패턴(Layerd pattern)
시스템을 계층으로 구분하여 구성하는 고전적인 방법으로, 하위 계층은 상위 계층에 대한 서비스 제공자가 되고, 상위 계층은 하위 계층의 클라이언트가 됩니다. 특정 계층만을 교체해 시스템을 개선하는 것이 가능하고 대표적으로는 OSI참조 모델이 있습니다.
2) 클라이언트-서버 패턴(Client-Server pattern)
하나의 서버 컴포넌트와 다수의 클라이언트 컴포넌트로 구성되어 있는 패턴으로, 서버는 클라이언트의 요청에 대비해 항상 대기 상태를 유지해야 하고, 서버와 클라이언트는 요청과 응답을 받기 위해 동기화되는 경우를 제외하고 서로 독립적입니다.
4) 파이프-필터 패턴(Pipe-Filter pattern)
데이터 스트림 절차의 각 단계를 필터 컴포넌트로 캡슐화하여 파이프를 통해 데이터를 전송하는 패턴입니다. 재사용성이 좋고, 추가가 쉬워 확장이 용이하고, 다양한 파이프라인을 구축하는 것이 가능하다는 장점이 있지만, 필터간 데이터 이동 시 데이터 변환으로 인한 오버헤드가 발생한다는 단점도 있습니다 대표적으로 UNIX의 쉘이 있습니다.
5) MVC 패턴
모델-뷰-컨트롤러 패턴은 서브시스템을 3개로 구조화한 패턴으로 대화형 어플리케이션에 주로 사용되는 패턴입니다.
6) 마스터-슬레이브 패턴
마스터 컴포넌트는 작업 분할 후 슬레이브 컴포넌트에서 처리된 결과물을 다시 돌려받는 방식으로 작업을 수행하는 패턴입니다. 마스터는 모든 작업의 주체이고, 슬레이브는 지시에 따라 작업을 수행하여 결과를 반환합니다. 장애 허용 시스템, 병렬 컴퓨팅 시스템에서 주로 활용됩니다.
7) 브로커 패턴
사용자가 원하는 서비스와 특징을 브로커 컴포넌트에 요청하면 브로커 컴포넌트가 요청에 맞는 컴포넌트와 사용자를 연결해주는 방식입니다. 분산 환경 시스템에 적합한 패턴입니다.
8) 피어-투-피어 패턴
Peer를 하나의 컴포넌트로 간주하며 각 피어는 클라이언트이자 서버가 될 수 있는 패턴입니다. 이 때 클라이언트와 서버는 전형적인 멀티스레딩 방식을 사용합니다.
9) 이벤트-버스 패턴
이벤트-버스 패턴은 확장이 용이한 반응형 애플리케이션을 만들기 위한 분산 비동기 아키텍처 패턴입니다. 소스가 특정 채널에 이벤트 메시지를 발행하면, 해당 채널을 구독하는 리스너들이 메세지를 받아 이벤트를 처리하는 방식입니다. 이를 구성하는 주요 4가지 컴포넌트로 소스, 리스너, 채널, 버스가 있습니다.
10) 블랙보드 패턴
모든 컴포넌트들이 공유 데이터 저장소와 블랙보드 컴포넌트에 접근이 가능한 형태로 컴포넌트들은 검색을 통해 블랙보다에서 원하는 데이터를 찾을 수 있습니다. 음성인식, 차량 식별, 신호 해석 등에 주로 사용됩니다.
'CS' 카테고리의 다른 글
객체지향 분석 및 설계 (0) | 2024.02.05 |
---|---|
객체지향 (0) | 2024.02.02 |
소프트웨어 아키텍처 (0) | 2024.02.02 |
스크럼, XP 기법 (0) | 2024.02.02 |
소프트웨어 생명 주기 (0) | 2024.02.02 |