Home Basic Confusing Questions โ…ก ๐Ÿคทโ€โ™‚๏ธ (17๊ฐœ)
Post
Cancel

Basic Confusing Questions โ…ก ๐Ÿคทโ€โ™‚๏ธ (17๊ฐœ)

Basic Confusing Questions โ…ก ๐Ÿคทโ€โ™‚๏ธ


ํด๋ฆญํ•˜๋ฉด ์ •๋‹ต์ด ๋‚˜์˜ต๋‹ˆ๋‹น~
์ž๋ฐ”์˜ ์ •์„(๋‚จ๊ถ์„ฑ ์ง€์Œ)์—์„œ ์ธ์šฉํ•œ ์ฝ”๋“œ์™€ ๋‚ด์šฉ์„ ๋‹ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

REST API๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

ํƒ๋ฐฐ ์†ก์žฅ๋ฒˆํ˜ธ์— ์šฐ๋ฆฌ๊ฐ€ ๋งž์ถฐ์„œ ์–‘์‹์„ ์ž‘์„ฑํ•˜๋“ฏ์ดโ€ฆ์ผ์ข…์˜ ํ˜•์‹์ด๋‹ค.
๊ฐ ์š”์ฒญ์ด ์–ด๋–ค ๋™์ž‘์ด๋‚˜ ์ •๋ณด๋ฅผ ์œ„ํ•œ ๊ฒƒ์ธ์ง€๋ฅผ ์ถ”๋ก  ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์•ผํ•˜๋Š” ํ˜•์‹. www.๋„๋ฉ”์ธ/(๋ช…์‚ฌ๋“ค๋กœ) ์ด๋ถ€๋ถ„์„ ์ž‘์„ฑํ•˜๋Š”๊ฑฐ๋ฉฐ, GET,POST DELETE,PUT,PATCH ๊ฐ™์€ ๊ธฐ๋Šฅ์œผ๋กœ ๋น„๊ต์  ์•ˆ์ „ํ•˜๊ฒŒ ๋ณด๋‚ผ์ˆ˜์žˆ๋‹ค.
PUT์€ ์ •๋ณด๋ฅผ ํ†ต์งธ๋กœ ๊ฐˆ์•„ ๋ผ์šธ๋–„, patch๋Š” ์ •๋ณด์ค‘ ์ผ๋ถ€๋ฅผ ํŠน์ •๋ฐฉ์‹์œผ๋กœ ๊ต์ฒดํ• ๋–„ ์”€

์žฅ์ 

  1. Uniform Interface Http ํ‘œ์ค€์„ ๋”ฐ๋ฅด๋ฉด ์–ด๋– ํ•œ ํ”Œ๋žซํผ์ด๋“  ๊ธฐ์ˆ ์— ์ข…์†๋˜์ง€์•Š๊ณ  URI๋กœ ์ง€์ •ํ•œ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์กฐ์ž‘์ด ๊ฐ€๋Šฅํ•œ ์•„ํ‚คํ…์ฒ˜ ์Šคํƒ€์ผ
  2. ๋ฌด์ƒํƒœ์„ฑ Stateless
    ์ƒํƒœ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜์ง€์•Š๋Š”๋‹ค. ์„ธ์…˜์ •๋ณด, ์ฟ ๊ธฐ์ •๋ณด๋ฅผ ๋ณ„๋„๋กœ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜์ง€์•Š๋Š”๋‹ค. API์š”์ฒญ๋งŒ ์ฒ˜๋ฆฌํ• ๋ฟโ€ฆ
  3. ์บ์‹œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
    HTTP๊ฐ€ ๊ฐ€์ง„ ์บ์‹ฑ๊ธฐ๋Šฅ์„ ์ ์šฉํ•  ์ˆ˜์žˆ๋‹ค. Last-Modified ํƒœ๊ทธ๋‚˜ E-Tag๋ฅผ ์ด์šฉํ•˜๋ฉด ์บ์‹ฑ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅ.
  4. ๊ณ„์ธตํ˜• ๊ตฌ์กฐ REST๋Š” ๋‹ค์ค‘ ๊ณ„์ธต์œผ๋กœ ๊ตฌ์„ฑ๊ฐ€๋Šฅํ•˜๋ฉด์„œ ๋ณด์•ˆ, ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ, ๋ณด์•ˆ๊ณ„์ธต์„ ์ถ”๊ฐ€ํ•ด์„œ ๊ตฌ์กฐ์˜ ์œ ์—ฐํ•จ์„ ์ฑ™๊ธธ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ, ํ”„๋ก์‹œ ๊ฒŒ์ดํŠธ์›จ์ด ๊ฐ™์€ ์ค‘๊ฐ„ ๋งค์ฒด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

