Skip to content

7-plus-project/lucky7

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

65 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿฝ๏ธ Lucky7s Table ํ”Œ๋Ÿฌ์Šค ํŒ€ ํ”„๋กœ์ ํŠธ

๐Ÿ™‹โ€โ™€๏ธ ํ”Œ๋Ÿฌ์Šค ํŒ€ ํ”„๋กœ์ ํŠธ ์„ค๋ช…

  • ํ”Œ๋Ÿฌ์Šค ํŒ€ ํ”„๋กœ์ ํŠธ๋Š” Spring์„ ํ™œ์šฉํ•˜์—ฌ ์œ„์น˜ ๊ธฐ๋ฐ˜ ๋ง›์ง‘ ๊ฒ€์ƒ‰ ์›นํŽ˜์ด์ง€๋ฅผ ๊ตฌํ˜„ํ•œ ํŒ€ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.
  • ํŒ€์› : ์ด๋ฏผ์ •, ๋ช…๋ฏผ์ค€, ์ด๋ฒ”์„œ, ์ดํ˜ธ์ˆ˜, ์กฐ์˜ˆ์ธ
  • ๊ธฐ๊ฐ„ : 2025.03.24 - 2025.03.31

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

Lucky7s Table์€ ์‚ฌ์šฉ์ž์˜ ์œ„์น˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ง›์ง‘์„ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” ์›น ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. ๊ณตํ†ต ๊ด€์‹ฌ์‚ฌ์ธ โ€˜๋ง›์ง‘โ€™์„ ์ฃผ์ œ๋กœ ์‚ผ์•„, ๋‹ค์ด๋‹์ฝ”๋“œ ์‚ฌ์ดํŠธ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค:

  • ๊ฑฐ๋ฆฌ, ์Œ์‹ ์ข…๋ฅ˜, ํ‚ค์›Œ๋“œ ๊ธฐ๋ฐ˜ ๋ง›์ง‘ ๊ฒ€์ƒ‰
  • ์กฐํšŒ์ˆ˜๊ฐ€ ๋งŽ์€ ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์ œ๊ณต
  • ์œ„์น˜ ๊ธฐ๋ฐ˜ ์ •๋ณด ์ œ๊ณต์„ ํ†ตํ•œ ์‚ฌ์šฉ์ž ํŽธ์˜์„ฑ ํ–ฅ์ƒ
  • ๋„์ „์ ์ธ ๊ธฐ์ˆ  ์‹คํ—˜ ๋ฐ ์„ฑ๋Šฅ ์ตœ์ ํ™”

์—ญํ•  ๋ถ„๋‹ด

์ด๋ฆ„ ์—ญํ• 
์ด๋ฏผ์ • Store CRUD,์ผ๋ฐ˜ ๊ฒ€์ƒ‰ โ†’ Redis ์ ์šฉํ•œ ์„ฑ๋Šฅ ํ–ฅ์ƒ ๊ฒ€์ƒ‰ / Jmeter ์‚ฌ์šฉํ•œ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธGeoHash์™€ Redis ์ ์šฉํ•œ ์œ„์น˜ ๊ธฐ๋ฐ˜ ์กฐํšŒ
๋ช…๋ฏผ์ค€ ์ผ๋ฐ˜ ๊ฒ€์ƒ‰, ์ธ๊ธฐ ๊ฒ€์ƒ‰์–ด ๊ธฐ๋Šฅ, ๊ฒ€์ƒ‰ ์ธ๋ฑ์‹ฑ ๋ฐ ์ตœ์ ํ™”
์ด๋ฒ”์„œ Kakao Map API๋ฅผ ์ด์šฉํ•œ ์ฃผ์†Œ โ†’ ์ขŒํ‘œ ๋ณ€ํ™˜, ์œ„์น˜ ๊ธฐ๋ฐ˜ ์กฐํšŒ
์ดํ˜ธ์ˆ˜ JWT + Spring Security ์ธ์ฆ/์ธ๊ฐ€, ๋ฆฌ๋ทฐ CRUD, ์ž๋™์™„์„ฑ, ์ธ๊ธฐ ๊ฒ€์ƒ‰์–ด ๊ธฐ๋Šฅ
์กฐ์˜ˆ์ธ User CRUD, MySQL ๊ธฐ๋ฐ˜ ์œ„์น˜ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ

