๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ–ฅ๏ธ Cheer-haํ”„๋กœ์ ํŠธ/โœ๏ธ TIL

[ TIL ] ์ตœ์ข… ํ”„๋กœ์ ํŠธ_Day 17

by carrot0911 2025. 2. 27.

์˜ค๋Š˜ ์ง„ํ–‰ํ•œ ๋‚ด์šฉ๋“ค ๐Ÿง 

์ง€๊ธˆ๊นŒ์ง€ ์ง„ํ–‰ํ•œ ๋‚ด์šฉ๋“ค ์ •๋ฆฌ

V1 (MVP ๊ตฌํ˜„)

1. ์ „์ฒด ์ฑ„์šฉ ๊ณต๊ณ  ์กฐํšŒ API

  • ๊ธฐ๋Šฅ
    • ์‚ฌ์šฉ์ž๊ฐ€ ์ „์ฒด ์ฑ„์šฉ ๊ณต๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๊ณ  ํ•„ํ„ฐ๋ง ๋ฐ ๊ฒ€์ƒ‰์–ด๋ฅผ ํ†ตํ•ด ํšจ์œจ์ ์œผ๋กœ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์„ธ๋ถ€ ์‚ฌํ•ญ
๊ธฐ๋Šฅ ์„ค๋ช…
์ „์ฒด ๋ฐ์ดํ„ฐ ์กฐํšŒ ๋ณ„๋„์˜ ๊ฒ€์ƒ‰์–ด๋‚˜ ํ•„ํ„ฐ ์กฐ๊ฑด ์—†์ด ๋ชจ๋“  ์ฑ„์šฉ ๊ณต๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํ•„ํ„ฐ๋ง์„ ํ†ตํ•œ ๋ฐ์ดํ„ฐ ์กฐํšŒ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ์กฐ๊ฑด์— ๋”ฐ๋ผ ์กฐ๊ฑด์„ ์„ค์ •ํ•˜์—ฌ ์ฑ„์šฉ ๊ณต๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
- ํ•„ํ„ฐ ์กฐ๊ฑด: ์ง€์—ญ, ๊ณ ์šฉ ํ˜•ํƒœ, ํ•™๋ ฅ, ์ตœ์†Œ/์ตœ๋Œ€ ๊ฒฝ๋ ฅ, ์ฑ„์šฉ ์‹œ์ž‘/๋งˆ๊ฐ ๊ธฐ๊ฐ„, ์ž๊ฒฉ ์š”๊ฑด
๊ฒ€์ƒ‰์–ด๋ฅผ ํ†ตํ•œ ๋ฐ์ดํ„ฐ ์กฐํšŒ ํŠน์ • ๊ฒ€์ƒ‰์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์ฑ„์šฉ ๊ณต๊ณ  ์ œ๋ชฉ์„ ๊ธฐ์ค€์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜์—ฌ ๊ด€๋ จ ์ฑ„์šฉ ๊ณต๊ณ ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฐ์ดํ„ฐ ์ •๋ ฌ ์ฑ„์šฉ ๊ณต๊ณ ๋Š” ์ตœ์‹  ๋“ฑ๋ก์ˆœ(createdAt DESC)์œผ๋กœ ์ •๋ ฌ๋ฉ๋‹ˆ๋‹ค.
ํŽ˜์ด์ง€๋„ค์ด์…˜ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋„๋ก ํŽ˜์ด์ง€ ๋‹จ์œ„๋กœ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ์˜ˆ์™ธ ์ฒ˜๋ฆฌ
์ƒํ™ฉ ์‘๋‹ต ์ฝ”๋“œ
์ž˜๋ชป๋œ ํ•„ํ„ฐ๋ง ๊ฐ’ ์ž…๋ ฅ 400 Bad Request

