FEATURE 01 구현 완료
주소 정제
다양한 형식의 배송지 주소를 검색에 사용할 수 있는 형태로 정리합니다.
주소 정제 처리 흐름
- 주소 입력불규칙한 표기
- 패턴 정제정규식 적용
- 조건 구성주소 요소 추출
- 좌표 조회검색 결과 반환
PROBLEM문제
주소마다 공백과 기호, 번지 표기 등이 달라 입력값을 그대로 검색 조건에 사용하기 어려웠습니다.
SOLUTION해결
정규식 기반 정제와 주소 요소 파싱을 구현하고, 도로명·지번 주소의 유형에 맞춰 검색 조건을 구성했습니다.
설계 이유와 트레이드오프
주소 유형에 맞는 검색 조건 구성
입력에서 검색 가능한 주소 요소를 추출하고 QueryDSL로 조건을 조합했습니다. 입력 패턴이 늘어날수록 정제 규칙과 검색 조건의 예외 사례를 함께 관리해야 합니다.
VALIDATION구현 결과와 테스트
불규칙한 주소 표기를 정리하고 유형별 조회 조건을 적용해 배송지 좌표 조회의 정확도를 개선했습니다.
FEATURE 02 구현 완료
쿼리·인덱스
주소 검색 조건에 맞춰 쿼리와 인덱스를 개선했습니다.
쿼리·인덱스 처리 흐름
- 검색 조건조회 패턴 분석
- 병목 분석쿼리 실행 계획
- 조회 개선쿼리 · 인덱스
- 응답 비교개선 효과 측정
PROBLEM문제
주소 조회 요청이 집중될 때 쿼리 지연이 전체 API 응답 시간에 영향을 주었습니다.
SOLUTION해결
검색 패턴과 실행 계획을 분석하고 쿼리 구조와 인덱스를 조정했습니다.
설계 이유와 트레이드오프
실제 검색 조건을 기준으로 최적화
자주 사용하는 조건과 데이터 접근 경로를 기준으로 인덱스를 구성했습니다. 조회 성능을 높이는 대신 쓰기와 인덱스 유지 비용이 늘어나므로 인덱스 수보다 사용 패턴을 우선했습니다.
VALIDATION구현 결과와 테스트
쿼리·인덱스 개선으로 평균 응답 시간을 약 1,200ms에서 300ms 수준으로 단축했습니다. 최근 재측정에서는 평균 200~300ms의 응답 시간을 확인했습니다.
FEATURE 03 구현 완료
커넥션 풀
커넥션 대기와 타임아웃을 분석하고 부하 조건에서 설정을 조정했습니다.
커넥션 풀 처리 흐름
- 지연 발생대기 · 타임아웃
- 원인 분석Scouter · 로그
- 부하 재현JMeter
- 설정 조정HikariCP
PROBLEM문제
요청량이 증가하면서 DB 커넥션 풀이 고갈되고 타임아웃이 발생했습니다.
SOLUTION해결
Scouter와 로그로 커넥션 사용 흐름을 분석하고 JMeter로 문제를 재현했습니다. 이후 풀 크기와 타임아웃 설정을 조정했습니다.
설계 이유와 트레이드오프
DB 처리 능력과 커넥션 대기 함께 고려
커넥션 수를 늘리면 대기는 줄일 수 있지만 DB의 동시 처리 부담도 커집니다. 쿼리 수행 시간과 커넥션 점유 상태를 함께 살펴 설정을 조정했습니다.
VALIDATION구현 결과와 테스트
부하 테스트에서 TPS 200 수준의 안정적인 처리를 확인하고 커넥션 대기로 발생하던 타임아웃을 개선했습니다.