Shaw와 Garlan 모델로 읽는 소프트웨어 아키텍처의 구조

Shaw와 Garlan의 컴포넌트·커넥터·패턴 모델을 바탕으로 소프트웨어 아키텍처를 설계하고 설명하는 방법을 정리한다.

2026-08-14 · 최초 발행 2025-05-23

시스템을 구성하는 단위와 관계를 함께 본다

소프트웨어 아키텍처는 복잡한 시스템의 구조를 이해하고 설계하기 위한 프레임워크다. Shaw와 Garlan은 1996년 Software Architecture: Perspectives on an Emerging Discipline에서 컴포넌트, 커넥터, 패턴을 중심으로 아키텍처를 바라보는 관점을 제시했다.

이 모델은 시스템 안에 무엇이 존재하는지뿐 아니라, 각 부분이 어떻게 연결되고 어떤 구조로 반복되는지까지 다룬다. 마이크로서비스나 클라우드 기반 아키텍처처럼 구현 기술이 달라져도 구조를 논의하는 기본 틀로 활용할 수 있다.

계산과 저장을 맡는 컴포넌트

컴포넌트는 계산을 수행하거나 데이터를 보관하는 독립적 모듈이다. 외부에는 잘 정의된 인터페이스로 기능을 제공하고, 내부 동작은 캡슐화한다. 다른 컴포넌트와 조합할 수 있으며 재사용과 독립 배포의 단위가 될 수 있다.

프로세스나 태스크, 데이터베이스와 파일 시스템 같은 저장소, 요청과 서비스를 나누는 클라이언트·서버, 데이터를 변환하는 필터, 객체가 컴포넌트의 예다. 웹 애플리케이션의 프론트엔드와 백엔드, 마이크로서비스의 개별 서비스, ERP의 회계·재고관리·인사 모듈도 이 관점에서 볼 수 있다.

애플리케이션API 호출데이터 저장/조회프론트엔드 컴포넌트백엔드 API 컴포넌트데이터베이스 컴포넌트

연결 방식도 아키텍처의 일부다

커넥터는 컴포넌트 사이의 상호작용과 통신을 담당한다. 컴포넌트가 어떤 기능을 맡는지와 별개로, 그 기능들이 어떤 방식으로 협력하는지 드러내는 요소다.

커넥터는 통신 메커니즘, 프로토콜, 데이터 변환을 추상화하며 컴포넌트 간 결합도를 낮추는 데 기여한다. 그 결과 컴포넌트의 재사용성도 높아질 수 있다. 프로시저 호출, 데이터 스트림, 이벤트, 메시지 패싱, 공유 메모리, 분산 프로토콜이 대표적인 유형이다.

REST API는 서비스 간 HTTP 기반 통신의 예이고, Kafka나 RabbitMQ를 사용하는 메시지 큐는 비동기 통신의 예다. gRPC 같은 RPC와 실시간 양방향 통신을 위한 웹소켓 역시 커넥터로 해석할 수 있다.

마이크로서비스 아키텍처REST API메시지이벤트 발행주문 서비스재고 서비스배송 서비스알림 서비스

반복되는 구조 문제를 패턴으로 다룬다

패턴은 반복적으로 나타나는 아키텍처 문제에 대한 검증된 해결책이다. 컴포넌트와 커넥터를 어떤 방식으로 배치할지, 그 설계가 어떤 의도와 제약을 갖는지를 표현한다. 품질 속성을 확보하기 위한 방식이면서 설계자 사이의 의사소통 수단이기도 하다.

파이프-필터는 데이터 스트림을 단계별로 처리한다. 각 필터는 입력을 받아 처리한 뒤 출력을 만들며, Unix 파이프와 ETL 프로세스가 활용 사례다.

파이프-필터 패턴입력 데이터필터1: 데이터 정제필터2: 변환필터3: 집계출력 데이터

계층화 패턴은 기능적으로 가까운 모듈을 계층으로 묶고, 각 계층이 아래 계층에만 의존하도록 구성한다. OSI 7계층, TCP/IP 모델, 3-티어 웹 아키텍처가 이에 해당한다.

계층화 패턴프레젠테이션 계층비즈니스 로직 계층데이터 접근 계층데이터베이스

