Skip to content

[๐Ÿš€ ๋ฐฉํƒˆ์ถœ ์˜ˆ์•ฝ ์™ธ๋ถ€ API ์—ฐ๋™ 3๋‹จ๊ณ„] ํ‹ฐ๋‰ด ๋ฏธ์…˜ ์ œ์ถœํ•ฉ๋‹ˆ๋‹ค.#699

Open
JohnPrk wants to merge 5 commits into
woowacourse:johnprkfrom
JohnPrk:step5
Open

[๐Ÿš€ ๋ฐฉํƒˆ์ถœ ์˜ˆ์•ฝ ์™ธ๋ถ€ API ์—ฐ๋™ 3๋‹จ๊ณ„] ํ‹ฐ๋‰ด ๋ฏธ์…˜ ์ œ์ถœํ•ฉ๋‹ˆ๋‹ค.#699
JohnPrk wants to merge 5 commits into
woowacourse:johnprkfrom
JohnPrk:step5

Conversation

@JohnPrk

@JohnPrk JohnPrk commented Jun 26, 2026

Copy link
Copy Markdown

์ฒดํฌ ๋ฆฌ์ŠคํŠธ

  • ๋ฏธ์…˜์˜ ํ•„์ˆ˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ๋ชจ๋‘ ๊ตฌํ˜„ํ–ˆ๋‚˜์š”?
  • Gradle test๋ฅผ ์‹คํ–‰ํ–ˆ์„ ๋•Œ, ๋ชจ๋“  ํ…Œ์ŠคํŠธ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ํ†ต๊ณผํ–ˆ๋‚˜์š”?
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜๋‚˜์š”?

๋ฒ ์ด์Šค ์ฝ”๋“œ ์„ ํƒ ์ฒดํฌ

  • ์ด์ „ ๋ฏธ์…˜์˜ ๋‚ด ์ฝ”๋“œ์—์„œ ์‹œ์ž‘
  • ์ด์ „ ๋ฏธ์…˜์˜ ํŽ˜์–ด์˜ ์ฝ”๋“œ์—์„œ ์‹œ์ž‘

์–ด๋–ค ๋ถ€๋ถ„์— ์ง‘์ค‘ํ•˜์—ฌ ๋ฆฌ๋ทฐํ•ด์•ผ ํ• ๊นŒ์š”?