2. ์ตœ๊ทผ ๊ธฐ๋ก ๊ฒ€์ƒ‰ ์กฐํšŒ API

  • ๊ธฐ๋Šฅ
    • ์‚ฌ์šฉ์ž๊ฐ€ ์ตœ๊ทผ ๊ฒ€์ƒ‰ํ•œ ๊ธฐ๋ก์„ ์ €์žฅํ•˜๊ณ , ์ด๋ฅผ ์ตœ์‹  ์ˆœ์œผ๋กœ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
    • ๋™์ผํ•œ ๊ฒ€์ƒ‰์–ด๋ฅผ ๋ฐ˜๋ณต ์ž…๋ ฅํ•˜๋Š” ๊ฒฝ์šฐ ์ค‘๋ณต ์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ์ตœ์‹  ๊ฒ€์ƒ‰์–ด๊ฐ€ ํ•ญ์ƒ ์ƒ์œ„์— ๋…ธ์ถœ๋˜๋„๋ก ์„ค๊ณ„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ์„ธ๋ถ€ ์‚ฌํ•ญ
    ๊ธฐ๋Šฅ ์„ค๋ช…
    ๊ฒ€์ƒ‰์–ด ์ €์žฅ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๊ฒ€์ƒ‰์–ด๋ฅผ DB์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
    ์ตœ๊ทผ ๊ฒ€์ƒ‰์–ด ์กฐํšŒ ์‚ฌ์šฉ์ž๊ฐ€ ์ตœ๊ทผ ์ž…๋ ฅํ•œ ๊ฒ€์ƒ‰์–ด ๋ชฉ๋ก์„ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    ์ค‘๋ณต ์ฒ˜๋ฆฌ ๋™์ผํ•œ ๊ฒ€์ƒ‰์–ด๋ฅผ ๋‹ค์‹œ ์ž…๋ ฅํ•˜๋ฉด ๊ธฐ์กด ๊ฒ€์ƒ‰์–ด๋ฅผ ์ตœ์‹  ๊ฒ€์ƒ‰์–ด๋กœ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
    ์ •๋ ฌ ๊ฒ€์ƒ‰์–ด๋Š” ์ €์žฅ๋œ ์ตœ์‹ ์ˆœ(createdAt DESC)์œผ๋กœ ์ •๋ ฌ๋ฉ๋‹ˆ๋‹ค.
  • ์˜ˆ์™ธ ์ฒ˜๋ฆฌ
    ์ƒํ™ฉ ๋ฐ˜ํ™˜ ์„ค๋ช…
    ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์—†์Œ ๋นˆ ๋ฐฐ์—ด ๋ฐ˜ํ™˜ ์‚ฌ์šฉ์ž์˜ ์ตœ๊ทผ ๊ฒ€์ƒ‰์–ด ๊ธฐ๋ก์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ

V2 (์„ฑ๋Šฅ ๊ฐœ์„  ๋ฐ Elasticsearch ์„ฑ๋Šฅ ํ™•์ธ)

