mock 서버 개발: 신용대출 제휴사 테스트 환경 및 API 시뮬레이션
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

신용대출 찾기 서비스 제휴사 mock 서버 개발기

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

개발 툴

대상자

  • 백엔드 개발자, QA 엔지니어, 제휴사 연동 담당자
  • Spring Framework, REST API, 데이터베이스 연동 경험자
  • 난이도: 중급 (Spring Boot, 복잡한 테스트 환경 구축 경험이 필요)

핵심 요약

  • mock 서버는 유저/제휴사/퍼널 단위로 테스트 조건을 정밀하게 제어하는 기능 제공
  • RestTemplate/WebClient에 커스텀 헤더 주입을 통해 비즈니스 로직 영향 없이 테스트 수행
  • 스케줄링을 통한 비동기 응답 시뮬레이션 및 데이터 템플릿 기반의 mock 응답 생성 방식

섹션별 세부 요약

1. 문제 정의 및 배경

  • 제휴사 서버의 불안정한 응답, 테스트 데이터 확보 어려움, 신규 기능 개발 지연 등의 문제 발생
  • QA 및 서비스 출시 일정에 부정적 영향을 주는 상황 해결 필요

2. 기능적/비기능적 요구사항

  • 유저/제휴사/퍼널 단위로 mock 사용 여부 설정 가능
  • 동기/비동기 응답 지원, relay 서버 역할 수행, 유저 친화적 설정 인터페이스 제공
  • 기존 비즈니스 로직 변경 없이 mock 서버 연동 가능

3. mock 서버 구성 요소

  • 커스텀 헤더 주입, 설정 관리, 비동기 응답 지원, mock 데이터 생성, relay 서버 역할, 메신저봇 연동, 유연한 모듈화 구조
  • partner_metadata, partner_response, user_status DB 테이블을 통해 설정 관리

4. 헤더 주입 구현

  • RestTemplate: MockServerHeaderInjectionInterceptor를 통해 요청 헤더 자동 주입
  • WebClient: ExchangeFilterFunction을 활용한 헤더 주입 처리
  • @Profile("dev") 어노테이션으로 테스트 환경에서만 동작

5. 비동기 응답 처리

  • 예약 등록: API 호출 시 DB에 예약 정보 저장 (executeTs 기준)
  • 예약 실행: @Scheduled를 통해 1분 단위로 예약 확인 및 ThreadPoolTaskScheduler로 콜백 전송
  • reserveInternal 함수 내 lockExecutor.runOnce를 통한 동시성 관리

6. mock 응답 생성 흐름

  • 예약어 기반 템플릿 정의: "{{amount}}", "{{productId}}" 등 사용
  • 예약어 치환: JsonNode 순회를 통한 깊은 중첩 구조 치환
  • 상품명 → 원장 아이디 매핑: loan_product_id_property_names 메타데이터 기반 정확한 치환

7. relay 서버 역할

  • 유저가 mock 사용 시: getMockResponse()로 응답 생성
  • 제휴사 콜백 시: API Gateway 라우팅 변경으로 mock 서버에서 요청 처리 및 다시 신용대출 서버로 전달

8. 모듈화 및 확장성 설계

  • mock-server-api, mock-server-base, mock-server-serviceA, mock-server-serviceA-admin 모듈 구조
  • Multi DataSource 지원: Class 기반 정의 방식 채택 (base package, annotation 기반 방식 제외)
  • 프로퍼티 설정: application-{service}.properties 파일로 모듈별 설정 분리

결론

  • mock 서버는 테스트 환경에서 실제 서버와 동일한 동작을 시뮬레이션하여 QA 효율성 향상
  • Spring Boot의 RestTemplate/WebClient 인터셉터 기능과 @Scheduled를 활용한 비동기 테스트 구현
  • 모듈화 및 Multi DataSource 지원을 통해 제휴사 연동 서비스 확장성 강화