๋‹จ์ 

  1. HTTP ๋ฉ”์†Œ๋“œ๊ฐ€ ์ œํ•œ์ ์ด๋‹ค.
  2. ํ‘œ์ค€์ด ์—†๋‹ค.
DNS์˜ ์ •์˜์™€ DNS๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋„๋ฉ”์ธ์˜ ์ด๋ฆ„์„ ํ†ตํ•ด IP์ฃผ์†Œ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. DNS๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋ชจ๋“  ip์ฃผ์†Œ ์•Œ์ง€์•Š์•„๋„ ํ•ด๋‹น ์ฃผ์†Œ๊ฐ’์„ ๋„๋ฉ”์ธ์ด๋ฆ„์„ ํ†ตํ•ด ์ฐพ์•„์˜ค๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

A Record - IP์™€ ๋„๋ฉ”์ธ๊ณผ์˜ ์งํ†ต ์—ฐ๊ฒฐ
CNAME (canonical name) - IP๊ฐ€ ์œ ๋™์ ์œผ๋กœ ๋ณ€ํ•˜๋Š” ์„œ๋ฒ„๋ฅผ ์œ„ํ•œ ๋„๋ฉ”์ธ ๋ฐฉ์‹ (aws, firebase๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ)

URL๊ณผ URI์˜ ์ฐจ์ด์ ์ด ๋ฌด์—‡์ธ๊ฐ€์š”?

URL โŠ‚ URI

URI๋Š” ์‹๋ณ„ํ•˜๊ณ , URL์€ ์œ„์น˜๋ฅผ ๊ฐ€๋ฅดํ‚จ๋‹ค.

  • URI๋Š” Uniform Resource Identifer ํ†ตํ•ฉ์ž์›์‹๋ณ„์ž๋กœ์จ ์›น ๊ธฐ์ˆ ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋…ผ๋ฆฌ์  ๋˜๋Š” ๋ฌผ๋ฆฌ์  ๋ฆฌ์†Œ์Šค๋ฅผ ์‹๋ณ„ํ•˜๋Š” ๋ฌธ์ž์—ด ์‹œํ€€์Šค.
  • URL์€ ์›น์ฃผ์†Œ๋กœ ๋„คํŠธ์›Œํฌ ์‚ฌ์—์„œ ๋ฆฌ์†Œ์Šค๊ฐ€ ์–ด๋””์— ์žˆ๋Š”์ง€ ์•Œ๋ ค์ฃผ๊ธฐ ์œ„ํ•œ ๊ทœ์•ฝ์„ ์ง€์นญํ•˜๋Š”๊ฒƒ์ด๋‹ค.

URI์˜ ๊ตฌ์กฐ