1. ์ „์ฒด ํŽ˜์ด์ง€ ์กฐํšŒ ์„ฑ๋Šฅ ๊ฐœ์„ 

  • ๊ธฐ๋Šฅ
    • ํ•„ํ„ฐ๋ง์„ ํ†ตํ•œ ์ฑ„์šฉ ๊ณต๊ณ  ์กฐํšŒ ์‹œ ๋ฐ์ดํ„ฐ ์กฐํšŒ ์†๋„๋ฅผ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์ธ๋ฑ์Šค๋ฅผ ์ ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.
    • ๋‹จ์ผ ์ธ๋ฑ์Šค์™€ ๋ณตํ•ฉ ์ธ๋ฑ์Šค๋ฅผ ๊ฐ๊ฐ ์‹คํ—˜ํ•˜์—ฌ ์„ฑ๋Šฅ์„ ๋น„๊ตํ•˜๊ณ , ์ตœ์ ์˜ ์ธ๋ฑ์Šค ์ „๋žต์„ ๊ฒฐ์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ์ฃผ์š” ๊ฐœ์„  ์‚ฌํ•ญ
    ์ ์šฉ ๋ฐฉ์‹ ์„ค๋ช…
    ๋‹จ์ผ ์ธ๋ฑ์Šค ์ ์šฉ ๊ฐœ๋ณ„ ์ปฌ๋Ÿผ์— ์ธ๋ฑ์Šค๋ฅผ ์ ์šฉํ•˜๊ณ  ์ฟผ๋ฆฌ ์‹คํ–‰ ์†๋„๋ฅผ ๋น„๊ต ๋ถ„์„ํ–ˆ์Šต๋‹ˆ๋‹ค.
    ex) location, employmentType, minExperienceYears, maxExperienceYears ๋“ฑ
    ๋ณตํ•ฉ ์ธ๋ฑ์Šค ์ ์šฉ ์‚ฌ์šฉ์ž๊ฐ€ ์ž์ฃผ ํ•จ๊ป˜ ์กฐํšŒํ•˜๋Š” ์ปฌ๋Ÿผ์„ ๋ฌถ์–ด์„œ ๋ณตํ•ฉ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์„ฑ๋Šฅ ์ฐจ์ด๋ฅผ ๋น„๊ต ๋ถ„์„ํ–ˆ์Šต๋‹ˆ๋‹ค.
    ex) (hiringStartAt, hiringEndAt), (minExperienceYears, maxExperienceYears)
  • ๋ชฉํ‘œ
    • ์ฟผ๋ฆฌ ์„ฑ๋Šฅ ์ตœ์ ํ™”
      • MySQL์—์„œ WHERE ์กฐ๊ฑด์„ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋„๋ก ํŠœ๋‹
      • ๋ถˆํ•„์š”ํ•œ Full Table Scan์„ ์ค„์ด๊ณ , Index Scan์„ ์ตœ์ ํ™”
    • ์ฟผ๋ฆฌ ๋น„์šฉ ๊ฐ์†Œ
      • ์ตœ์ ์˜ ์ธ๋ฑ์Šค๋ฅผ ์„ ์ •ํ•˜์—ฌ DB ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ๋Ÿ‰์„ ๊ฐ์†Œ
    • ์กฐํšŒ ์†๋„ ๊ฐœ์„ 
      • ์‹ค์ œ API ์‘๋‹ต ์‹œ๊ฐ„์„ ๋น„๊ตํ•˜์—ฌ ๊ฐœ์„  ํšจ๊ณผ ํ™•์ธ

2. ์ตœ๊ทผ ๊ธฐ๋ก ๊ฒ€์ƒ‰ ์กฐํšŒ ์„ฑ๋Šฅ ๊ฐœ์„ 

  • ๊ธฐ๋Šฅ
    • ์ตœ๊ทผ ๊ฒ€์ƒ‰์–ด ์กฐํšŒ ์‹œ ์‘๋‹ต ์†๋„๋ฅผ ๊ฐœ์„ ํ•˜๊ณ  DB ๋ถ€ํ•˜๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด Redis ์บ์‹ฑ์„ ์ ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.
    • ์ด๋ฅผ ํ†ตํ•ด ๋น ๋ฅธ ๊ฒ€์ƒ‰์–ด ์กฐํšŒ ์„ฑ๋Šฅ์„ ๋ณด์žฅํ•˜๋ฉด์„œ, MySQL์˜ ๋ถˆํ•„์š”ํ•œ ์กฐํšŒ ๋ถ€๋‹ด์„ ์ตœ์†Œํ™”ํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์ตœ์ ํ™”ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ์ฃผ์š” ๊ฐœ์„  ์‚ฌํ•ญ
    ์ ์šฉ ๋ฐฉ์‹ ์„ค๋ช…
    Redis ์บ์‹œ ์ ์šฉ ๊ธฐ์กด์—๋Š” ์‚ฌ์šฉ์ž์˜ ์ตœ๊ทผ ๊ฒ€์ƒ‰์–ด๋ฅผ MySQL์—์„œ ์ง์ ‘ ์กฐํšŒํ–ˆ์ง€๋งŒ, Redis๋ฅผ ํ™œ์šฉํ•œ ์บ์‹ฑ ๊ธฐ๋ฒ•์„ ๋„์ž…ํ•˜์—ฌ ์กฐํšŒ ์†๋„๋ฅผ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.
    Redis Sorted Set ํ™œ์šฉ ์‚ฌ์šฉ์ž๋ณ„ ๊ฒ€์ƒ‰์–ด ๋ชฉ๋ก์„ Redis์˜ Sorted Set ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ๊ด€๋ฆฌํ•˜์—ฌ, ์ตœ์‹  ๊ฒ€์ƒ‰์–ด๋ฅผ ๋น ๋ฅด๊ฒŒ ์ •๋ ฌํ•˜๊ณ  ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋„๋ก ์ตœ์ ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค.
    MySQL๊ณผ Redis์˜ ๋™๊ธฐํ™” Redis์—์„œ ์ผ์ • ์ฃผ๊ธฐ(30๋ถ„)๋งˆ๋‹ค MySQL๊ณผ ๋™๊ธฐํ™”๋ฅผ ์ง„ํ–‰ํ•˜์—ฌ, ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ชฉํ‘œ
    • ์กฐํšŒ ์†๋„ ํ–ฅ์ƒ
      • ๊ฒ€์ƒ‰์–ด ์กฐํšŒ API์˜ ์‘๋‹ต ์†๋„๋ฅผ ๊ฐœ์„ 
    • DB ๋ถ€ํ•˜ ๊ฐ์†Œ
      • ๊ฒ€์ƒ‰์–ด ์กฐํšŒ ์‹œ MySQL์˜ ๋ถˆํ•„์š”ํ•œ ์กฐํšŒ ํšŸ์ˆ˜๋ฅผ ์ค„์ด๊ณ , ํŠธ๋ž˜ํ”ฝ ๋ถ€๋‹ด์„ ์ตœ์†Œํ™”
      • Redis ์บ์‹ฑ ํ™œ์šฉ์œผ๋กœ DB ๋ถ€ํ•˜์œจ ๊ฐ์†Œ ๋ฐ ์ „์ฒด ์‹œ์Šคํ…œ ์•ˆ์ •์„ฑ ํ–ฅ์ƒ

