CJ온스타일이 오네(O.NE) 배송정보 API의 MLC(Mobile-Live Commerce) API 강결합 문제를 해결하기 위해 BFF 패턴 기반 신규 API로 마이그레이션한 과정을 다룬다. MLC API 타임아웃이 상품 서비스 전체에 영향을 미치던 연쇄 장애를 근본적으로 제거한 사례다.
핵심 포인트- MLC API가 방송 편성 조회 공통 메서드에 추가되면서 장바구니·마이존·상품·전시 등 무관한 영역까지 불필요하게 호출되는 결합도 문제
- MLC API 타임아웃이 상품 서비스 전체 장애로 이어지는 연쇄 장애 구조를 BFF 패턴 신규 API로 해소
- MSA 구조에 맞춘 BFF(Backend For Frontend) 패턴으로 프론트엔드 최적화 API 제공 및 재사용성 확보
- Spring Boot 2.X로 개발환경 전환, Redis @Cacheable로 Feign Client 응답시간 감소
- Dead field 제거로 Over-Fetching 문제 해결
상세 정리- 기존 배송정보 API: 방송 편성 정보 조회 공통 메서드에 MLC API가 추가되어 배송과 무관한 장바구니·마이존·상품·전시 서비스에서도 불필요하게 호출됨
- MLC API 응답 지연·타임아웃 시 상품 서비스 전체가 영향을 받는 단일 장애 지점 구조
- BFF 패턴: 각 API 서버의 원본 데이터를 활용해 프론트엔드 요구사항에 최적화된 API를 별도 구성
- 신규 배송정보 API는 MLC API를 직접 호출하지 않아 MLC 장애가 배송정보 응답에 영향을 미치지 않음
- Spring Boot 구 버전(미지원 프레임워크)에서 Spring Boot 2.X로 마이그레이션하며 현대화
- Redis @Cacheable 어노테이션으로 Feign Client 호출을 캐싱해 응답시간 단축
- 과거 API에서 사용되지 않는 데드 필드를 제거해 Over-Fetching 제거, 네트워크 비용 절감
- 마이그레이션 결과: 오네 배송정보 API에서 MLC API 호출이 완전히 제거되어 시스템 안정성 향상
왜 읽나MSA 환경에서 특정 외부 API와의 강결합이 서비스 전반으로 장애를 전파하는 문제를 BFF 패턴으로 해결하려는 팀에 실전 마이그레이션 사례를 제공한다.