scheme:[//[user[:password]@]host[:port]][/path][?query][#fragment]

scheme:์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœํ† ์ฝœ
[user[:password]@]host[:port]: ์‚ฌ์šฉ์ž์˜ ์ด๋ฆ„,๋น„๋ฒˆ + ์ ‘๊ทผํ•  ํ˜ธ์ŠคํŠธ๋ช…,ํฌํŠธ๋ฒˆํ˜ธ
[/path]: ์ ‘๊ทผํ•  ๋Œ€์ƒ์˜ ๊ฒฝ๋กœ
[?query][#fragment]: โ€œ ๋Œ€์ƒ์—๊ฒŒ ์ „๋‹ฌํ•˜๋Š” ์ถ”๊ฐ€์ ์ธ ์ •๋ณด(ํŒŒ๋ผ๋ฏธํ„ฐ) + ๋ฉ”์ธ ๋ฆฌ์†Œ์Šค ๋‚ด์— ์กด์žฌํ•˜๋Š” ์„œ๋ธŒ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•  ๋•Œ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ์ •๋ณด

์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ CORS ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์›์ธ์€ ๋ฌด์—‡์ด๋ฉฐ, ์„œ๋ฒ„์—์„œ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

CORS์˜ ๊ฒฝ์šฐ Origin์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•˜๋Š”๊ฒƒ์„ ์ œํ•œํ•˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋‹ค๋ฅธ ์ถœ์ฒ˜์—์„œ ๋ฆฌ์†Œ์Šค ์ ‘๊ทผ์„ ์ œํ•œํ•˜๋Š” ๋ณด์•ˆ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.
์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด, ์„œ๋ฒ„์ธก์—์„œ๋Š” ํ—ˆ์šฉํ•˜๊ธฐ๋กœํ•œ Origin์„ ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋žจ์— ๋“ฑ๋กํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Access-Control-Allow-Methods ๋“ฑ์˜ ํ—ค๋”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ CORS์—๋Ÿฌ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ง„ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜(BST)์ด ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ฐพ๊ธฐ ์œ„ํ•ด ํƒ์ƒ‰ํ•˜๋Š” ๊ณผ์ •์„ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค.
๋ฃจํŠธ๋…ธ๋“œ๋ฅผ ์‹œ์ž‘์œผ๋กœ ๋ฐ์ดํ„ฐ์˜ ํฌ๊ณ  ์ž‘์Œ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ด์„œ ๋ฆฌํ”„๋…ธ๋“œ๊นŒ์ง€ ์ฐพ์•„๋‚˜๊ฐ€๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.
์‹œ๊ฐ„ ๋ณต์žก๋„์˜ ํ‰๊ท ์€ O(logN)์ด๊ณ  ์ตœ์•…์€ O(N)์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ํ•œ์ชฝ์œผ๋กœ ์น˜์šฐ์ณ ์žˆ์„ ๊ฒฝ์šฐ) ์ถ”๊ฐ€ ์‚ญ์ œ์˜ ๊ฒฝ์šฐ์—๋„ ๊ฒ€์ƒ‰์„ ๋จผ์ €ํ•œํ›„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

ํƒ์š•(Greedy) ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์„ฑ๋ฆฝํ•ด์•ผ ํ•˜๋Š” ์กฐ๊ฑด์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

(๊ฐ€์žฅ ์ ์€ ๊ฐœ์ˆ˜๋กœ ๊ตฌํ•˜๋Š” ๋™์ „๊ฐœ์ˆ˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜)

๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๋‹ค๋ฅด๊ฒŒ ๋ชจ๋“  ์„ ํƒ์ง€๋ฅผ ๊ณ ๋ คํ•ด๋ณด๊ณ  ๋‹ต์„ ์ •ํ•˜๋Š” ๋ฐฉ์‹์ด ์•„๋‹Œ, ์žฌ๊ท€ํ•˜๋Š” ๊ฐ ๋‹จ๊ณ„๋งˆ๋‹ค ๋‚จ์€ ์„ ํƒ๋“ค์— ๋Œ€ํ•ด์„œ๋Š” ๊ณ ๋ คํ•˜์ง€์•Š์€์ฑ„ ๊ฐ€์žฅ ๋ฒ ์ŠคํŠธ ์˜ต์…˜์„ ์„ ํƒํ•ด์„œ ์ง„ํ–‰ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.
์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•ž์˜ ์„ ํƒ์ด ์ดํ›„์˜ ์„ ํƒ์— ์˜ํ–ฅ์„ ์ฃผ์–ด์„  ์•ˆ๋˜๊ณ  ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ตœ์ข… ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์€ ๋ถ€๋ถ„๋ฌธ์ œ์— ๋Œ€ํ•œ ์ตœ์  ๋ฌธ์ œํ•ด๊ฒฐ๋ฐฉ๋ฒ•์œผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. (ํƒ์š•์  ์„ ํƒ ์†์„ฑ, ์ตœ์  ๋ถ€๋ถ„ ๊ตฌ์กฐ) ์ด๋Ÿฌํ•œ ๊ตฌ์กฐ๋ฅผ ๋ฉ”ํŠธ๋กœ์ด๋“œ๋ผ ํ•œ๋‹ค.

์ธ์ ‘ ํ–‰๋ ฌ๊ณผ ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

์ธ์ ‘ ํ–‰๋ ฌ์€ ๋…ธ๋“œ(1),์—ฃ์ง€(0)์„ ๋ชจ๋‘ ํ‘œํ˜„ํ•ด์•ผํ•˜๋ฏ€๋กœ ๋…ธ๋“œ๊ฐ€ ๋Š˜์ˆ˜๋ก ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋งŽ์ด ์ฐจ์ง€ํ•œ๋‹ค. ๋Œ€์‹  ๊ฒ€์ƒ‰์†๋„๋Š” ๋น ๋ฅด๋‹ค.
๋ฐ˜๋ฉด ์ธ์ ‘๋ฆฌ์ŠคํŠธ๋Š” ๋ฆฌ์ŠคํŠธ(->)๋กœ ํ‘œํ˜„ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ๋“ค๋งŒ ํ‘œํ˜„ํ•˜๊ธฐ์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋œ์ฐจ์ง€ํ•˜์ง€๋งŒ ๊ฒ€์ƒ‰์†๋„๋Š” ๋Š๋ฆฌ๋‹ค.

Stack๊ณผ Queue์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

queue๋Š” FIFO ๋ฐฉ์‹์œผ๋กœ ๋œ ๊ตฌ์กฐ๋กœ์จ ์ฒ˜์Œ ๋“ค์–ด๊ฐ„ ์ธ์ž๊ฐ€ ์ฒ˜์Œ์— ๋‚˜์˜ค๋Š” ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค.
๋ฐ˜๋ฉด stack์˜ ๊ฒฝ์šฐ LIFO๋ฐฉ์‹์œผ๋กœ ๋‚˜์ค‘์— ๋“ค์–ด๊ฐ„ ์ธ์ž๊ฐ€ ์ฒ˜์Œ์— ๋‚˜์˜ค๋Š” ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค.

stack LIFO ex) ์›นํŽ˜์ด์ง€ ๋ฐฉ๋ฌธ๊ธฐ๋ก. ์‹คํ–‰์ทจ์†Œ(๋’ค๋Œ์•„๊ฐ€๊ธฐ), ํ›„์œ„ํ‘œ๊ธฐ๋ฒ• ๊ณ„์‚ฐ..
Queue FIFO ex) ๋„ˆ๋น„์šฐ์„ ํƒ์ƒ‰, ํ”„๋ฆฐํ„ฐ ์ธ์‡„ ๋Œ€๊ธฐ์—ด

