728x90
반응형
소프트웨어 아키텍처 View - Shaw and Garlan's Model: 효과적인 시스템 설계를 위한 구성 요소
- 개요
- 1. 컴포넌트(Components)
- 2. 커넥터(Connectors)
- 3. 패턴(Patterns)
- Shaw and Garlan 모델의 실무 적용
- Shaw and Garlan 모델의 장단점
- 모델의 현대적 확장
- 결론
- Keywords
개요
- 소프트웨어 아키텍처는 복잡한 시스템 구조를 이해하고 설계하기 위한 중요한 프레임워크.
- Shaw와 Garlan은 1996년 "Software Architecture: Perspectives on an Emerging Discipline"에서 컴포넌트, 커넥터, 패턴의 3요소를 중심으로 한 아키텍처 관점 제시.
- 이 모델은 단순하면서도 강력한 구조적 관점을 제공해 현대 소프트웨어 아키텍처의 기초를 형성.
- 현대 마이크로서비스, 클라우드 기반 아키텍처에서도 여전히 유효한 개념적 프레임워크.
1. 컴포넌트(Components)
정의: 계산 또는 데이터 저장을 담당하는 독립적인 모듈 단위.
특징:
- 잘 정의된 인터페이스를 통해 외부와 상호작용
- 내부 동작은 캡슐화되어 외부에 노출되지 않음
- 재사용 가능하며 독립적으로 배포 가능
- 다른 컴포넌트와 조합 가능
컴포넌트 종류:
- 프로세스/태스크: 독립적인 실행 단위
- 데이터 저장소: 데이터베이스, 파일 시스템 등
- 클라이언트/서버: 서비스 요청/제공 역할
- 필터: 데이터 변환 기능
- 객체: OOP 패러다임의 기본 단위
실제 사례:
- 웹 애플리케이션에서의 프론트엔드/백엔드 컴포넌트
- 마이크로서비스 아키텍처에서의 개별 서비스
- ERP 시스템의 모듈(회계, 재고관리, 인사 등)
graph TD
subgraph 웹애플리케이션
A[프론트엔드 컴포넌트]
B[백엔드 API 컴포넌트]
C[데이터베이스 컴포넌트]
end
A -->|API 호출| B
B -->|데이터 저장/조회| C
2. 커넥터(Connectors)
정의: 컴포넌트 간의 상호작용과 통신을 담당하는 매개체.
특징:
- 컴포넌트 간 결합도 감소에 기여
- 다양한 통신 메커니즘 추상화
- 통신 프로토콜, 데이터 변환 등을 처리
- 컴포넌트의 재사용성 향상에 기여
커넥터 유형:
- 프로시저 호출(Procedure Call): 함수/메서드 호출
- 데이터 스트림(Data Stream): 연속적인 데이터 흐름
- 이벤트(Event): 이벤트 기반 통신
- 메시지 패싱(Message Passing): 비동기 메시지 교환
- 공유 메모리(Shared Memory): 공통 메모리 영역을 통한 통신
- 분산 프로토콜(Distributed Protocol): 네트워크 기반 통신
실제 사례:
- REST API: 서비스 간 HTTP 기반 통신
- 메시지 큐: Kafka, RabbitMQ 등을 통한 비동기 통신
- RPC(Remote Procedure Call): gRPC 등
- 웹소켓: 실시간 양방향 통신
graph LR
subgraph 마이크로서비스 아키텍처
A[주문 서비스] -->|REST API| B[재고 서비스]
A -->|메시지 큐| C[배송 서비스]
A -->|이벤트 발행| D[알림 서비스]
end
3. 패턴(Patterns)
정의: 반복적으로 발생하는 아키텍처 문제에 대한 검증된 해결책.
특징:
- 특정 문제 해결을 위한 컴포넌트와 커넥터의 구성 방식
- 설계 의도와 제약사항을 명확히 표현
- 검증된 방식으로 품질 속성 확보
- 설계자 간 커뮤니케이션 도구로 활용
주요 아키텍처 패턴:
파이프-필터(Pipe and Filter):
- 데이터 스트림 처리를 위한 패턴
- 각 필터는 입력을 받아 처리 후 출력 생성
- Unix 파이프, ETL 프로세스에 활용
계층화(Layered):
- 기능적으로 관련된 모듈을 계층으로 그룹화
- 각 계층은 아래 계층에만 의존
- OSI 7계층, TCP/IP 모델, 3-티어 웹 아키텍처
클라이언트-서버(Client-Server):
- 서비스 제공자(서버)와 소비자(클라이언트) 분리
- 웹 애플리케이션, 데이터베이스 시스템에 적용
모델-뷰-컨트롤러(MVC):
- 사용자 인터페이스와 비즈니스 로직 분리
- 웹 프레임워크에서 광범위하게 사용
이벤트 기반(Event-Based):
- 컴포넌트가 이벤트 발생/구독 방식으로 통신
- GUI 시스템, 반응형 아키텍처에 활용
리포지토리(Repository):
- 중앙 데이터 저장소를 중심으로 한 구조
- 데이터 중심 애플리케이션에 적합
graph TD
subgraph 파이프-필터 패턴
A[입력 데이터] --> B[필터1: 데이터 정제]
B --> C[필터2: 변환]
C --> D[필터3: 집계]
D --> E[출력 데이터]
end
graph TD
subgraph 계층화 패턴
A[프레젠테이션 계층] --> B[비즈니스 로직 계층]
B --> C[데이터 접근 계층]
C --> D[데이터베이스]
end
Shaw and Garlan 모델의 실무 적용
1. 아키텍처 모델링
기본 활동:
- 시스템 요구사항 분석 후 주요 컴포넌트 식별
- 컴포넌트 간 상호작용 방식(커넥터) 결정
- 적합한 아키텍처 패턴 선택 및 적용
- 품질 속성(성능, 보안, 확장성 등) 검증
모델링 도구:
- UML 컴포넌트 다이어그램
- C4 모델
- 아키텍처 설명 언어(ADL)
2. 현대적 적용 사례
마이크로서비스 아키텍처:
- 컴포넌트: 개별 서비스
- 커넥터: API 게이트웨이, 메시지 브로커
- 패턴: API 게이트웨이, 서비스 메쉬, CQRS
클라우드 네이티브 애플리케이션:
- 컴포넌트: 컨테이너화된 서비스, 서버리스 함수
- 커넥터: 서비스 디스커버리, 로드 밸런서
- 패턴: 사이드카, 스트랭글러 패턴
IoT 시스템:
- 컴포넌트: 센서, 게이트웨이, 클라우드 서비스
- 커넥터: MQTT, CoAP 프로토콜
- 패턴: 디바이스 섀도우, 엣지 컴퓨팅
graph TD
subgraph 마이크로서비스 아키텍처
A[API 게이트웨이] --> B[인증 서비스]
A --> C[제품 서비스]
A --> D[주문 서비스]
D --> E[결제 서비스]
D --> F[재고 서비스]
G[메시지 브로커] --> D
G --> H[알림 서비스]
D --> G
end
Shaw and Garlan 모델의 장단점
장점
- 단순성: 직관적이고 이해하기 쉬운 개념적 모델 제공
- 추상화: 적절한 추상화 수준으로 복잡한 시스템 표현 가능
- 모듈성: 컴포넌트 기반 접근으로 모듈화 촉진
- 가변성: 다양한 아키텍처 스타일과 패턴을 표현 가능
- 의사소통: 개발자, 설계자, 이해관계자 간 효과적인 커뮤니케이션 도구
한계
- 동적 측면: 시스템의 정적 구조에 중점, 동적 행동 표현에 제한적
- 품질 속성: 품질 속성(성능, 보안 등)의 명시적 모델링에 제한
- 진화: 시스템 진화와 변경 관리 관점 부족
- 구현 격차: 설계에서 구현으로의 전환 가이드 제한적
모델의 현대적 확장
ADL(Architecture Description Languages):
- Shaw와 Garlan의 개념을 형식화한 언어
- ACME, Wright, xADL 등이 대표적
아키텍처 평가 방법:
- ATAM(Architecture Tradeoff Analysis Method)
- SAAM(Software Architecture Analysis Method)
뷰 기반 접근법:
- 4+1 뷰 모델(Kruchten)
- C4 모델(Simon Brown)
- 아키텍처 관점(ISO/IEC 42010)
결론
- Shaw와 Garlan의 컴포넌트-커넥터-패턴 모델은 25년이 넘는 시간이 지났지만 여전히 소프트웨어 아키텍처의 기본 개념적 프레임워크로 유효.
- 현대 소프트웨어 아키텍처 접근법의 기초가 되는 단순하면서도 강력한 개념 제공.
- 마이크로서비스, 클라우드 네이티브, IoT 등 현대적 아키텍처에도 적용 가능한 기본 원칙 제시.
- 아키텍처 설계 시 구조적 이해와 의사소통을 위한 공통 언어 역할 수행.
- 소프트웨어 아키텍처를 학습하는 모든 이들이 반드시 이해해야 할 기본 모델.
Keywords
Software Architecture, 소프트웨어 아키텍처, Components, 컴포넌트, Connectors, 커넥터, Patterns, 아키텍처 패턴, Shaw and Garlan, 아키텍처 뷰, Architecture Styles, 모듈화
728x90
반응형
'IT Professional Engineering > SW' 카테고리의 다른 글
디자인 패턴(Design Pattern): 소프트웨어 개발의 검증된 설계 기법 (0) | 2025.04.01 |
---|---|
마이크로서비스 아키텍처(MSA): 현대적 시스템 구축을 위한 분산형 설계 패러다임 (0) | 2025.04.01 |
소프트웨어 아키텍처 View - Siemens Four View: 체계적인 아키텍처 관점 접근법 (0) | 2025.04.01 |
소프트웨어 아키텍처 View - Perry and Wolf's Model: 아키텍처 설계의 기본 구성요소 (0) | 2025.04.01 |
소프트웨어 아키텍처 View: 다차원적 설계 관점의 체계화 (0) | 2025.04.01 |