관계
관계는 아키텍처 요소들이 어떻게 통신하고, 의존하고, 상호작용하는지를 보여줍니다. 아키텍처 문서의 핵심적인 부분입니다.
관계 생성
드래그 앤 드롭
- 소스 요소 위에 마우스를 올립니다
- 연결 포인트(작은 원)에서 클릭하고 드래그합니다
- 대상 요소에 놓습니다
- 관계가 자동으로 생성됩니다
컨텍스트 메뉴
- 소스 요소를 우클릭합니다
- "관계 생성"을 선택합니다
- 대상 요소를 클릭합니다
관계 속성
레이블
레이블은 관계가 나타내는 것을 설명합니다:
- "주문을 전송"
- "데이터를 읽음"
- "인증에 사용"
- "배포 대상"
모범 사례:
- 능동태 사용
- 흐르는 것을 구체적으로 명시
- 간결하게 유지
기술
선택적으로 기술이나 프로토콜을 명시합니다:
- "REST/HTTPS"
- "gRPC"
- "AMQP"
- "SQL/TCP"
- "WebSocket"
방향
관계는 화살표로 표시되는 방향이 있습니다:
- 단방향: 단방향 통신 (가장 일반적)
- 양방향: 양방향 통신
관계 스타일링
선 스타일
- 실선: 직접적인 의존성 또는 통신
- 점선: 선택적이거나 비동기 통신
색상
색상을 사용하여 관계를 분류합니다:
- 파란색: 데이터 흐름
- 녹색: 성공 경로
- 빨간색: 오류 처리
- 회색: 선택적
곡선 vs 직선
- 곡선: 복잡한 다이어그램에 적합, 겹침 방지
- 직선: 간단한 다이어그램에 더 깔끔
일반적인 패턴
요청-응답
Web App --"API 호출 [REST/HTTPS]"--> API Server
이벤트 기반
Order Service --"이벤트 발행 [AMQP]"--> Message Queue
Notification Service <--"이벤트 구독 [AMQP]"-- Message Queue
데이터베이스 접근
API Server --"데이터 읽기/쓰기 [SQL/TCP]"--> Database
외부 API
Payment Service --"결제 처리 [REST/HTTPS]"--> Stripe API
교차 레벨 관계
컴포넌트 레벨에서 볼 때 관계는 다른 컨테이너에 걸쳐 있을 수 있습니다:
- 컴포넌트는 시스템의 다른 부분에 있는 컨테이너에 연결 가능
- 현재 뷰를 떠나지 않고 전체 그림을 보여줄 수 있음
팁
과도한 연결을 피하세요
가능한 모든 관계를 표시할 필요는 없습니다. 다음에 집중하세요:
- 주요 데이터 흐름
- 중요한 의존성
- 명확하지 않은 연결
관련 관계를 그룹화하세요
여러 요소가 동일한 방식으로 통신하는 경우 다음을 고려하세요:
- 중간자 사용 (API 게이트웨이, 메시지 큐)
- 오버레이로 그룹화
레이블을 읽기 쉽게 유지하세요
- 겹침을 피하도록 레이블 위치 조정
- 깔끔한 다이어그램을 위해 짧은 레이블 사용
- 요소 설명에 세부 정보 추가