728x90
반응형

소프트웨어 아키텍처 View - Shaw and Garlan's Model: 효과적인 시스템 설계를 위한 구성 요소

개요

  • 소프트웨어 아키텍처는 복잡한 시스템 구조를 이해하고 설계하기 위한 중요한 프레임워크.
  • Shaw와 Garlan은 1996년 "Software Architecture: Perspectives on an Emerging Discipline"에서 컴포넌트, 커넥터, 패턴의 3요소를 중심으로 한 아키텍처 관점 제시.
  • 이 모델은 단순하면서도 강력한 구조적 관점을 제공해 현대 소프트웨어 아키텍처의 기초를 형성.
  • 현대 마이크로서비스, 클라우드 기반 아키텍처에서도 여전히 유효한 개념적 프레임워크.

1. 컴포넌트(Components)

  • 정의: 계산 또는 데이터 저장을 담당하는 독립적인 모듈 단위.

  • 특징:

    • 잘 정의된 인터페이스를 통해 외부와 상호작용
    • 내부 동작은 캡슐화되어 외부에 노출되지 않음
    • 재사용 가능하며 독립적으로 배포 가능
    • 다른 컴포넌트와 조합 가능
  • 컴포넌트 종류:

    1. 프로세스/태스크: 독립적인 실행 단위
    2. 데이터 저장소: 데이터베이스, 파일 시스템 등
    3. 클라이언트/서버: 서비스 요청/제공 역할
    4. 필터: 데이터 변환 기능
    5. 객체: OOP 패러다임의 기본 단위
  • 실제 사례:

    • 웹 애플리케이션에서의 프론트엔드/백엔드 컴포넌트
    • 마이크로서비스 아키텍처에서의 개별 서비스
    • ERP 시스템의 모듈(회계, 재고관리, 인사 등)
graph TD
    subgraph 웹애플리케이션
    A[프론트엔드 컴포넌트]
    B[백엔드 API 컴포넌트]
    C[데이터베이스 컴포넌트]
    end

    A -->|API 호출| B
    B -->|데이터 저장/조회| C

2. 커넥터(Connectors)

  • 정의: 컴포넌트 간의 상호작용과 통신을 담당하는 매개체.

  • 특징:

    • 컴포넌트 간 결합도 감소에 기여
    • 다양한 통신 메커니즘 추상화
    • 통신 프로토콜, 데이터 변환 등을 처리
    • 컴포넌트의 재사용성 향상에 기여
  • 커넥터 유형:

    1. 프로시저 호출(Procedure Call): 함수/메서드 호출
    2. 데이터 스트림(Data Stream): 연속적인 데이터 흐름
    3. 이벤트(Event): 이벤트 기반 통신
    4. 메시지 패싱(Message Passing): 비동기 메시지 교환
    5. 공유 메모리(Shared Memory): 공통 메모리 영역을 통한 통신
    6. 분산 프로토콜(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)

  • 정의: 반복적으로 발생하는 아키텍처 문제에 대한 검증된 해결책.

  • 특징:

    • 특정 문제 해결을 위한 컴포넌트와 커넥터의 구성 방식
    • 설계 의도와 제약사항을 명확히 표현
    • 검증된 방식으로 품질 속성 확보
    • 설계자 간 커뮤니케이션 도구로 활용
  • 주요 아키텍처 패턴:

    1. 파이프-필터(Pipe and Filter):

      • 데이터 스트림 처리를 위한 패턴
      • 각 필터는 입력을 받아 처리 후 출력 생성
      • Unix 파이프, ETL 프로세스에 활용
    2. 계층화(Layered):

      • 기능적으로 관련된 모듈을 계층으로 그룹화
      • 각 계층은 아래 계층에만 의존
      • OSI 7계층, TCP/IP 모델, 3-티어 웹 아키텍처
    3. 클라이언트-서버(Client-Server):

      • 서비스 제공자(서버)와 소비자(클라이언트) 분리
      • 웹 애플리케이션, 데이터베이스 시스템에 적용
    4. 모델-뷰-컨트롤러(MVC):

      • 사용자 인터페이스와 비즈니스 로직 분리
      • 웹 프레임워크에서 광범위하게 사용
    5. 이벤트 기반(Event-Based):

      • 컴포넌트가 이벤트 발생/구독 방식으로 통신
      • GUI 시스템, 반응형 아키텍처에 활용
    6. 리포지토리(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
반응형

+ Recent posts