피드로 돌아가기
Dev.toBackend
원문 읽기
YAML 기반 선언적 설정으로 RestClient Bean 폭발 문제 해결 및 관리 효율 극대화
A YAML-Driven Multi-Channel RestClient — The Story of Building mido-client
AI 요약
Context
여행 산업 특성상 다수의 OTA API 연동이 필요하며, 특히 조회(Lookup)와 예약(Booking) 호스트가 분리된 Dual-endpoint 구조가 빈번함. 기존 Spring Boot의 @Bean 기반 RestClient 설정은 채널 증가에 따라 설정 코드가 기하급수적으로 늘어나는 Boilerplate Hell 문제를 야기함.
Technical Solution
- YAML 기반의 선언적 구성으로 외부 API 채널 설정과 비즈니스 로직을 완전히 분리한 mido-client 아키텍처 설계
- Primary/Secondary 구조를 YAML 내에 정의하여 단일 서비스 내 다중 엔드포인트 매핑 문제를 구조적으로 해결
- ConcurrentHashMap 기반의 Client Caching 메커니즘을 통해 매 요청 시 발생하는 클라이언트 생성 비용 제거
- @Validated를 활용한 Fail-fast 검증 로직을 구현하여 애플리케이션 기동 시점의 설정 오류 조기 발견
- 인터셉터 훅을 통한 Resilience4j 등 외부 서킷 브레이커 라이브러리와의 유연한 플러그인 구조 제공
- XML/JSON 타입 정의를 통한 Content-Type 자동 설정으로 레거시 SOAP 인터페이스 대응력 강화
실천 포인트
- 다수 외부 API 연동 시 @Bean 설정 대신 YAML 기반의 선언적 관리 구조 검토 - 동일 서비스 내 다중 호스트 사용 시 Primary/Secondary 엔드포인트 구분 설계 적용 - 설정 값 검증을 위해 @ConfigurationProperties와 @Validated 조합을 통한 Fail-fast 전략 도입 - RestClient 기반의 통일된 HTTP 클라이언트 정책 수립으로 OpenFeign의 종속성 문제 방지