JohnPrk added 5 commits June 26, 2026 16:08
- capacity์™€ refillPerSec๋ฅผ ๊ฐ€์ง„ ํ† ํฐ ๋ฒ„ํ‚ท์„ ์™ธ๋ถ€ ์˜์กด์„ฑ ์—†์ด ์ถ”๊ฐ€
- ๋ณด์ถฉ๋Ÿ‰์„ ๋งˆ์ง€๋ง‰ ๋ณด์ถฉ ์ดํ›„ ๊ฒฝ๊ณผ ์‹œ๊ฐ„ ร— refillPerSec๋กœ ๊ณ„์‚ฐํ•˜๊ณ  capacity๋ฅผ ์ƒํ•œ์œผ๋กœ ์œ ์ง€
- tryConsume์œผ๋กœ ํ† ํฐ์„ 1๊ฐœ์”ฉ ์†Œ๋น„ํ•˜๊ณ  retryAfterSeconds๋กœ 1๊ฐœ๊ฐ€ ์ฐฐ ๋•Œ๊นŒ์ง€ ํ•„์š”ํ•œ ์ดˆ๋ฅผ ์˜ฌ๋ฆผ์œผ๋กœ ๋ฐ˜ํ™˜
- ์‹œ๊ฐ„ ์˜์กด์„ LongSupplier๋กœ ์ฃผ์ž…ํ•ด ๊ฐ€์งœ ์‹œ๊ณ„๋กœ ๊ฒฐ์ •์  ํ…Œ์ŠคํŠธํ•˜๊ณ  synchronized๋กœ ๋™์‹œ์„ฑ ๋ณด์žฅ
- HandlerInterceptor๋กœ preHandle์—์„œ tryConsume์ด ์‹คํŒจํ•˜๋ฉด ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ํ˜ธ์ถœํ•˜์ง€ ์•Š๊ณ  429์™€ Retry-After ํ—ค๋”๋กœ ์‘๋‹ต
- /reservations์™€ /payments ๊ฒฝ๋กœ์— ์ธํ„ฐ์…‰ํ„ฐ๋ฅผ ๋“ฑ๋กํ•˜๊ณ  ์ธ๋ฐ”์šด๋“œ ํ† ํฐ ๋ฒ„ํ‚ท์„ ๋นˆ์œผ๋กœ ๋ถ„๋ฆฌ
- capacityยทrefillPerSec๋ฅผ rate-limit.*๋กœ ์™ธ๋ถ€ํ™”ํ•ด ์ฝ”๋“œ ์ˆ˜์ • ์—†์ด ๊ฑฐ๋ถ€ ์‹œ์ ์„ ์กฐ์ •
- ํ† ์Šค ํ˜ธ์ถœ RestClient์— ClientHttpRequestInterceptor๋ฅผ ๋“ฑ๋กํ•ด 429๋ฉด Retry-After ์ดˆ๋งŒํผ ๋Œ€๊ธฐ ํ›„ ์žฌ์‹œ๋„
- Retry-After๊ฐ€ ์—†์œผ๋ฉด ๊ธฐ๋ณธ ๊ฐ„๊ฒฉ์œผ๋กœ ํด๋ฐฑํ•˜๊ณ  maxAttempts๋ฅผ ๋„˜์œผ๋ฉด ๋„๋ฉ”์ธ ์˜ˆ์™ธ๋กœ ์‹คํŒจํ•ด ๋ฌดํ•œ ์žฌ์‹œ๋„๋ฅผ ์ฐจ๋‹จ
- ๋Œ€๊ธฐ ๋™์ž‘์„ Sleeper๋กœ ์ฃผ์ž…ํ•ด ํ…Œ์ŠคํŠธ์—์„œ ์‹ค์ œ ๋Œ€๊ธฐ ์—†์ด ์žฌ์‹œ๋„ ํšŸ์ˆ˜์™€ ๊ฐ„๊ฒฉ์„ ๊ฒ€์ฆ
- maxAttemptsยท๊ธฐ๋ณธ ๊ฐ„๊ฒฉ์„ toss.retry.*๋กœ ์™ธ๋ถ€ํ™”
- ๊ฒŒ์ดํŠธ์›จ์ด RestClient์— ์ธํ„ฐ์…‰ํ„ฐ๋ฅผ ํ•˜๋‚˜ ๋” ๋“ฑ๋กํ•ด ํ˜ธ์ถœ ์ „ tryConsume์œผ๋กœ ํ† ํฐ์„ ์†Œ๋น„ํ•˜๊ณ  ์—†์œผ๋ฉด ์™ธ๋ถ€๋กœ ๋ณด๋‚ด์ง€ ์•Š๊ณ  OutboundRateLimitException์œผ๋กœ ๊ฑฐ๋ถ€
- ๋“ค์–ด์˜ค๋Š” ์ชฝ๊ณผ ๊ฐ™์€ TokenBucketRateLimiter๋ฅผ ๋ฐฉํ–ฅ๋งŒ ๋ฐ”๊ฟ” ์žฌ์‚ฌ์šฉํ•˜๊ณ  ๋‚˜๊ฐ€๋Š” ํ•œ๋„๋ฅผ outbound-rate-limit.*๋กœ ๋ถ„๋ฆฌ ์™ธ๋ถ€ํ™”
- ๊ฑฐ๋ถ€ ์‹œ 503๊ณผ Retry-After ํ—ค๋”๋กœ ์‘๋‹ตํ•˜๋„๋ก ์˜ˆ์™ธ ํ•ธ๋“ค๋Ÿฌ์™€ ProblemType์„ ์ถ”๊ฐ€
- ๋‹ค์ˆ˜ ๋™์‹œ ์š”์ฒญ์„ ๊ฐ€๋ณ๊ฒŒ ์ƒ์„ฑํ•˜๋„๋ก ๊ณ ์ • ์Šค๋ ˆ๋“œ ํ’€์„ ๊ฐ€์ƒ ์Šค๋ ˆ๋“œ ํ’€๋กœ ๊ต์ฒด
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant