Spring MVC-1 TIL (1)

YulHee Kimยท2021๋…„ 9์›” 4์ผ
0

Spring MVC

๋ชฉ๋ก ๋ณด๊ธฐ
1/11
post-thumbnail

[์ฐธ๊ณ  ๊ฐ•์˜] ๊น€์˜ํ•œ๋‹˜์˜ ์Šคํ”„๋ง MVC 1ํŽธ - ๋ฐฑ์—”๋“œ ์›น ๊ฐœ๋ฐœ ํ•ต์‹ฌ ๊ธฐ์ˆ 

๐Ÿ’ก ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ดํ•ด

โœ๏ธ ์›น - HTTP ๊ธฐ๋ฐ˜

HTTP ๋ฉ”์‹œ์ง€์— ๋ชจ๋“  ๊ฒƒ์„ ์ „์†ก

  • HTML, TEXT
  • IMAGE, ์Œ์„ฑ, ์˜์ƒ, ํŒŒ์ผ
  • JSON, XML(API)
  • ๊ฑฐ์˜ ๋ชจ๋“  ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ ์ „์†ก ๊ฐ€๋Šฅ
  • ์„œ๋ฒ„๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ๋•Œ๋„ ๋Œ€๋ถ€๋ถ„ HTTP ์‚ฌ์šฉ

โœ๏ธ ์›น ์„œ๋ฒ„

  • HTTP ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘
  • ์ •์  ๋ฆฌ์†Œ์Šค ์ œ๊ณต, ๊ธฐํƒ€ ๋ถ€๊ฐ€๊ธฐ๋Šฅ
  • ์ •์ (ํŒŒ์ผ) HTML, CSS, JS, ์ด๋ฏธ์ง€, ์˜์ƒ
  • ์˜ˆ) NGINX, APACHE

โœ๏ธ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„ (WAS)

  • HTTP ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘
  • ์›น ์„œ๋ฒ„ ๊ธฐ๋Šฅ ํฌํ•จ+(์ •์  ๋ฆฌ์†Œ์Šค ์ œ๊ณต ๊ฐ€๋Šฅ)
  • ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ด์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง ์ˆ˜ํ–‰
    • ๋™์  HTML, HTTP API(JSON)
    • ์„œ๋ธ”๋ฆฟ, JSP, ์Šคํ”„๋ง MVC
  • ์˜ˆ) ํ†ฐ์บฃ Jetty, Undertow

โœ๏ธ ์›น ์„œ๋ฒ„, WAS ์ฐจ์ด

  • ์›น์„œ๋ฒ„๋Š” ์ •์  ๋ฆฌ์†Œ์Šค(ํŒŒ์ผ), WAS๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง
  • ์‚ฌ์‹ค ๋‘˜์˜ ์šฉ์–ด๋„ ๊ฒฝ๊ณ„๋„ ๋ชจํ˜ธํ•จ
    • ์›น์„œ๋ฒ„๋„ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ํฌํ•จํ•˜๊ธฐ๋„ ํ•จ
    • ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๋„ ์›น ์„œ๋ฒ„์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•จ
  • ์ž๋ฐ”๋Š” ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉด WAS
    • ์„œ๋ธ”๋ฆฟ ์—†์ด ์ž๋ฐ”์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์„œ๋ฒ„ ํ”„๋ ˆ์ž„์›Œํฌ๋„ ์žˆ์Œ
  • WAS๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š”๋ฐ ๋” ํŠนํ™”

โœ๏ธ ์›น ์‹œ์Šคํ…œ ๊ตฌ์„ฑ - WAS, DB

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

โœ๏ธ ์›น ์‹œ์Šคํ…œ ๊ตฌ์„ฑ - WEB, WAS, DB

  • ์ •์  ๋ฆฌ์†Œ์Šค๋Š” ์›น ์„œ๋ฒ„๊ฐ€ ์ฒ˜๋ฆฌ
  • ์›น ์„œ๋ฒ„๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง๊ฐ™์€ ๋™์ ์ธ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋ฉด WAS์— ์š”์ฒญ์„ ์œ„์ž„
  • WAS๋Š” ์ค‘์š”ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง ์ฒ˜๋ฆฌ ์ „๋‹ด
  • ํšจ์œจ์ ์ธ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ
    • ์ •์  ๋ฆฌ์†Œ์Šค๊ฐ€ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋ฉด Web ์„œ๋ฒ„ ์ฆ์„ค
    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฆฌ์†Œ์Šค๊ฐ€ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋ฉด WAS ์ฆ์„ค
  • ์ •์  ๋ฆฌ์†Œ์Šค๋งŒ ์ œ๊ณตํ•˜๋Š” ์›น ์„œ๋ฒ„๋Š” ์ž˜ ์ฃฝ์ง€ ์•Š์Œ
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์ด ๋™์ž‘ํ•˜๋Š” WAS์„œ๋ฒ„๋Š” ์ž˜ ์ฃฝ์Œ
  • WAS, DB ์žฅ์• ์‹œ WEB ์„œ๋ฒ„๊ฐ€ ์˜ค๋ฅ˜ ํ™”๋ฉด ์ œ๊ณต ๊ฐ€๋Šฅ

