본문 바로가기
츄Log/끄적끄적

컨슈머 주도 계약, Spring Cloud Contract

by 츄츄🦭 2024. 6. 16.
728x90

https://spring.io/projects/spring-cloud-contract

 

 

아키텍쳐 책을 보다가 컨슈머 주도 계약이라는 개념을 보았습니다.

일반적으로 하나의 프로바이더와 여러 컨슈머가 있을 때, 프로바이더가 업스트림이 되어 계약을 주도하고 컨슈머는 순응하게 됩니다.

하지만 이 개념은, 컨슈머가 직접 프로바이더와 컨슈머간의 계약을 정의하고 시스템적으로 계약을 강제하기까지 하는 것입니다.

 

먼저

1. 컨슈머가 계약을 정의합니다.

2. 프로바이더와 컨슈머는 이 계약을 강제합니다 (ex. 테스트코드, 피트니스함수)

 

저는 처음에 1번의 과정이 단순히 프로바이더-컨슈머간 구두로 얘기 정도밖에 생각나지 않았습니다.

이게 시스템적으로 가능할까? 싶었는데, 

함께 스터디하는 고-수 개발자님께서, Spring Cloud Contract 키워드를 알려주셨습니다.

 

간략한 시나리오는 다음과 같습니다.

1. 컨슈머가 자기가 원하는 계약을 작성한다. (물론 프로바이더가 제공하는 데이터 기반의 계약이어야겠죠?)

2. 계약을 원격 저장소에 올린다.

3. 프로바이더가 해당 계약을 기반으로하는 stub을 작성하여 maven 저장소에 올린다

4. 컨슈머는 이 stub을 다운로드 받아서 API 개발을 진행한다.

 

느슨하게 연결지은 결합도가 낮은 서비스 간에, 계약을 엄격하게 관리할 수 있는 좋은 방법이라고 생각됩니다.

다만, 그만큼 기술적으로 성숙해야 겠다는 생각도 듭니다.

벌써 Spring Cloud Contract라는 연동 매커니즘이 하나 더 생겼으니까요. 

 

아 그리고 위 시스템을 도입한다면,

제가 지향하는 (외부 연동에서) 코드가 곧 문서가 되어야 한다을 가장 완벽하게 달성할 수 있지 않을까 합니다. 

 

 

728x90