์ฃผ์š” ๊ธฐ๋Šฅ

์‚ฌ์šฉ์ž ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๊ด€๋ฆฌ

  • JWT + Spring Security ๊ธฐ๋ฐ˜ ์ธ์ฆ/์ธ๊ฐ€

์œ„์น˜ ๊ธฐ๋ฐ˜ ๋ง›์ง‘ ๊ฒ€์ƒ‰

  • Kakao Map API๋กœ ์ฃผ์†Œ โ†’ ์ขŒํ‘œ ๋ณ€ํ™˜
  • ์นดํ…Œ๊ณ ๋ฆฌ, ํ‚ค์›Œ๋“œ, ๊ฑฐ๋ฆฌ ๊ธฐ์ค€ ๋ง›์ง‘ ๊ฒ€์ƒ‰
  • ์กฐํšŒ์ˆ˜๊ฐ€ ๋งŽ์€ ์ˆœ์œผ๋กœ ์ •๋ ฌ

์ธ๊ธฐ ๊ฒ€์ƒ‰์–ด

  • Redis๋ฅผ ํ™œ์šฉํ•ด ์กฐํšŒ์ˆ˜ ๊ธฐ๋ฐ˜ ์ธ๊ธฐ ๊ฒ€์ƒ‰์–ด ๋ชฉ๋ก ์ œ๊ณต

๊ฒ€์ƒ‰์–ด ์ž๋™์™„์„ฑ

  • ๊ฒ€์ƒ‰์–ด ์ ‘๋‘์‚ฌ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ž๋™์™„์„ฑ ๊ธฐ๋Šฅ ์ œ๊ณต
  • ์‚ฌ์ „์ˆœ ์ •๋ ฌ๋กœ ์‚ฌ์šฉ์ž ํŽธ์˜์„ฑ ํ–ฅ์ƒ

๋ฆฌ๋ทฐ ๊ธฐ๋Šฅ

  • ๋ฆฌ๋ทฐ ๋“ฑ๋ก, ์กฐํšŒ, ์‚ญ์ œ ๊ฐ€๋Šฅ

๐Ÿ“‘ ์ง„ํ–‰ ๋ฐ ํšŒ์˜ ๊ธฐ๋ก : Lucky7 ๋…ธ์…˜์—์„œ ์ง„ํ–‰


๐Ÿ“š STACKS


  • Language & Framework: Java, Spring Boot
  • Database: MySQL
  • Cache: Redis
  • Security: Spring Security, JWT
  • API: Kakao Map API
  • Version Control: Git, GitHub




๐Ÿ‘ฉ๐Ÿปโ€ API ๋ช…์„ธ

ํšŒ์› API

แ„’แ…ฌแ„‹แ…ฏแ†ซ API

๊ฐ€๊ฒŒ API

แ„€แ…กแ„€แ…ฆ API

๊ฒ€์ƒ‰ API

แ„€แ…ฅแ†ทแ„‰แ…ขแ†จ API

๋ฆฌ๋ทฐ API

แ„…แ…ตแ„‡แ…ฒ API




๐Ÿ‘ฉ ERD

ERD




์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ

์ผ๋ฐ˜ ๊ฒ€์ƒ‰ vs Redis ์บ์‹ฑ ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ ๋น„๊ต

ํ•ญ๋ชฉ ์ผ๋ฐ˜ ๊ฒ€์ƒ‰ Redis ๊ฒ€์ƒ‰
ํ‰๊ท  ์‘๋‹ต ์‹œ๊ฐ„ 35ms 5ms
์„ฑ๋Šฅ ํ–ฅ์ƒ๋ฅ  ์•ฝ 87% ๊ฐœ์„ 
  • ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ: 100 Users / Ramp-up 60
  • Redis ๊ฒ€์ƒ‰์€ ์บ์‹œ๊ฐ€ ๋ˆ„์ ๋ ์ˆ˜๋ก ๋” ํฐ ์„ฑ๋Šฅ ํ–ฅ์ƒ ๊ธฐ๋Œ€ ๊ฐ€๋Šฅ

