실시간 가격·면책 산정 시스템
가동율·유휴율 기반 수요에 맞춰 지역·차종별 가격을 실시간으로 산정하는 동적 가격 서버.
- gRPC
- FastAPI
- NumPy
- EKS
- Argo CD
- Locust
Situation
지역·차종별 수요는 시간대에 따라 크게 달라지는데, 요금은 고정에 가까워 유휴 차량이 남거나 반대로 인기 지역·차종은 빠르게 소진됐습니다. 가동율·유휴율 기반으로 수요에 맞춰 지역·차종별 가격을 실시간으로 조정하는 동적 가격 시스템이 필요했습니다.
Task
예약 시점마다 지역·차종별 가동율·유휴율을 반영해 요금을 산정하고, 예약 화면에 바로 보여줄 수 있을 만큼 낮은 지연으로 응답해야 했습니다. 고정된 출시일에 맞춰 피크 트래픽에서도 응답 시간이 유지되어야 했고, 용량은 감이 아니라 측정한 수치로 정해야 했습니다.
Action
지역·차종 단위로 가동율·유휴율을 집계한 수요 지표를 입력으로, 기준 요금에 조정 계수를 곱해 최종 가격을 계산하는 산정 로직을 만들었습니다. 조정 폭·상하한은 설정으로 뽑아 정책 변경이 배포 없이 가능하도록 했습니다.
내부 서비스 간 통신이고 브라우저에서 직접 부를 일이 없어 gRPC를 썼습니다. 페이로드가 작고 스키마가 강제된다는 점이 컸습니다. 대신 curl로 찍어볼 수 없어 디버깅이 불편한 건 감수했습니다.
가격 계산이 지역·차종 조합만큼 반복되기 때문에, 파이썬 반복문을 NumPy 벡터 연산으로 바꿨습니다. 체감이 아니라 부하 테스트로 전후를 비교했습니다.
배포는 GitOps로 애플리케이션 저장소와 설정 저장소를 나눴습니다. 가격 정책 튜닝이 애플리케이션 배포와 분리돼 빠르게 반영될 수 있게 했습니다.
Result
- 지역·차종별 동적 가격을 예약 시점에 실시간으로 반영
- 응답 시간 약 200ms → 130ms (NumPy 벡터화, 약 35% 단축)
- 부하 테스트에서 예상 피크의 2배 트래픽까지 오류율 0.1% 미만
- 측정한 처리량에서 파드 수를 역산해 HPA 구성 — 감으로 잡았을 때보다 리소스 절감
- 가격 정책 변경은 설정 저장소 커밋만으로 반영, 롤백도 커밋 되돌리기 한 번
- 남은 최적화는 출시 후로 이관, 실제 트래픽에서 이슈 없이 2주 내 완료