DI(Dependency Injection)์— ๋Œ€ํ•œ ์„ค๋ช…๊ณผ ํ•ด๋‹น ๊ธฐ์ˆ ์˜ ์žฅ์ 

๋‹คํ˜•์„ฑ๋งŒ์œผ๋กœ๋Š” ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์‰ฝ๊ฒŒ ํ• ์ˆ˜์—†๋‹ค. ์—ญํ• ๊ณผ ๊ตฌํ˜„์ฒด๋ฅผ ๋”ฐ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ์—ญํ• (์ธํ„ฐํŽ˜์ด์Šค)๋ผ๋ฆฌ ์˜์กด๊ด€๊ณ„๋ฅผ ์„ค์ •ํ•ด์„œ ๊ตฌํ˜„์ฒด๊ฐ€ ๋ฐ”๋€Œ๋”๋ผ๋„ ํฐ ๋กœ์ง์€ ์ผ์ •ํ•˜๊ฒŒ ์œ ์ง€๋˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์˜์กดํ•˜๊ณ  ๊ตฌํ˜„์ฒด๋Š” ๋ถ„๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์˜๋ฏธํ•œ๋‹ค.
์ด๋Ÿฌํ•œ ๊ตฌ์กฐ๋Š” ๊ตฌํ˜„ํด๋ž˜์Šค๋งŒ ๋ฐ”๊พธ๋ฉด์„œ ์œ ์ง€๋ณด์ˆ˜, ํด๋ž˜์Šค ๊ต์ฒด๋ฅผ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ(Spring Container)์— ๋Œ€ํ•ด ์„ค๋ช…

๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ๋นˆ์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์—๊ฒŒ ์œ„์ž„ํ•˜๋ฏ€๋กœ์จ, ์˜์กด๊ด€๊ณ„ ์„ค์ •์„ ์ž๋™์œผ๋กœ ํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ๋˜ํ•œ, ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹ฑ๊ธ€ํ†ค์œผ๋กœ ๋นˆ๋“ค์„ ๊ด€๋ฆฌํ•˜๊ธฐ๋–„๋ฌธ์— ์ผ๊ด€๋œ ๊ฐ์ฒด ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ๋ฉ”๋ชจ๋ฆฌ์˜ ํšจ์œจ์ ์ธ ์‚ฌ์šฉ์„ ํ•ฉ๋‹ˆ๋‹ค.
{. :prompt-tip}

