[1]의 8장에서는 다룬 API 진화 패턴을 다룬다. 각 패턴에 대한 설명, 주요 특징, 그리고 충돌하는 요구 사항(포스)을 포함한다.
변경 사항 도입 패턴:
- 공격적 폐기
- 설명: 이전 버전을 빠르게 폐기하고, 클라이언트에게 빠르게 신규 버전으로 전환하도록 강제.
- 주요 특징:
- 사용 빈도가 낮은 기능을 신속히 제거.
- 유지 관리 비용 절감.
- 최신 버전 채택 촉진.
- 포스:
- 신속한 혁신과 클라이언트 안정성 간의 균형.
- 빠른 전환이 어려운 클라이언트와의 충돌 가능성.
- 실험적 미리 보기
- 설명: 초기 버전을 미리 공개하여 클라이언트가 테스트하고 피드백을 제공할 수 있게 함.
- 주요 특징:
- 초기 채택과 피드백 장려.
- 정식 출시 전 API를 개선할 수 있음.
- 포스:
- 불안정한 기능 노출의 위험.
- 기능의 안정성과 클라이언트 기대치 관리 필요.
- 2개의 상용 버전
- 설명: 기존 버전과 새로운 버전을 동시에 유지하여 점진적인 전환 지원.
- 주요 특징:
- 클라이언트의 중단 없는 전환 가능.
- 역호환성 제공.
- 포스:
- 여러 버전을 유지 관리하는 데 필요한 자원 증가.
- 새로운 기능과 이전 버전 지원 간의 균형.
- 제한적 수명 보장
- 설명: API 버전의 지원 기간을 명확히 설정.
- 주요 특징:
- 버전 지원 종료 시점을 명확히 하여 클라이언트의 계획 수립 도움.
- 포스:
- 클라이언트의 기대치와 실제 지원 기간 간의 조율 필요.
- 더 긴 지원이 필요한 클라이언트와의 충돌 가능성.
버전 표시 패턴:
- 버전 구분자
- 설명: 명확한 버전 식별자를 사용하여 API 업데이트 구분.
- 주요 특징:
- 역호환성 관리.
- 클라이언트가 특정 버전을 선택할 수 있게 함.
- 포스:
- 버전 관리 규칙의 엄격한 제어 필요.
- 여러 버전이 동시에 사용될 때의 어려움.
- 시멘틱 버전 관리
- 설명: 구조화된 버전 체계(예: major.minor.patch)를 사용하여 변경의 성격을 표시.
- 주요 특징:
- 버전 간 호환성 이해를 간편하게 만듦.
- 중요한 변경 및 신규 기능을 명확히 신호.
- 포스:
- 새로운 기능 추가와 역호환성 유지의 균형 필요.
- 일관된 버전 규칙 준수가 요구됨.
호환성 보장 패턴:
- 서비스 수준 계약(SLA)
- 설명: API의 가용성, 성능 및 지원에 대한 명확한 기대치를 설정.
- 주요 특징:
- 클라이언트에게 안정성을 보장.
- 신뢰성과 가동 시간 기준 설정.
- 포스:
- 안정성을 보장하면서 지속적인 개선을 하는 것의 충돌.
- 높은 기준을 유지하기 위한 비용 부담.
참고 문헌
[1] 올라프 짐머만 , 미르코 스토커 , 다니엘 뤼브케 , 우베 즈둔 , 세자레 파우타소 , "마이크로서비스 API 디자인 패턴: 쉬운 통합을 위한 결합도 최적화 전략" 에이콘. 이승범 역
'Software Architecture' 카테고리의 다른 글
객체 지향 리엔지니어링 패턴: 9장 책임 재배치 (0) | 2024.12.25 |
---|---|
마이크로서비스 API 디자인 패턴: 9장 API 계약 문서화 및 커뮤니케이션 (0) | 2024.12.18 |
마이크로서비스 API 디자인 패턴: 7장 품질을 위한 메시지 설계 개선 (0) | 2024.12.04 |
마이크로서비스 API 디자인 패턴: 6장 요청 및 응답 메시지 표현 설계 (1) | 2024.11.27 |
미니 품질 속성 워크샵 (Mini Quality Attribute Workshop) (0) | 2024.11.20 |