배경
- 설문 응답 제출 API는 설문이 진행 중인지 상태 확인, 질문/응답의 유효성 검증, 참여자 정보를 스냅샷으로 저장하기 위해 외부 API 호출이 필요하다.
- REST Client 기반으로 API 호출
- HikariCP Pool 10개
문제 상황
- 설문 응답 제출 시 설문/유저 정보를 불러오기 위해 외부 API를 두 번 호출한다.
- 동시에 30건 이상의 반복 요청만 발생해도 스레드/커넥션 풀 고갈로 병목이 생길 수 있다.
- 이 병목은 외부 API 호출 구간에서 집중적으로 발생할 가능성이 높다.
핵심 해결 방안
- 외부 API 호출에 캐시 적용
- 응답 제출 시마다 외부 API 호출 자체를 줄여 성능을 안정화한다.
캐싱 적용
동시 사용자 20명이 반복 요청
| 지표 항목 |
기존 |
캐싱 적용 |
| 총 처리량 |
534 |
22448 |
| 평균 응답 시간 |
6304ms |
50ms |
| 에러율 |
26.59% |
0% |
| TPS |
6.5 |
198.2 |
| 외부 API 호출 소요 시간 |
측정 불가 (다수 타임아웃 발생) |
약 10ms (캐시 히트시) |