๐Ÿ’ป ํ”„๋กœ์ ํŠธ/๊ฐœ์ธ ํ”„๋กœ์ ํŠธ

[ KPT ํšŒ๊ณ  ] ํ”Œ๋Ÿฌ์Šค ์ฃผ์ฐจ ๊ฐœ์ธ ๊ณผ์ œ

carrot0911 2025. 1. 27. 16:27

ํ”Œ๋Ÿฌ์Šค ์ฃผ์ฐจ ๊ฐœ์ธ ๊ณผ์ œ

 

Keep : ์ด๋ฒˆ ๊ณผ์ œ์—์„œ ์œ ์ง€ํ–ˆ์œผ๋ฉด ํ•˜๋Š” ๋ถ€๋ถ„

๋ฌธ์ œ ํ•ด๊ฒฐ ๊ณผ์ •์—์„œ์˜ ์‚ฌ๊ณ ๋ ฅ ๊ฐ•ํ™”

  • ๊ฐ ๋‹จ๊ณ„๋ฅผ ์ง„ํ–‰ํ•  ๋•Œ๋งˆ๋‹ค '์™œ ์ด๊ฑธ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”๊ฐ€?'๋ฅผ ๊ณ ๋ฏผํ•˜๋ฉฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋‹ค.

๊ฐœ๋… ์ดํ•ด์™€ ํ™œ์šฉ

  • ์ƒˆ๋กœ์šด ๊ฐœ๋…์„ ๋‹จ์ˆœํžˆ ์ ์šฉํ•˜๋Š”๋ฐ ๊ทธ์น˜์ง€ ์•Š๊ณ , ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜๊ณ  ํ™œ์šฉํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ๋‹ค.

๋ณต์Šต์„ ํ†ตํ•œ ๊ฐœ๋… ์ •๋ฆฌ

  • ์ด๋ฏธ ์•Œ๊ณ  ์žˆ๋Š” ๋‚ด์šฉ์ด๋ผ๊ณ  ํ•ด๋„ ํ•œ๋ฒˆ ๋” ๋ณต์Šตํ•˜๋ฉด์„œ ์ •๋ฆฌํ•˜๊ณ  ๋„˜์–ด๊ฐ€๋Š” ์Šต๊ด€์„ ๊ฐ€์ง€๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ–ˆ๋‹ค.

 

Problem : ๊ฐœ์„ ์ด ํ•„์š”ํ•œ ๋ถ€๋ถ„

์‹œ๊ฐ„ ๊ด€๋ฆฌ์˜ ์–ด๋ ค์›€

  • ์ฃผ์–ด์ง„ ์‹œ๊ฐ„ ์•ˆ์— ๊ณ„ํšํ–ˆ๋˜ ์ž‘์—…์„ ๋ชจ๋‘ ๋๋‚ด์ง€ ๋ชปํ–ˆ๋‹ค.

๋ถˆ์™„์ „ํ•œ ์ง€์‹ ํ™•์ธ

  • ์•Œ๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ, ์‹ค์ œ๋กœ ๋ช…ํ™•ํ•˜๊ฒŒ ์ดํ•ดํ•˜์ง€ ๋ชปํ•œ ๋‚ด์šฉ๋“ค์ด ์กด์žฌํ–ˆ๋‹ค.

์ƒˆ๋กœ์šด ๊ฐœ๋… ์ ์šฉ์˜ ์–ด๋ ค์›€

  • ์ƒˆ๋กœ์šด ๊ฐœ๋…์„ ์ตํžˆ๋Š” ๋ฐ๋Š” ์‹œ๊ฐ„์ด ๋งŽ์ด ๊ฑธ๋ฆฌ์ง€ ์•Š์ง€๋งŒ, ์ ์šฉ์—์„œ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ์†Œ์š”๋˜์—ˆ๋‹ค.

 

Try : ๋‹ค์Œ ๊ณผ์ œ๋ฅผ ์œ„ํ•ด ํ•ด์•ผ ํ•  ๋…ธ๋ ฅ

QueryDSL ๊ฐœ๋… ํ•™์Šต

  • QueryDSL์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ํ™œ์šฉ ๋ฐฉ๋ฒ•์„ ์ฒด๊ณ„์ ์œผ๋กœ ํ•™์Šตํ•œ๋‹ค.
  • ๊ฐ„๋‹จํ•œ ์‹ค์Šต ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ์ฟผ๋ฆฌ ์ž‘์„ฑ๊ณผ ์ตœ์ ํ™” ๊ณผ์ •์„ ์ตํžŒ๋‹ค.