new, ์ธํ„ฐํŽ˜์ด์Šค ํ˜ธ์ถœ, ํŒฉํ† ๋ฆฌ ํ˜ธ์ถœ ๋ฐฉ์‹์œผ๋กœ ๊ฐ์ฒด ์ƒ์„ฑ๊ณผ ์†Œ๋ฉธ์„ ๊ฐœ๋ฐœ์ž๊ฐ€ ํ• ์ˆ˜ ์žˆ์ง€๋งŒ, ์ œ์–ดํ๋ฆ„์„ ์ปจํ…Œ์ด๋„ˆ์—๊ฒŒ ๋งก๊ฒจ์„œ ๊ด€๋ฆฌํ•ด์ฃผ๋Š” ์ปจํ…Œ์ด๋„ˆ์ด๋‹ค. ์˜์กด๊ด€๊ณ„ ๋˜ํ•œ ๋Ÿฐํƒ€์ž„ ๊ณผ์ •์—์„œ ์•Œ์•„์„œ ๋งŒ๋“ค์–ด์ค€๋‹ค.

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

Spring์—์„œ AOP๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ์— ๋Œ€ํ•ด ์„ค๋ช…

๋ชจ๋“  ์ปจํŠธ๋กค๋Ÿฌ๋‹จ์—์„œ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์ด ์ƒ๊ฒผ์„๋•Œ, ์ค‘๋ณต๋œ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€์•Š๊ณ  ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ ๋ฌถ๊ฑฐ๋‚˜ ํŠน์ • ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•˜์—ฌ ์ผ์„ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ ์šฉ์ดํ•œ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋กœ๊น…์ด๋‚˜ ํŠธ๋žœ์žญ์…˜์ฒ˜๋Ÿผ ๋ชจ๋‘ ์ ์šฉํ•ด์•ผํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์žˆ์„๋•Œ ์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌํ• ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‘˜์งธ, ์‹œ์Šคํ…œ์˜ ์œ ์—ฐ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. AOP๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์—ฌ๋Ÿฌ ๋ชจ๋“ˆ์—์„œ ๊ณตํ†ต์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋Šฅ์„ ๋ชจ๋“ˆํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์‹œ์Šคํ…œ์˜ ์œ ์—ฐ์„ฑ์„ ๋†’์ด๊ณ , ํ•„์š”์— ๋”ฐ๋ผ ๋ชจ๋“ˆ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์…‹์งธ, ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ(Separation of Concerns)๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. AOP๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ์‹œ์Šคํ…œ์˜ ๋ถ€๊ฐ€์ ์ธ ๊ธฐ๋Šฅ(๋กœ๊น…, ๋ณด์•ˆ ๋“ฑ)์„ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ๋†’์ด๊ณ , ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋„ท์งธ, ํ”„๋กœ๊ทธ๋žจ์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. AOP๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•„์š”ํ•œ ์‹œ์ ์—๋งŒ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ ์‹คํ–‰์„ ๋ฐฉ์ง€ํ•˜๊ณ , ํ”„๋กœ๊ทธ๋žจ์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Foreign Key์™€ Primary Key์— ๋Œ€ํ•ด ์„ค๋ช…

๋‘˜๋‹ค ๋ ˆ์ฝ”๋“œ๋ฅผ ์‹๋ณ„ํ•˜๋Š” ๊ณณ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ฐจ์ด์ ์œผ๋กœ๋Š”โ€ฆ ์šฐ์„  ๊ธฐ๋ณธํ‚ค๋Š” ๊ฐ ๋ ˆ์ฝ”๋“œ๋ฅผ ์‹๋ณ„ํ•˜๋Š” ํ‚ค์ด๊ณ  ์™ธ๋ž˜ํ‚ค๋Š” ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธํ‚ค๋ฅผ ์ฐธ์กฐํ•˜๋Š” ํ‚ค์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธํ‚ค๋Š” ๋„๊ฐ’์„ ๊ฐ€์งˆ์ˆ˜ ์—†๋Š” ๋ฐ˜๋ฉด ์™ธ๋ž˜ํ‚ค๋Š” ๋„๊ฐ’์„ ๊ฐ€์งˆ์ˆ˜ ์žˆ๊ณ  ๊ธฐ๋ณธํ‚ค๋Š” ํ•„์ˆ˜์‚ฌํ•ญ์ด์ง€๋งŒ ์™ธ๋ž˜ํ‚ค๋Š” ํ•„์ˆ˜์‚ฌํ•ญ์ด์•„๋‹™๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ์„ ์œ„ํ•ด ์™ธ๋ž˜ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

ํŠธ๋žœ์žญ์…˜์— ๋Œ€ํ•ด ์„ค๋ช…