โœ๏ธ ์„œ๋ธ”๋ฆฟ

ํŠน์ง•

  • urlPatterns(/hello)์˜ URL์ด ํ˜ธ์ถœ๋˜๋ฉด ์„œ๋ธ”๋ฆฟ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰
  • HTTP ์š”์ฒญ ์ •๋ณด๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” HttpServletRequest
  • HTTP ์‘๋‹ต ์ •๋ณด๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” HttpServletResponse
  • ๊ฐœ๋ฐœ์ž๋Š” HTTP ์ŠคํŽ™์„ ๋งค์šฐ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉ

HTTP ์š”์ฒญ, ์‘๋‹ต ํ๋ฆ„

  • HTTP ์š”์ฒญ์‹œ
    • WAS๋Š” Request, Response ๊ฐ์ฒด๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์„œ ์„œ๋ธ”๋ฆฟ ๊ฐ์ฒด ํ˜ธ์ถœ
    • ๊ฐœ๋ฐœ์ž๋Š” Request ๊ฐ์ฒด์—์„œ HTTP ์š”์ฒญ ์ •๋ณด๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ๊บผ๋‚ด์„œ ์‚ฌ์šฉ
    • ๊ฐœ๋ฐœ์ž๋Š” Response ๊ฐ์ฒด์— HTTP ์‘๋‹ต ์ •๋ณด๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ์ž…๋ ฅ
    • WAS๋Š” Response ๊ฐ์ฒด์— ๋‹ด๊ฒจ์žˆ๋Š” ๋‚ด์šฉ์œผ๋กœ HTTP ์‘๋‹ต ์ •๋ณด๋ฅผ ์ƒ์„ฑ

โœ๏ธ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ

์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ

  • ํ†ฐ์บฃ์ฒ˜๋Ÿผ ์„œ๋ธ”๋ฆฟ์„ ์ง€์›ํ•˜๋Š” WAS๋ฅผ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋ผ๊ณ  ํ•จ
  • ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋Š” ์„œ๋ธ”๋ฆฟ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ, ์ดˆ๊ธฐํ™”, ํ˜ธ์ถœ, ์ข…๋ฃŒํ•˜๋Š” ์ƒ๋ช…์ฃผ๊ธฐ ๊ด€๋ฆฌ
  • ์„œ๋ธ”๋ฆฟ ๊ฐ์ฒด๋Š” ์‹ฑ๊ธ€ํ†ค์œผ๋กœ ๊ด€๋ฆฌ
    • ๊ณ ๊ฐ์˜ ์š”์ฒญ์ด ์˜ฌ ๋•Œ๋งˆ๋‹ค ๊ณ„์† ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์€ ๋น„ํšจ์œจ
    • ์ตœ์ดˆ ๋กœ๋”ฉ ์‹œ์ ์— ์„œ๋ธ”๋ฆฟ ๊ฐ์ฒด๋ฅผ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด๋‘๊ณ  ์žฌํ™œ์šฉ
    • ๋ชจ๋“  ๊ณ ๊ฐ ์š”์ฒญ์€ ๋™์ผํ•œ ์„œ๋ธ”๋ฆฟ ๊ฐ์ฒด ์ธ์Šคํ„ด์Šค์— ์ ‘๊ทผ
    • ๊ณต์œ  ๋ณ€์ˆ˜ ์‚ฌ์šฉ ์ฃผ์˜
    • ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ ์ข…๋ฃŒ์‹œ ํ•จ๊ป˜ ์ข…๋ฃŒ
  • JSP๋„ ์„œ๋ธ”๋ฆฟ์œผ๋กœ ๋ณ€ํ™˜๋˜์–ด์„œ ์‚ฌ์šฉ
  • ๋™์‹œ ์š”์ฒญ์„ ์œ„ํ•œ ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ ์ฒ˜๋ฆฌ ์ง€์›