JWT ๊ด€๋ จ ์ง€์‹ ๊ฐ•ํ™”

  • JWT์˜ ๊ตฌ์กฐ์™€ ์ž‘๋™ ์›๋ฆฌ๋ฅผ ๊นŠ์ด ์ดํ•ดํ•˜๊ณ , ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๋ถ€์—ฌ ํ๋ฆ„์„ ์ •๋ฆฌํ•œ๋‹ค.
  • ์‹ค์ œ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด์„œ JWT๋ฅผ ํ™œ์šฉํ•œ ๋กœ๊ทธ์ธ ๋ฐ ์ธ์ฆ ๋กœ์ง์„ ์ง์ ‘ ๊ตฌํ˜„ํ•ด ๋ณธ๋‹ค.

Spring Security ๊ด€๋ จ ์ง€์‹ ๊ฐ•ํ™”

  • Spring Security์˜ ํ•ต์‹ฌ ๊ฐœ๋…(์ธ์ฆ, ๊ถŒํ•œ ๊ด€๋ฆฌ, ํ•„ํ„ฐ ์ฒด์ธ ๋“ฑ)์„ ํ•™์Šตํ•œ๋‹ค.
  • ํ”„๋กœ์ ํŠธ ํ™˜๊ฒฝ์—์„œ Spring Security๋ฅผ ์‚ฌ์šฉํ•œ ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๋กœ์ง์„ ์ง์ ‘ ๊ตฌํ˜„ํ•ด ๋ณธ๋‹ค.

 

Feel: ๊ณผ์ œ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ๋Š๋‚€ ์ 

์ด๋ฒˆ ์ฃผ์ฐจ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์ง‘์ค‘๋ ฅ์ด ๋งŽ์ด ๋–จ์–ด์กŒ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ๊ธธ๊ฒŒ ์ง‘์ค‘ํ•˜์ง€ ๋ชปํ•˜๊ณ  ์ค‘๊ฐ„์ค‘๊ฐ„ ๋”ด ๊ธธ๋กœ ์ƒˆ๋Š” ์ผ์ด ๋งŽ์•˜๋‹ค.
์•„๋งˆ.. ๋งˆ์Œ์ด ์กฐ๊ธˆ ๋Š˜์–ด์ ธ์„œ ๊ทธ๋Ÿฐ ๊ฑฐ๊ฒ ์ง€...

๊ทธ๋ž˜๋„ ์ข‹์•˜๋˜ ์ ์€ ๋‚ด๊ฐ€ ์–ด๋Š ๋ถ€๋ถ„์ด ๋น„์–ด์žˆ๋Š”์ง€, ๋†“์น˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐ„์ด์—ˆ๋‹ค.
์•Œ๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ  ๋„˜์–ด๊ฐ”์ง€๋งŒ ๋‹ค์‹œ ์ƒ๊ฐํ•ด ๋ดค์„ ๋•Œ, ๋ช…ํ™•ํ•˜๊ฒŒ ๋‚ด ๊ฒƒ์œผ๋กœ ๋ฐ›์•„๋“ค์ด๊ณ  ์„ค๋ช…ํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฐœ๋…๋“ค์ด ๊ฝค ์žˆ์–ด์„œ ํŒ€ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๊ธฐ ์ „์— ์žก์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์˜คํžˆ๋ ค ๋‹คํ–‰์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ์‰ฝ๊ฒŒ ์ดํ•ดํ–ˆ๋‹ค๊ณ  ๊ทธ๋ƒฅ ๋„˜์–ด๊ฐ€๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ณต์Šต์— ๋ณต์Šต์„ ํ†ตํ•ด ์™„๋ฒฝํ•˜๊ฒŒ ๋‚ด ๊ฒƒ์œผ๋กœ ๋งŒ๋“ค์–ด์•ผ ๋œ๋‹ค๋Š” ์ ์„ ๋‹ค์‹œ ํ•œ๋ฒˆ ๊ฐ์ธ์‹œํ‚ค๋Š” ์‹œ๊ฐ„์ด์—ˆ๋‹ค.

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