7 소프트웨어 아키텍처 패턴
시스템 전체의 뼈대를 정의하는 구조적 해법. 반복되는 설계 문제의 검증된 틀.
| 패턴 | 설명 | 특징 |
|---|---|---|
| 계층화(Layered) | 기능을 상하 계층으로 분리, 상위→하위 호출 | 관심사 분리, OSI·TCP/IP가 대표. 유지보수 용이 |
| 클라이언트-서버 | 서비스 요청(Client)과 제공(Server) 분리 | 중앙 집중 자원 관리, 다대일 요청 |
| 파이프-필터(Pipe-Filter) | 데이터를 필터가 처리 후 파이프로 전달 | 재사용·단계적 변환, 컴파일러·UNIX 파이프 |
| MVC(Model-View-Controller) | 모델(데이터)·뷰(표현)·컨트롤러(제어) 분리 | UI와 로직 분리, 유지보수·병행개발 용이 |
| 브로커(Broker) | 분산 컴포넌트 사이를 중개자가 연결 | 위치 투명성, 분산 시스템(CORBA) |
| 이벤트-버스 / 발행-구독(Pub-Sub) | 발행자가 이벤트 발생, 구독자가 수신 | 느슨한 결합, 비동기 처리 |
| 마스터-슬레이브 | 마스터가 작업 분배, 슬레이브가 수행 후 반환 | 병렬 처리·장애 허용(fault tolerance) |
| 피어투피어(P2P) | 각 노드가 클라이언트이자 서버로 대등 | 중앙 서버 없음, 파일 공유·블록체인 |
| 블랙보드(Blackboard) | 공유 저장소에 지식원들이 협력하며 해 도출 | 정해진 해법 없는 문제(음성·영상 인식) |
함정주의 아키텍처 패턴과 디자인 패턴(GoF)은 추상화 수준이 다르다. 아키텍처 패턴 = 시스템 전체 구조, 디자인 패턴 = 클래스·객체 수준의 세부 설계 해법.
✅ 자가점검
Q1. MVC 패턴의 3가지 구성요소는?
Model(데이터·비즈니스 로직) · View(화면 표현) · Controller(입력 처리, Model과 View 중재).