๊ฒ€์ƒ‰ ์„ฑ๋Šฅ ์ตœ์ ํ™”

๋Œ€์ƒ ์ฟผ๋ฆฌ

  • ํ•ต์‹ฌ ๊ธฐ๋Šฅ์ธ ๊ฒ€์ƒ‰ ์ฟผ๋ฆฌ๋ฅผ ์„ฑ๋Šฅ ๊ฐœ์„  ๋Œ€์ƒ์œผ๋กœ ์„ ์ •

์ตœ์ ํ™” ๋ฐฉ๋ฒ•

  • FULLTEXT INDEX์™€ Ngram์„ ํ™œ์šฉํ•œ ์œ ์‚ฌ๋„ ๊ธฐ๋ฐ˜ ๊ฒ€์ƒ‰
  • ๊ฒ€์ƒ‰์–ด์™€์˜ ์œ ์‚ฌ๋„(score)๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ
  • ์ •๋ ฌ ๊ธฐ์ค€ ์ ์šฉ ์ „ํ›„ ๋น„๊ต:
    ํ•ญ๋ชฉ ์ •๋ ฌ ๋ฏธ์ ์šฉ ์ •๋ ฌ ์ ์šฉ
    ์‘๋‹ต ์‹œ๊ฐ„ 288ms 122ms
    ์„ฑ๋Šฅ ํ–ฅ์ƒ๋ฅ  ์•ฝ 57% ๊ฐœ์„ 
-- Ngram ๊ธฐ๋ฐ˜ ์ธ๋ฑ์Šค ์˜ˆ์‹œ DDL
ALTER TABLE store
ADD FULLTEXT(name, category)
WITH PARSER ngram;

โœ… ์™œ ๊ฒ€์ƒ‰ API์— Cache๋ฅผ ์ ์šฉํ•˜๋Š”๊ฐ€?

  • ๊ฒ€์ƒ‰ ์š”์ฒญ์ด ๋งŽ์„ ๊ฒฝ์šฐ, DB ๋ถ€ํ•˜๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด

  • ๊ฐ™์€ ๊ฒ€์ƒ‰์–ด์— ๋Œ€ํ•œ ๋ฐ˜๋ณต์ ์ธ ์กฐํšŒ๋ฅผ ๋น ๋ฅด๊ฒŒ ์‘๋‹ตํ•˜๊ธฐ ์œ„ํ•ด

  • API ์‘๋‹ต ์†๋„๋ฅผ ๊ฐœ์„ ํ•˜์—ฌ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด


โœ… ์™œ Redis๋ฅผ ์„ ํƒํ•˜๋Š”๊ฐ€?

  • Redis๋Š” ์˜์†์„ฑ ์ง€์›, ๋‹ค์–‘ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ(Hash, List, Sorted Set ๋“ฑ) ์ œ๊ณต

  • Redis๋Š” ๋ฐ์ดํ„ฐ ๋งŒ๋ฃŒ ์„ค์ •, TTL ๊ด€๋ฆฌ๊ฐ€ ์šฉ์ดํ•˜์—ฌ ๊ฒ€์ƒ‰์–ด ์บ์‹ฑ์— ์ ํ•ฉ


โœ… Redis์—์„œ ์‚ฌ์šฉํ•  ์ž๋ฃŒ๊ตฌ์กฐ

  • Sorted Set (ZSET)
    • ๊ฒ€์ƒ‰์–ด๋ฅผ ํ‚ค๋กœ ํ•˜๊ณ , ๊ฒ€์ƒ‰ ํšŸ์ˆ˜๋ฅผ ์ ์ˆ˜(Score)๋กœ ์„ค์ •ํ•˜์—ฌ ์ธ๊ธฐ ๊ฒ€์ƒ‰์–ด ์ˆœ์œ„ ๊ด€๋ฆฌ
    • ZINCRBY ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒ€์ƒ‰์–ด ๊ฒ€์ƒ‰ ์‹œ๋งˆ๋‹ค ์ ์ˆ˜ ์ฆ๊ฐ€
    • ZREVRANGE๋กœ ์ธ๊ธฐ ๊ฒ€์ƒ‰์–ด ์ˆœ์œ„ ์กฐํšŒ

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5

Languages