V3 (Elasticsearch ์—ฐ๋™ API ์ƒ์„ฑ)

1. Elasticsearch์—์„œ ์ „์ฒด ํŽ˜์ด์ง€ ์กฐํšŒ ์„ฑ๋Šฅ ํ™•์ธ

  • ๊ธฐ๋Šฅ
    • ๊ธฐ์กด MySQL ๊ธฐ๋ฐ˜ ๊ฒ€์ƒ‰๊ณผ Elasticsearch ๊ธฐ๋ฐ˜ ๊ฒ€์ƒ‰์˜ ์„ฑ๋Šฅ์„ ๋น„๊ต ๋ถ„์„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
    • ์ด๋ฅผ ์œ„ํ•ด Elasticsearch์— ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ‰์ธ(indexing)ํ•˜์—ฌ ๊ฒ€์ƒ‰์„ ์ˆ˜ํ–‰ํ•˜๊ณ , ๋™์ผํ•œ ๊ฒ€์ƒ‰ ์กฐ๊ฑด์—์„œ MySQL ๋Œ€๋น„ ์‘๋‹ต ์†๋„๋ฅผ ๋น„๊ตํ•˜๋Š” ์‹คํ—˜์„ ์ง„ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ์„ธ๋ถ€ ์‚ฌํ•ญ
    ์ ์šฉ ๋ฐฉ์‹ ์„ค๋ช…
    Elasticsearch ๋ฐ์ดํ„ฐ ์ ์žฌ CSV ํŒŒ์ผ์„ Elasticsearch์— ์ƒ‰์ธํ•˜์—ฌ ๊ฒ€์ƒ‰ ๋ฐ ํ•„ํ„ฐ๋ง์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
    Elasticsearch ์ธ๋ฑ์Šค ์ƒ์„ฑ job-opening ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜์—ฌ, ํ‚ค์›Œ๋“œ ๊ฒ€์ƒ‰ ๋ฐ ํ•„ํ„ฐ๋ง ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งคํ•‘์„ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
    Elasticsearch vs MySQL ์„ฑ๋Šฅ ๋น„๊ต ๋™์ผํ•œ ๊ฒ€์ƒ‰ ์กฐ๊ฑด์„ ์ ์šฉํ•˜์—ฌ Elasticsearch์™€ MySQL์˜ ์‘๋‹ต ์‹œ๊ฐ„์„ ๋น„๊ต ๋ถ„์„ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ชฉํ‘œ
    • Elasticsearch ์ ์šฉ ์ „/ํ›„ ๊ฒ€์ƒ‰ ์†๋„ ๋น„๊ต
      • ๊ธฐ์กด MySQL ๋Œ€๋น„ Elasticsearch์˜ ์„ฑ๋Šฅ ์šฐ์œ„๋ฅผ ๊ฐ๊ด€์ ์œผ๋กœ ๋ถ„์„
      • ์‹ค์ œ API ํ˜ธ์ถœ์„ ํ†ตํ•ด ์‘๋‹ต ์†๋„ ์ฐจ์ด ์ธก์ •
    • MySQL ๋Œ€๋น„ Elasticsearch์˜ ๊ฒ€์ƒ‰ ํšจ์œจ์„ฑ ํ™•์ธ
      • Elasticsearch๊ฐ€ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ์—์„œ ๋น ๋ฅด๊ฒŒ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ฒ€์ฆ
      • MySQL ๋Œ€๋น„ ๊ฒ€์ƒ‰ ์†๋„ ๋ฐ ํ•„ํ„ฐ๋ง ์ฒ˜๋ฆฌ ์†๋„ ํ–ฅ์ƒ ์—ฌ๋ถ€ ํ™•์ธ