ํŠธ๋žœ์žญ์…˜์€ ์ปค๋ฐ‹, ๋กค๋ฐฑ์˜ 2๊ฐ€์ง€ ๊ธฐ๋Šฅ๋งŒ์œผ๋กœ ํ•ด๋‹น ์ž‘์—…์ด ์„ฑ๊ณตํ–ˆ์œผ๋ฉด ์ปค๋ฐ‹ ์‹คํŒจํ–ˆ์œผ๋ฉด ๋กค๋ฐฑ์„ ํ†ตํ•ด, ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ์„ ์ง€ํ‚ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํŠธ๋žœ์žญ์…˜์€ ACID์˜ ์›์น™์„ ์ง€์ผœ์•ผํ•˜๋ฉฐ ์ด๋Š” ์›์ž์„ฑ, ์ง€์†์„ฑ, ๋…๋ฆฝ์„ฑ, ์˜์†์„ฑ 4๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

Client Side Rendering ๊ณผ Server Side Rendering ์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…
โ€œSSR - ์„œ๋ฒ„์ชฝ์—์„œ ๋žœ๋”๋ง ์ค€๋น„๋ฅผ ๋๋งˆ์น˜๊ณ  ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹.. ์ดˆ๊ธฐ ๊ตฌ๋™์†๋„๊ฐ€ ๋น ๋ฅด๊ณ  ๊ฒ€์ƒ‰ ์—”์ง„ ์ตœ์ ํ™”(SEO)์— ์œ ๋ฆฌํ•˜๋‹คํ•˜์ง€๋งŒ ์„œ๋ฒ„๋ถ€ํ•˜์™€ ๋กœ๋”ฉ์ค‘์— ํ™”๋ฉด ๊นœ๋นก์ž„์ด ์žˆ๋‹ค.

CSR - ์ดˆ๊ธฐ๋กœ๋”ฉ๊ณผ SEO์— ๋ถˆ๋ฆฌํ•˜์ง€๋งŒ ํ™”๋ฉด ๊นœ๋นก์ด๋Š” ํ˜„์ƒ, ์„œ๋ฒ„๋ถ€ํ•˜์— ์˜ํ–ฅ์„ ๋œ ์ค€๋‹ค. TTV (time to view) ์™€ TTI (time to interact) ์‚ฌ์ด์˜ ๊ฐ„๊ฒฉ์ด ์—†๋‹คโ€

์žฌ๊ท€ ํ•จ์ˆ˜์™€ ๋ฐ˜๋ณต๋ฌธ์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ์„ค๋ช…

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

@component, @Configuration ์ฐจ์ด

Component์˜ ๊ฒฝ์šฐ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ตฌํ˜„ํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ๋นˆ์—๋‹ค๊ฐ€ ๋“ฑ๋กํ•˜๋Š” ๊ฒƒ์ด๊ณ  Configuration ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ๊ตฌํ˜„๋œ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ฐ›์•„์™€ ์žฌ๊ตฌ์„ฑํ•˜์—ฌ ๋“ฑ๋กํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉํ•˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜์ž…๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์ง์ ‘๋งŒ๋“  ๋ฉ”์†Œ๋“œ๋ฅผ ๋นˆ์— ๋“ฑ๋กํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด @component ์™ธ๋ถ€๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‚˜ ์–ด๋””์„œ ๋Œ์–ด์จ์•ผํ•œ๋‹ค~ @bean + @configuration ์‚ฌ์šฉํ•ด์•ผํ•จ.

๋‹ค์ด๋‚˜๋ฏน ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์„ฑ๋ฆฝ ์กฐ๊ฑด์— ๋Œ€ํ•ด ๋งํ•ด์ค˜

ํฐ๋ฌธ์ œ๋ฅผ ์ž‘์€ ๋ฌธ์ œ์˜ ๋‹จ์œ„๋กœ ์ž˜๊ฒŒ ์ชผ๊ฐœ๋ฉด์„œ ์ž‘์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋’ค ๋ฉ”๋ชจ์ด์ œ์ด์…˜์„ ํ†ตํ•ด ์–ป์€ ํ•ด๋‹ต์— ๋Œ€ํ•œ ๊ฐ’์„ ๋˜ ๊ตฌํ•˜์ง€์•Š๋„๋ก ์„ค์ •ํ•˜๋ฉด์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด ๋‚˜์•„๊ฐ€๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค.

This post is licensed under CC BY 4.0 by the author.

๊ตฌ์กฐํŒจํ„ด - ํ”„๋ก์‹œ ํŒจํ„ด

๊ตฌ์กฐํŒจํ„ด - ํŒŒ์‚ฌ๋“œ ํŒจํ„ด