โœ๏ธ ์“ฐ๋ ˆ๋“œ

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ๋ฅผ ํ•˜๋‚˜ํ•˜๋‚˜ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์€ ์“ฐ๋ ˆ๋“œ
  • ์ž๋ฐ” ๋ฉ”์ธ ๋ฉ”์„œ๋“œ๋ฅผ ์ฒ˜์Œ ์‹คํ–‰ํ•˜๋ฉด main์ด๋ผ๋Š” ์ด๋ฆ„์˜ ์“ฐ๋ ˆ๋“œ๊ฐ€ ์‹คํ–‰
  • ์“ฐ๋ ˆ๋“œ๊ฐ€ ์—†๋‹ค๋ฉด ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰์ด ๋ถˆ๊ฐ€๋Šฅ
  • ์“ฐ๋ ˆ๋“œ๋Š” ํ•œ๋ฒˆ์— ํ•˜๋‚˜์˜ ์ฝ”๋“œ ๋ผ์ธ๋งŒ ์ˆ˜ํ–‰
  • ๋™์‹œ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋ฉด ์“ฐ๋ ˆ๋“œ๋ฅผ ์ถ”๊ฐ€๋กœ ์ƒ์„ฑ

์š”์ฒญ๋งˆ๋‹ค ์“ฐ๋ ˆ๋“œ ์ƒ์„ฑ ์žฅ๋‹จ์ 

  • ์žฅ์ 
    • ๋™์‹œ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๋ฆฌ์†Œ์Šค(CPU, ๋ฉ”๋ชจ๋ฆฌ)๊ฐ€ ํ—ˆ์šฉํ•  ๋•Œ๊นŒ์ง€ ์ฒ˜๋ฆฌ๊ฐ€๋Šฅ
    • ํ•˜๋‚˜์˜ ์“ฐ๋ ˆ๋“œ๊ฐ€ ์ง€์—ฐ๋˜์–ด๋„, ๋‚˜๋จธ์ง€ ์“ฐ๋ ˆ๋“œ๋Š” ์ •์ƒ ๋™์ž‘ํ•œ๋‹ค.
  • ๋‹จ์ 
    • ์“ฐ๋ ˆ๋“œ๋Š” ์ƒ์„ฑ ๋น„์šฉ์ด ๋น„์‹ธ๋‹ค (๊ณ ๊ฐ์˜ ์š”์ฒญ์ด ์˜ฌ ๋•Œ๋งˆ๋‹ค ์Šค๋ ˆ๋“œ๋ฅผ ์ƒˆ์—‡ใ…‡ํ•˜๋ฉด ์‘๋‹ต ์†๋„๊ฐ€ ๋Š๋ ค์ง„๋‹ค)
    • ์“ฐ๋ ˆ๋“œ๋Š” ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ ๋น„์šฉ์ด ๋ฐœ์ƒํ•œ๋‹ค
    • ์“ฐ๋ ˆ๋“œ ์ƒ์„ฑ์— ์ œํ•œ์ด ์—†๋‹ค
      (๊ณ ๊ฐ ์š”์ฒญ์ด ๋„ˆ๋ฌด ๋งŽ์ด ์˜ค๋ฉด, CPU, ๋ฉ”๋ชจ๋ฆฌ ์ž„๊ณ„์ ์„ ๋„˜์–ด์„œ ์„œ๋ฒ„๊ฐ€ ์ฃฝ์„ ์ˆ˜ ์žˆ๋‹ค)

โœ๏ธ ์“ฐ๋ ˆ๋“œ ํ’€