2. Elasticsearch ์—ฐ๋™ ์กฐํšŒ API

  • ๊ธฐ๋Šฅ
    • Elasticsearch์™€ ์—ฐ๋™ํ•˜์—ฌ ๋Œ€๋Ÿ‰์˜ ์ฑ„์šฉ ๊ณต๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋„๋ก API๋ฅผ ๊ตฌํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
    • ์ด๋ฅผ ํ†ตํ•ด ๊ธฐ์กด MySQL ๊ธฐ๋ฐ˜ ๊ฒ€์ƒ‰๊ณผ ๋น„๊ตํ•˜์—ฌ๊ฒ€์ƒ‰ ์†๋„์™€ ์„ฑ๋Šฅ์„ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ์„ธ๋ถ€ ์‚ฌํ•ญ
    ๊ธฐ๋Šฅ ์„ค๋ช…
    ์ „์ฒด ๋ฐ์ดํ„ฐ ์กฐํšŒ ๋ณ„๋„์˜ ๊ฒ€์ƒ‰์–ด๋‚˜ ํ•„ํ„ฐ ์กฐ๊ฑด ์—†์ด ๋ชจ๋“  ์ฑ„์šฉ ๊ณต๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    ํ•„ํ„ฐ๋ง์„ ํ†ตํ•œ ๋ฐ์ดํ„ฐ ์กฐํšŒ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ์กฐ๊ฑด์— ๋”ฐ๋ผ ์กฐ๊ฑด์„ ์„ค์ •ํ•˜์—ฌ ์ฑ„์šฉ ๊ณต๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    ๊ฒ€์ƒ‰์–ด๋ฅผ ํ†ตํ•œ ๋ฐ์ดํ„ฐ ์กฐํšŒ ํŠน์ • ๊ฒ€์ƒ‰์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์ฑ„์šฉ ๊ณต๊ณ  ์ œ๋ชฉ์„ ๊ธฐ์ค€์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜์—ฌ ๊ด€๋ จ ์ฑ„์šฉ ๊ณต๊ณ ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    ๋ฐ์ดํ„ฐ ์ •๋ ฌ ์ฑ„์šฉ ๊ณต๊ณ ๋Š” ์ตœ์‹  ๋“ฑ๋ก์ˆœ(createdAt DESC)์œผ๋กœ ์ •๋ ฌ๋ฉ๋‹ˆ๋‹ค.
    ํŽ˜์ด์ง€๋„ค์ด์…˜ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋„๋ก ํŽ˜์ด์ง€ ๋‹จ์œ„๋กœ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋‚ด์ผ ๊ณ„ํš โฐ

  • ํ”ผ๋“œ๋ฐฑ ๋ฐ˜์˜ํ•ด์„œ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง
  • ์ „์ฒด์ ์ธ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง ํšŒ์˜

+ ์ถ”๊ฐ€ ๊ณ„ํš์ด ์ƒ๊ธธ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค ~_~