timeout을 걸었는데, 왜 PG 조회는 계속 기다렸을까?
·
루퍼스
들어가며포인트로 결제하던 주문을 PG 결제로 바꾸자, 결제 결과의 원본이 우리 DB 밖으로 나갔습니다.PG가 결제를 받았다는 응답(202 PENDING)은 성공이 아니고, 최종 결과는 PG에 다시 물어봐야 알 수 있습니다. 그래서 주문을 확정하는 길목에는 항상 PG 거래 조회가 있습니다. 조회 응답이 느려지는 상황을 재현하자, HTTP timeout을 걸었는데도 같은 조회가 매번 PG로 나가 timeout까지 기다렸습니다.이 글은 그 문제에서 시작해 Circuit Breaker, Retry, RateLimiter, TimeLimiter를 하나씩 추가해 실제 PG 호출 수와 기다린 시간이 어떻게 바뀌는지 측정해 기록했습니다. 각 정책이 해결하는 문제와, 정책을 붙인 뒤 새로 생긴 문제를 순서대로 확인해보겠..