์š”์ฒญ๋งˆ๋‹ค ์“ฐ๋ ˆ๋“œ ์ƒ์„ฑ์˜ ๋‹จ์  ๋ณด์™„

  • ํŠน์ง•
    • ํ•„์š”ํ•œ ์“ฐ๋ ˆ๋“œ๋ฅผ ์“ฐ๋ ˆ๋“œ ํ’€์— ๋ณด๊ด€ํ•˜๊ณ  ๊ด€๋ฆฌํ•œ๋‹ค.
    • ์“ฐ๋ ˆ๋“œ ํ’€์— ์ƒ์„ฑ ๊ฐ€๋Šฅํ•œ ์“ฐ๋ ˆ๋“œ์˜ ์ตœ๋Œ€์น˜๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค. ํ†ฐ์บฃ์€ ์ตœ๋Œ€ 200๊ฐœ ๊ธฐ๋ณธ ์„ค์ •(๋ณ€๊ฒฝ ๊ฐ€๋Šฅ)
  • ์‚ฌ์šฉ
    • ์“ฐ๋ ˆ๋“œ๊ฐ€ ํ•„์š”ํ•˜๋ฉด ์ด๋ฏธ ์ƒ์„ฑ๋˜์–ด ์žˆ๋Š” ์“ฐ๋ ˆ๋“œ๋ฅผ ์Šค๋ ˆ๋“œ ํ’€์—์„œ ๊บผ๋‚ด์„œ ์‚ฌ์šฉํ•œ๋‹ค.
    • ์‚ฌ์šฉ์„ ์ข…๋ฃŒํ•˜๋ฉด ์“ฐ๋ ˆ๋“œ ํ’€์— ํ•ด๋‹น ์“ฐ๋ ˆ๋“œ ๋ฐ˜๋‚ฉ
    • ์ตœ๋Œ€ ์“ฐ๋ ˆ๋“œ๊ฐ€ ๋ชจ๋‘ ์‚ฌ์šฉ์ค‘์ด์–ด์„œ ์“ฐ๋ ˆ๋“œ ํ’€์— ์“ฐ๋ ˆ๋“œ๊ฐ€ ์—†์œผ๋ฉด?
      ๊ธฐ๋‹ค๋ฆฌ๋Š” ์š”์ฒญ์€ ๊ฑฐ์ ˆํ•˜๊ฑฐ๋‚˜ ํŠน์ • ์ˆซ์ž๋งŒํผ๋งŒ ๋Œ€๊ธฐํ•˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค
  • ์žฅ์ 
    • ์“ฐ๋ ˆ๋“œ๊ฐ€ ๋ฏธ๋ฆฌ ์ƒ์„ฑ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ, ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ข…๋ฃŒํ•˜๋Š” ๋น„์šฉ(CPU)์ด ์ ˆ์•ฝ๋˜๊ณ , ์‘๋‹ต ์‹œ๊ฐ„์ด ๋น ๋ฅด๋‹ค
    • ์ƒ์„ฑ ๊ฐ€๋Šฅํ•œ ์Šค๋ ˆ๋“œ์˜ ์ตœ๋Œ€์น˜๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ๋„ˆ๋ฌด ๋งŽ์€ ์š”์ฒญ์ด ๋“ค์–ด์™€๋„ ๊ธฐ์กด ์š”์ฒญ์€ ์•ˆ์ „ํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

์‹ค๋ฌด ํŒ

  • WAS์˜ ์ฃผ์š” ํŠœ๋‹ ํฌ์ธํŠธ๋Š” ์ตœ๋Œ€ ์“ฐ๋ ˆ๋“œ ์ˆ˜์ด๋‹ค
  • ์ด ๊ฐ’์„ ๋„ˆ๋ฌด ๋‚ฎ๊ฒŒ ์„ค์ •ํ•˜๋ฉด?
    ๋™์‹œ ์š”์ฒญ์ด ๋งŽ์œผ๋ฉด ์„œ๋ฒ„๋ฆฌ์†Œ์Šค๋Š” ์—ฌ์œ ๋กญ์ง€๋งŒ ํด๋ผ์ด์–ธํŠธ๋Š” ๊ธˆ๋ฐฉ ์‘๋‹ต ์ง€์—ฐ
  • ๋„ˆ๋ฌด ๋†’์œผ๋ฉด?
    ๋™์‹œ ์š”์ฒญ์ด ๋งŽ์œผ๋ฉด CPU,๋ฉ”๋ชจ๋ฆฌ ๋ฆฌ์†Œ์Šค ์ž„๊ณ„์  ์ดˆ๊ณผ๋กœ ์„œ๋ฒ„ ๋‹ค์šด
  • ์žฅ์•  ๋ฐœ์ƒ์‹œ?
    ํด๋ผ์šฐ๋“œ๋ฉด ์ผ๋‹จ ์„œ๋ฒ„๋ถ€ํ„ฐ ๋Š˜๋ฆฌ๊ณ  ์ดํ›„์— ํŠœ๋‹, ํด๋ผ์šฐ๋“œ๊ฐ€ ์•„๋‹ˆ๋ฉด ์—ด์‹ฌํžˆ ํŠœ๋‹

โœ๏ธ WAS์˜ ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ ์ง€์›

ํ•ต์‹ฌ

  • ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ์— ๋Œ€ํ•œ ๋ถ€๋ถ„์€ WAS๊ฐ€ ์ฒ˜๋ฆฌ
  • ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ ๊ด€๋ จ ์ฝ”๋“œ๋ฅผ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š์•„๋„ ๋จ
  • ๊ฐœ๋ฐœ์ž๋Š” ๋งˆ์น˜ ์‹ฑ๊ธ€ ์“ฐ๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋“ฏ์ด ํŽธ๋ฆฌํ•˜๊ฒŒ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๊ฐœ๋ฐœ
  • ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ ํ™˜๊ฒฝ์ด๋ฏ€๋กœ ์‹ฑ๊ธ€ํ†ค ๊ฐ์ฒด(์„œ๋ธ”๋ฆฟ, ์Šคํ”„๋ง ๋นˆ)๋Š” ์ฃผ์˜ํ•ด์„œ ์‚ฌ์šฉ

profile
๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž

0๊ฐœ์˜ ๋Œ“๊ธ€