Skip to content

earlybird-ticket/backend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

567 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Earlybird-Ticket

ServiceMainImage

๐Ÿ“ ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

  • ์ €ํฌ ํ”„๋กœ์ ํŠธ๋Š” 1๋งŒ๋ช…์˜ ๋™์‹œ ์˜ˆ๋งค ์š”์ฒญ์„ ์•ˆ์ •์ ์œผ๋กœ ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ‹ฐ์ผ“ ์˜ˆ๋งค ์‹œ์Šคํ…œ ๊ตฌ์ถ•์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ณ ๊ฐ์€ ์›น ์‚ฌ์ดํŠธ์—์„œ VIP ์„ ์˜ˆ๋งค ์™€ ์ผ๋ฐ˜ ์˜ˆ๋งค๋ฅผ ํ†ตํ•ด ํ‹ฐ์ผ“ ์˜ˆ๋งค๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ณ , ์ฟ ํฐ์„ ๋ฐœ๊ธ‰ ๋ฐ›์•„ ํ• ์ธ ๋œ ๊ฐ€๊ฒฉ์œผ๋กœ ๊ฒฐ์ œ๋ฅผ ์ง„ํ–‰ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿšฉ ํ”„๋กœ์ ํŠธ ๋ชฉํ‘œ

๋ชฉํ‘œ ํŠธ๋ž˜ํ”ฝ

  • ๊ธฐ์กด ์„œ๋น„์Šค(์ธํ„ฐํŒŒํฌ) ์ฐธ๊ณ ํ•˜์—ฌ MAU 100๋งŒ๋ช…์œผ๋กœ ์„ค์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
    • 10,000์„์˜ ์ขŒ์„ ๊ธฐ์ค€ 5๋ถ„ ๋‚ด ๋งค์ง„๋˜๋ฉฐ ์˜คํ”ˆ ์งํ›„ 10์ดˆ ์ด๋‚ด์˜ ์ „์ฒด ์š”์ฒญ์˜ 20% ๋ชฐ๋ฆฐ๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ํŠธ๋กœํŠธ ์ฝ˜์„œํŠธ ์ฐธ๊ณ ํ•˜์—ฌ ๊ฒฝ์Ÿ๋ฅ  10:1์œผ๋กœ ์˜ˆ์ƒํ–ˆ์œผ๋ฉฐ ์ธ๋‹น ํ‰๊ท  20๊ฑด์˜ ์žฌ์‹œ๋„๊ฐ€ ์ด๋ฃจ์–ด์ง„๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
ํ•ญ๋ชฉ ๊ฐ’
์‹ค์ œ ์˜ˆ๋งค ์„ฑ๊ณต ์ˆ˜ 10,000๊ฑด
์ „์ฒด ์š”์ฒญ ์ˆ˜ 2,000,000๊ฑด
ํ‰๊ท  TPS 6,667 TPS
๋ฒ„์ŠคํŠธ TPS 40,000 TPS

ํ‹ฐ์ผ“ ์˜ˆ๋งค ๊ณผ์ •

  • ํ‹ฐ์ผ“ ์˜ˆ๋งค Sequence Flow

    SequenceDiagram

๐Ÿ“Œ ์ฃผ์š”๊ธฐ๋Šฅ

๐Ÿ’ณ VIP ์„ ์˜ˆ๋งค

VIP ๊ณ ๊ฐ์„ ์œ„ํ•œ ์„ ์˜ˆ๋งค ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์›ํ•˜๋Š” ์ขŒ์„ ์„ ์ ์— ์‹คํŒจํ–ˆ์„ ๊ฒฝ์šฐ, ํ•ด๋‹น ์ขŒ์„์— ๋Œ€๊ธฐ์—ด์— ๋“ฑ๋กํ•˜์—ฌ ์ˆœ๋ฒˆ์„ ๊ธฐ๋‹ค๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Redis์˜ Sorted Set์„ ํ™œ์šฉํ•ด ๊ณ ์„ฑ๋Šฅ ๋Œ€๊ธฐ์—ด ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ–ˆ์œผ๋ฉฐ, ์˜ˆ์•ฝ ์‹คํŒจ๋‚˜ ์ทจ์†Œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด Kafka๋ฅผ ํ†ตํ•ด ์ขŒ์„ ๋ฐ˜ํ™˜ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋‹ค์Œ ์ˆœ๋ฒˆ์˜ ๊ณ ๊ฐ์„ ์ž…์žฅ ์‹œํ‚ค๋Š” ๋ฐฉ์‹์˜ ์„œ๋น„์Šค๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

๐ŸŽŸ๏ธ ์ผ๋ฐ˜ ์˜ˆ๋งค

