[1]의 7장에서는 주로 메시지 설계 품질을 개선하는 다양한 패턴과 접근 방식을 설명한다. API의 직관적 이해, 성능, 진화 가능성과 같은 품질 요소의 중요성을 설명하며, 성능과 보안, 확장성 등의 상충하는 요구 사항 사이에서 균형을 맞추는 방법을 다룬다. 패턴을 크게 나누면, 케시지 크기 및 요청 수 조정, 참조 관리 그리고 제어 및 표현 정도에 따른 패턴으로 구분할 수 있다. 각 패턴의 설명과 주요 특징, 그리고 패턴 적용 시 발생할 수 있는 주요 요구 사항인 '포스(force)' 충돌에 대해 요약한다.
메시지 크기 및 요청 수 조정하기를 위한 패턴
- 요청 번들
- 설명: 여러 작은 요청을 하나의 큰 요청으로 묶어 클라이언트가 여러 번의 요청을 보내지 않도록 한다.
- 주요 특징:
- 네트워크 대역폭 절약
- 응답 지연 시간 감소
- 클라이언트 구현 단순화
- 포스의 충돌:
- 처리 복잡성 증가 vs. 성능 최적화
- 클라이언트-서버 간 데이터 일관성 유지 필요
- 조건부 요청
- 설명: 클라이언트가 이미 보유한 데이터와 서버의 데이터를 비교하여 변경된 데이터만 전송받도록 한다.
- 주요 특징:
- 네트워크 사용량 감소
- 서버 및 클라이언트 간 데이터 일관성 유지
- 포스의 충돌:
- 효율성 vs. 추가 구현 복잡성
- 상태 관리 필요성 증가
- 페이지네이션
- 설명: 대량의 데이터를 청크로 나누어 클라이언트가 순차적으로 필요한 데이터만 가져오게 한다.
- 주요 특징:
- 대용량 데이터의 효율적 전송
- 클라이언트의 메모리 사용 최적화
- 포스의 충돌:
- 데이터 최신성 vs. 성능 최적화
- 네트워크 안정성과 리소스 사용 조정 필요
참조 관리의 대안으로서 패턴
- 임베디드 엔티티
- 설명: 필요한 데이터를 응답 메시지에 직접 포함하여 클라이언트가 추가 요청 없이 필요한 모든 데이터를 얻도록 한다.
- 주요 특징:
- 관련 데이터의 한 번에 전송
- 클라이언트-서버 간 추가 요청 최소화
- 포스의 충돌:
- 데이터 일관성 vs. 메시지 크기 증가
- 전송 시간 증가와 대역폭 소비
- 링크된 정보 보유자
- 설명: 관련 데이터를 직접 포함하는 대신, 해당 데이터를 참조하는 링크를 제공하여 필요 시 클라이언트가 추가 요청을 통해 접근할 수 있게 한다.
- 주요 특징:
- 메시지 크기 감소
- 독립적 데이터 관리 가능
- 포스의 충돌:
- 효율성 vs. 추가 요청 필요성
- 데이터의 최신성 유지 vs. 데이터 접근 지연
제어 및 표현의 정도에 따른 패턴
- 위시 리스트
- 설명: 클라이언트가 요청 시 필요한 응답 데이터의 속성만 지정하여 선택적으로 데이터를 요청한다.
- 주요 특징:
- 데이터 전송 최적화
- 클라이언트의 요구에 맞춘 맞춤형 응답 제공
- 포스의 충돌:
- 성능 최적화 vs. 클라이언트 복잡성 증가
- 정확한 데이터 전달 vs. 데이터 취합의 어려움
- 위시 템플릿
- 설명: 클라이언트가 중첩된 데이터 구조에서 필요한 부분만을 요청하여 더 세부적으로 응답을 조정할 수 있다.
- 주요 특징:
- 데이터 과다 전송 방지
- 세밀한 데이터 제어 가능
- 포스의 충돌:
- 데이터 간결성 vs. 클라이언트-서버 간 데이터 처리 복잡성
- 성능 향상 vs. 클라이언트의 정확한 요청 설계 필요
참고 문헌
[1] 올라프 짐머만 , 미르코 스토커 , 다니엘 뤼브케 , 우베 즈둔 , 세자레 파우타소 , "마이크로서비스 API 디자인 패턴: 쉬운 통합을 위한 결합도 최적화 전략" 에이콘. 이승범 역
'Software Architecture' 카테고리의 다른 글
마이크로서비스 API 디자인 패턴: 9장 API 계약 문서화 및 커뮤니케이션 (0) | 2024.12.18 |
---|---|
마이크로서비스 API 디자인 패턴: 8장 API 진화 (1) | 2024.12.11 |
마이크로서비스 API 디자인 패턴: 6장 요청 및 응답 메시지 표현 설계 (1) | 2024.11.27 |
미니 품질 속성 워크샵 (Mini Quality Attribute Workshop) (0) | 2024.11.20 |
Technology Stack과 System Architecture (1) | 2024.11.13 |