클라이언트-서버는 서비스 제공자와 소비자를 분리하며 웹 애플리케이션과 데이터베이스 시스템에 적용된다. MVC는 사용자 인터페이스와 비즈니스 로직을 나누는 구조로 웹 프레임워크에서 널리 사용된다. 이벤트 기반 패턴은 컴포넌트가 이벤트를 발생시키고 구독하는 방식으로 연결되며, GUI 시스템과 반응형 아키텍처에 활용된다. 리포지토리 패턴은 중앙 데이터 저장소를 중심에 두므로 데이터 중심 애플리케이션에 적합하다.

설계 산출물에 이 관점을 반영하는 방법

아키텍처 모델링은 요구사항을 분석해 주요 컴포넌트를 식별하는 데서 시작한다. 이어 컴포넌트 간 상호작용을 위한 커넥터를 정하고, 요구에 맞는 아키텍처 패턴을 선택한다. 성능, 보안, 확장성과 같은 품질 속성도 이 구조 안에서 검증 대상이 된다.

UML 컴포넌트 다이어그램, C4 모델, 아키텍처 설명 언어(ADL)는 이러한 구조를 표현하는 도구다. 이들이 만드는 산출물은 구현 세부사항을 모두 나열하기보다 설계자가 공유해야 할 구조와 관계를 드러내는 데 초점을 둔다.

마이크로서비스 아키텍처에서는 개별 서비스가 컴포넌트가 되고, API 게이트웨이와 메시지 브로커가 커넥터가 된다. API 게이트웨이, 서비스 메쉬, CQRS는 이 구조에 적용할 수 있는 패턴이다.

클라우드 네이티브 애플리케이션에서는 컨테이너화된 서비스와 서버리스 함수가 컴포넌트가 될 수 있다. 서비스 디스커버리와 로드 밸런서는 연결을 담당하며, 사이드카와 스트랭글러 패턴을 적용할 수 있다. IoT에서는 센서, 게이트웨이, 클라우드 서비스가 컴포넌트를 이루고 MQTT와 CoAP 프로토콜이 커넥터 역할을 한다. 디바이스 섀도우와 엣지 컴퓨팅은 관련 패턴으로 볼 수 있다.

마이크로서비스 아키텍처API 게이트웨이인증 서비스제품 서비스주문 서비스결제 서비스재고 서비스메시지 브로커알림 서비스

단순한 구조 모델이 주는 범위와 제약

이 모델의 강점은 직관적인 개념으로 복잡한 시스템을 적절히 추상화한다는 데 있다. 컴포넌트 중심 접근은 모듈화를 촉진하고, 다양한 아키텍처 스타일과 패턴을 표현할 수 있다. 개발자, 설계자, 이해관계자가 구조를 논의하는 공통 언어로도 기능한다.

반면 정적 구조에 중점을 두므로 시스템의 동적 행동을 표현하는 데는 제한이 있다. 성능이나 보안 같은 품질 속성을 명시적으로 모델링하는 범위도 제한적이며, 시스템의 진화와 변경 관리, 설계에서 구현으로 이어지는 구체적 전환 지침은 충분히 다루지 않는다.

이후의 아키텍처 표현과 평가 방식

ADL은 Shaw와 Garlan의 개념을 형식화한 언어다. ACME, Wright, xADL 등이 대표적이다. 아키텍처 평가에는 ATAM(Architecture Tradeoff Analysis Method)과 SAAM(Software Architecture Analysis Method)을 활용할 수 있다.

뷰 기반 접근법으로는 Kruchten의 4+1 뷰 모델, Simon Brown의 C4 모델, ISO/IEC 42010의 아키텍처 관점이 있다. 이들은 컴포넌트와 연결 관계를 다양한 이해관계자의 시선에서 구체화하는 데 도움을 준다.

Shaw와 Garlan의 컴포넌트-커넥터-패턴 모델은 25년이 넘는 시간이 지났지만 소프트웨어 아키텍처를 설명하는 기본 프레임워크로 남아 있다. 마이크로서비스, 클라우드 네이티브, IoT의 구현 방식은 달라도 시스템 구조를 이해하고 설계 의도를 전달하는 공통 언어라는 역할은 유지된다.

소프트웨어 아키텍처Shaw와 Garlan아키텍처 패턴컴포넌트커넥터