์ผ๋ฐ˜ ๊ณ ๊ฐ์„ ์œ„ํ•œ ์ผ๋ฐ˜ ์˜ˆ๋งค ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ขŒ์„ ๋งต์—์„œ ์›ํ•˜๋Š” ์ขŒ์„์„ ์„ ํƒํ•œ ๋’ค, ์„ ์  ๊ฐ€๋Šฅ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๊ณ , ์„ ์ ์— ์„ฑ๊ณตํ•˜๋ฉด ๊ฒฐ์ œ๋ฅผ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ˆ˜๋งŽ์€ ์š”์ฒญ์ด ๋™์‹œ์— ๋ชฐ๋ฆฌ๋Š” ํ™˜๊ฒฝ์—์„œ๋„ ๋น ๋ฅธ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด,

Redis๋ฅผ ์‚ฌ์šฉํ•ด ์ขŒ์„ ์„ ์  ์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ , Lua ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ†ตํ•ด ์›์ž์„ฑ์„ ํ™•๋ณดํ•˜์—ฌ ์•ˆ์ •์ ์ธ ์˜ˆ๋งค ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’Œ ์ฟ ํฐ

๊ณ ๊ฐ์—๊ฒŒ ๋‹ค์–‘ํ•œ ์ฟ ํฐ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

ํŠนํžˆ, ์ƒ์ผ ๊ธฐ๋… ํ• ์ธ ์ฟ ํฐ์„ ๋ฐœ๊ธ‰ํ•˜์—ฌ, ํ• ์ธ๋œ ๊ฐ€๊ฒฉ์œผ๋กœ ๊ฒฐ์ œํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Spring Batch๋ฅผ ์ ์šฉํ•ด ์ƒ์ผ ์ฟ ํฐ์„ ์ผ๊ด„ ๋ฐœ๊ธ‰ํ•˜๊ณ ,

๊ธฐ๊ฐ„์ด ์ง€๋‚œ ์ฟ ํฐ์€ ์ž๋™์œผ๋กœ ํšŒ์ˆ˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’ฐ ๊ฒฐ์ œ

ํ† ์ŠคํŽ˜์ด(Toss Payments)๋ฅผ PG์‚ฌ๋กœ ์—ฐ๋™ํ•˜์—ฌ ๊ฒฐ์ œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ฟ ํฐ์„ ์ ์šฉํ•ด ํ• ์ธ๋œ ๊ฐ€๊ฒฉ์œผ๋กœ ๊ฒฐ์ œํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์„ ์ ํ•œ ์ขŒ์„์€ 10๋ถ„ ์ด๋‚ด์— ๊ฒฐ์ œ๋ฅผ ์™„๋ฃŒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ์ œ ์‹œ๊ฐ„ ์ œํ•œ์„ ์œ„ํ•ด, Redis์˜ TTL๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•ด ์˜ˆ๋งค ํƒ€์ž„์•„์›ƒ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜์—ฌ,

์‹œ๊ฐ„ ์ดˆ๊ณผ ์‹œ ์ขŒ์„ ์„ ์ ์ด ์ทจ์†Œ๋˜๋„๋ก ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆโ€ ํŒ€์› ์†Œ๊ฐœ


์ตœ์šฉ์„


์ด์„ ๋กœ


๊ถŒ์ˆ˜์—ฐ


์ •๊ท ๋ฏผ

โš™๏ธ ํ”„๋กœ์ ํŠธ ์•„ํ‚คํ…์ฒ˜

๐Ÿ“„ MSA ํ†ต์‹  ์•„ํ‚คํ…์ฒ˜

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2025-05-16 แ„‹แ…ฉแ„’แ…ฎ 2 53 52

๐Ÿ’ป ๊ธฐ์ˆ  ์Šคํƒ

โš’๏ธ ์„ฑ๋Šฅ ๊ฐœ์„  ์‚ฌํ•ญ

Kafka ์„ฑ๋Šฅ ๊ฐœ์„ 


๋‹จ์ผ ํŒŒํ‹ฐ์…˜, ๋‹จ์ผ ์ปจ์Šˆ๋จธ -> 500๋ช… ๊ฒฐ๊ณผ

50 ํŒŒํ‹ฐ์…˜, 50 ์ปจ์Šˆ๋จธ -> 6500๋ช… ๊ฒฐ๊ณผ

ํ‹ฐ์ผ“ ์˜ˆ๋งค ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ

1. Redisson ๋ถ„์‚ฐ๋ฝ + DB Transaction


1000๋ช…

3000๋ช…

6500๋ช…

2. Redis + Lua Script


1000๋ช…

3000๋ช…

6500๋ช…

๐Ÿ’ฃ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…

Loadtest

์ขŒ์„ ์กฐํšŒ ๊ฒฝ๋กœ ์ตœ์ ํ™”(A/B/C-1/C-2A), venue ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ, ์ „์ฒด ์˜ˆ๋งค ํ”Œ๋กœ์šฐ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๊ด€๋ จ ์ •๋ฆฌ๋Š” loadtest/README.md์™€ wiki ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ .

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages