소프트웨어 아키텍처 패턴과 품질 속성
주요 소프트웨어 아키텍처 패턴의 구조와 장단점을 품질 요구사항에 맞춰 비교한다.
소프트웨어 아키텍처
소프트웨어 아키텍처는 시스템의 주요 구성요소, 각 구성요소의 책임, 관계와 인터페이스, 적용 제약을 정하는 상위 설계다. 기능뿐 아니라 성능·가용성·보안·변경 용이성 같은 품질 요구와 기술·조직 제약도 고려한다.
좋은 아키텍처 설명에는 다음이 드러난다.
- 주요 구성요소와 책임
- 구성요소 사이의 데이터·제어 흐름
- 외부 시스템과의 경계
- 배치·통신·저장 방식의 주요 결정
- 선택한 구조의 장점과 위험
대표 아키텍처 패턴

아키텍처 패턴 비교도
계층형(Layered)
기능을 책임 수준에 따라 여러 계층으로 나눈다. 일반적인 예는 표현·업무·데이터 접근 계층이다.
- 장점: 책임 분리, 이해·변경·시험 용이
- 단점: 계층을 많이 거치면 성능 저하, 부적절한 우회 의존 가능
Layer는 논리적 책임 구분이고, Tier는 물리적 실행·배포 구분이다. 논리 3계층이 반드시 서버 3대에 배포되는 것은 아니다.
클라이언트-서버
클라이언트가 서비스를 요청하고 서버가 이를 제공한다.
- 장점: 자원·서비스의 중앙 관리, 역할 구분
- 단점: 서버 병목·장애 영향, 네트워크 의존
클라이언트와 서버는 역할이며 특정 장비 종류만을 뜻하지 않는다.
파이프-필터
데이터를 처리하는 독립된 필터를 파이프로 연결한다. 한 필터의 출력이 다음 필터의 입력이 된다.
- 장점: 단계 재사용·교체, 병렬 처리 가능
- 단점: 공통 데이터 형식 필요, 대화형 처리에는 부적합할 수 있음
컴파일러의 어휘·구문·의미 분석이나 데이터 변환 처리에 적용할 수 있다.
MVC
- Model: 데이터와 업무 상태·규칙
- View: 사용자에게 보이는 표현
- Controller: 입력을 해석해 모델과 뷰의 흐름 조정
관심사를 분리하여 UI 변경과 업무 로직 변경의 영향을 줄이는 것이 핵심이다. MVC는 계층형 전체와 같은 개념은 아니다.
저장소(Repository)
여러 구성요소가 중앙 데이터 저장소를 공유한다.
- 장점: 데이터 일관성·공유·통합 용이
- 단점: 저장소 구조 변경의 파급, 중앙 장애·병목 가능
블랙보드(Blackboard)
공유된 문제 상태를 여러 지식 원천이 관찰하고 부분 해를 추가하여 점진적으로 해결한다. 단순히 중앙 DB를 공유하는 구조보다 여러 해법이 협력해 불완전한 문제를 해결하는 데 초점이 있다.
브로커(Broker)
분산된 서비스 요청자와 제공자 사이에서 위치·호출·결과 전달을 중개한다.
- 장점: 통신 세부와 위치 의존 감소
- 단점: 브로커 장애·성능·운영 복잡성
피어투피어(Peer-to-Peer)
각 노드가 요청자와 제공자 역할을 모두 수행할 수 있다. 중앙 서버 의존을 줄일 수 있지만 검색·일관성·보안 관리가 복잡해질 수 있다.
품질 요구와 선택
| 요구 | 도움이 될 수 있는 설계 방향 | 함께 확인할 위험 |
|---|---|---|
| 변경 용이성 | 계층화, 책임 분리 | 계층 간 과도한 의존 |
| 성능 | 호출 단계 축소, 병렬 처리 | 결합 증가, 복잡성 |
| 가용성 | 중복 구성, 장애 격리 | 비용, 데이터 일관성 |
| 보안 | 경계와 권한 분리 | 관리 복잡성 |
패턴은 품질 속성을 자동 보장하는 제품이 아니다. 요구와 제약에 맞게 조합하고 trade-off를 검토한다.
패턴 비교
| 패턴 | 핵심 단서 |
|---|---|
| 계층형 | 책임 수준과 의존 방향 |
| 클라이언트-서버 | 서비스 요청자와 제공자 |
| 파이프-필터 | 연속된 독립 변환 단계 |
| MVC | 모델·표현·입력 제어 분리 |
| 저장소 | 중앙 데이터 공유 |
| 블랙보드 | 여러 지식원이 공유 문제 상태를 발전 |
| 브로커 | 분산 요청과 서비스 중개 |
| P2P | 노드가 대등하게 요청·제공 역할 수행 |