์ธํ”„๋Ÿฐ ์˜๋ฌธ ๋ธŒ๋žœ๋“œ ๋กœ๊ณ 
์ธํ”„๋Ÿฐ ์˜๋ฌธ ๋ธŒ๋žœ๋“œ ๋กœ๊ณ 
BEST

Java/Spring ํ…Œ์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์€ ๊ฐœ๋ฐœ์ž๋“ค์˜ ์˜ค๋‹ต๋…ธํŠธ

Spring์— ํ…Œ์ŠคํŠธ๋ฅผ ๋„ฃ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค๋“œ๋ฆฝ๋‹ˆ๋‹ค! ๋” ๋‚˜์•„๊ฐ€ ์ž์—ฐ์Šค๋Ÿฌ์šด ํ…Œ์ŠคํŠธ๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ์Šคํ”„๋ง ์„ค๊ณ„๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์›๋‹ˆ๋‹ค.

Thumbnail

์ดˆ๊ธ‰์ž๋ฅผ ์œ„ํ•ด ์ค€๋น„ํ•œ
[์†Œํ”„ํŠธ์›จ์–ด ํ…Œ์ŠคํŠธ, Spring] ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๊ฑธ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์–ด์š”

  • Spring์— ํ…Œ์ŠคํŠธ๋ฅผ ๋„ฃ๋Š” ๋ฐฉ๋ฒ•

  • ํ…Œ์ŠคํŠธ์— ํ•„์š”ํ•œ ๊ฐœ๋…

  • ์ž์—ฐ์Šค๋Ÿฌ์šด ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๋Š” ๋ฐฉ๋ฒ•

  • Mockito ์—†์ด ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•

  • ์˜์กด์„ฑ๊ณผ Testability

  • ํ—ฅ์‚ฌ๊ณ ๋‚  ์•„ํ‚คํ…์ฒ˜(Hexagonal Architecture)์™€ ์„ค๊ณ„

ํ”„๋กœ์ ํŠธ ์„ค๊ณ„๋ฅผ ๋ฐœ์ „์‹œํ‚ค๋Š” 
ํ…Œ์ŠคํŠธ์˜ ๋ณธ์งˆ์„ ์งš์–ด๋“œ๋ฆด๊ฒŒ์š”! 

Spring์— ํ…Œ์ŠคํŠธ๋ฅผ ๋„ฃ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์‹œ์ž‘ํ•ด, ์•„ํ‚คํ…์ฒ˜ ๊ฐ•์˜๋กœ ๋๋‚ฉ๋‹ˆ๋‹ค!

ํ…Œ์ŠคํŠธ์— ๋Œ€ํ•œ ์˜ฌ๋ฐ”๋ฅธ ์˜๊ฒฌ์„ ์ „๋‹ฌํ•ด ๋“œ๋ฆฌ๋ ค๋ฉด, ๊ฒฐ๊ตญ ์•„ํ‚คํ…์ฒ˜๋กœ ๋๋‚˜์•ผ ํ•œ๋‹ค๋ผ๋Š” ์ƒ๊ฐ์„ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. 

ํ…Œ์ŠคํŠธ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ์ ์ธ ๊ฐœ๋…์„ ๋ฐฐ์šฐ๊ณ , Spring(์Šคํ”„๋ง)์— ํ…Œ์ŠคํŠธ๋ฅผ ์–ด๋–ป๊ฒŒ ๋„ฃ์–ด์•ผ ํ•˜๋Š”์ง€ ๋ฐฐ์›๋‹ˆ๋‹ค. ๋” ๋‚˜์•„๊ฐ€ ์ž์—ฐ์Šค๋Ÿฌ์šด ํ…Œ์ŠคํŠธ๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ์Šคํ”„๋ง ์„ค๊ณ„๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์›๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ, ์ด๋Ÿฐ ๋‚ด์šฉ์„ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ๊ฐ€ 
ํ•„์š”ํ•œ ์ด์œ  

ํ…Œ์ŠคํŠธ์— ๋Œ€ํ•œ 
๊ธฐ๋ณธ ๊ฐœ๋…
 

Spring์— 
ํ…Œ์ŠคํŠธ๋ฅผ ๋„ฃ๋Š” 
๋ฐฉ๋ฒ• 

Spring ์„ค๊ณ„๋ฅผ 
์ง„ํ™”์‹œํ‚ค๋Š” 
๋ฐฉ๋ฒ• 

ํด๋ฆฐ 
์•„ํ‚คํ…์ฒ˜ 

ํ—ฅ์‚ฌ๊ณ ๋‚  
์•„ํ‚คํ…์ฒ˜ 
 


๊ทธ๋Ÿฐ๋ฐ ํ˜น์‹œ, ์ด๋Ÿฐ ์ƒ๊ฐ์ด ๋“ค์ง„ ์•Š๋‚˜์š”?
ํ…Œ์ŠคํŠธ์— ๋Œ€ํ•œ ๊ณ ๋ฏผ๊ณผ ์˜คํ•ด๋“ค 

โ€œํ…Œ์ŠคํŠธ๋ฅผ ์ •๋ง ๊ฐ„์ ˆํžˆ ๋„ฃ์–ด๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ...โ€

๋‹ค๋ฅธ ํšŒ์‚ฌ ๋‹ค๋‹ˆ๋Š” ์นœ๊ตฌ๋Š” ์‹œ๋Œ€์˜ ์š”๊ตฌ์— ๋ฐœ๋งž์ถฐ์„œ ํ…Œ์ŠคํŠธ๋ฅผ ๊พธ์ค€ํžˆ ๋„ฃ์–ด๊ฐ€๋ฉฐ ์ฐจ๊ทผ์ฐจ๊ทผ ์„ฑ์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์šฐ๋ฆฌ ํšŒ์‚ฌ๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ๋„ฃ์ง€ ์•Š์•„์š”. ๋’ค์ฒ˜์ง€๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ณต๋ถ€ํ•  ์˜์ง€๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋„์ €ํžˆ ์ด ๋ ˆ๊ฑฐ์‹œ ์‹œ์Šคํ…œ์— ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์–ด๋–ป๊ฒŒ ๋„ฃ์–ด์•ผ ํ• ์ง€ ๊ฐ์ด ์•ˆ ์˜ต๋‹ˆ๋‹ค.

โ€œH2๋ฅผ ์ด์šฉํ•œ ํ…Œ์ŠคํŠธ์— ์‹ ๋ฌผ์ด ๋‚ฉ๋‹ˆ๋‹ค.โ€

H2๋ฅผ ์ด์šฉํ•œ ํ…Œ์ŠคํŠธ๋Š” ๋„ˆ๋ฌด ๋А๋ฆฌ๊ณ  DB์— ์ง€๋‚˜์น˜๊ฒŒ ์ข…์†์ ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ํ…Œ์ŠคํŠธ๊ฐ€ H2๋ฅผ ์ด์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ๋ฅผ ๋Œ๋ฆฌ๊ธฐ๋Š” ๋ถ€๋‹ด์Šค๋Ÿฝ๊ณ , ํ…Œ์ŠคํŠธ๋“ค์ด h2๋ฅผ ๊ณต์œ ํ•˜๋‹ค ๋ณด๋‹ˆ ๋ฐ์ดํ„ฐ๊ฐ€ ๋’ค์—‰์ผœ์„œ ์–ด๋–จ ๋•Œ๋Š” ํ…Œ์ŠคํŠธ๊ฐ€ ์„ฑ๊ณตํ•˜๊ณ , ๋˜ ์–ด๋–จ ๋•Œ๋Š” ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

โ€œํ…Œ์ŠคํŠธ์˜ ํ•„์š”์„ฑ์„ ๋ชป ๋А๋ผ๊ฒ ์Šต๋‹ˆ๋‹ค.โ€

์šฐ๋ฆฌ ํŒ€์€ ์‚ฌ๋žŒ์ด ๊ทธ๋ ‡๊ฒŒ ๋งŽ์ง€๋„ ์•Š๊ณ , ๋ฐฐํฌํ•˜๋ฉด์„œ๋„ ๊ทธ๋‹ค์ง€ ๋ถˆ์•ˆํ•จ์„ ๋А๋‚€ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ์š”๊ตฌ์‚ฌํ•ญ์€ ์‹œ์‹œ๊ฐ๊ฐ ๋ณ€ํ•ฉ๋‹ˆ๋‹ค. ๊ทผ๋ฐ TDD๋ฅผ ์–ด๋–ป๊ฒŒ ํ•˜๋‚˜์š”? ํ…Œ์ŠคํŠธ๋Š” ๊ฐœ๋ฐœ ์†๋„๋งŒ ๋Šฆ์ถœ ๋ฟ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.


ํ…Œ์ŠคํŠธ, ์ €๋„ ๊ฐ™์€ ๊ณ ๋ฏผ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์‹œ์ค‘์— ๋‚˜์™€ ์žˆ๋Š” ํ…Œ์ŠคํŠธ ๊ด€๋ จ ์ฑ…์ด๋‚˜ ์„ธ๋ฏธ๋‚˜๋ฅผ ์ฐพ์•„๋ณด๋ฉด ๋Œ€๋ถ€๋ถ„ ๊ทธ๋ƒฅ ํ…Œ์ŠคํŠธ์˜ ์žฅ์ , ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์งœ๋Š” ๋ฒ•, JUnit, Mockito ์ •๋„๋งŒ ์–˜๊ธฐํ•˜๊ณ  ๋๋‚ฉ๋‹ˆ๋‹ค. ์˜ˆ์ œ๋Š” ๋”ฑ ์ž…๋ฌธ์ž์˜ ์ž…๋ง›์— ๋งž์„ ๋งŒํผ ๊ฐ„๋‹จํ•œ ์˜ˆ์ œ ๋ฟ์ด๊ณ ์š”. ๊ทธ๋ž˜์„œ ๋งˆ์ง€๋ง‰์— ๊ฐ€์„œ ์ฑ…์„ ๋ฎ์„ ๋•Œ๋ฉด ์ด๋Ÿฐ ์ƒ๊ฐ์ด ๋“ญ๋‹ˆ๋‹ค.

  • "๋Œ€์ฒด ์ด๊ฑธ ํ˜„์—…์—์„œ ์–ด๋–ป๊ฒŒ ์“ฐ๋ผ๋Š” ๊ฑฐ์ฃ ?"
  • "Spring์—๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ์–ด๋–ป๊ฒŒ ๋„ฃ์œผ๋ผ๋Š” ๊ฑด๊ฐ€์š”?"
  • "์ด๊ฑด ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์—†๋Š” ์ƒํ™ฉ์—์„œ ๋„ฃ๋Š” ํ…Œ์ŠคํŠธ๋‹ˆ๊นŒ ์‰ฝ๊ฒŒ ๋„ฃ์„ ์ˆ˜ ์žˆ๋Š” ๊ฑฐ ์•„๋‹Œ๊ฐ€์š”?"

ํ˜ผ๋ž€์Šค๋Ÿฌ์› ์Šต๋‹ˆ๋‹ค. H2๋ฅผ ์ด์šฉํ•œ JPA ํ…Œ์ŠคํŠธ... ๋ญ ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ElasticSearch๋‚˜ Cassandra์ฒ˜๋Ÿผ ํ…Œ์ŠคํŠธ์šฉ DB๊ฐ€ ์—†์œผ๋ฉด ์–ด๋–ป๊ฒŒ ํ…Œ์ŠคํŠธํ•˜๋ผ๋Š” ๊ฑธ๊นŒ์š”? ๊ฒŒ๋‹ค๊ฐ€ H2๋ฅผ ์ด์šฉํ•œ ํ…Œ์ŠคํŠธ๋Š” ์ •๋ง ์น˜๋ช…์ ์ผ ์ •๋„๋กœ ๋А๋ ธ์Šต๋‹ˆ๋‹ค. ํ•˜๋ฃจ์—๋„ ์—ฌ๋Ÿฌ ๋ฒˆ ๋Œ๋ฆฌ๊ธฐ ๋ถ€๋‹ด์Šค๋Ÿฌ์› ๊ณ ์š”. ํ…Œ์ŠคํŠธ๋Š” ์ž์ฃผ ๊นจ์ง€๊ณ  DB ํ…Œ์ด๋ธ”์ด๋ผ๋„ ๋ณ€๊ฒฝ๋˜๋Š” ๋‚ ์—๋Š” ๊ด€๋ จ๋œ ํ…Œ์ŠคํŠธ๋„ ์‹น ๋‹ค ์ˆ˜์ •ํ•ด์•ผ ํ•ด์„œ ์‹œ๊ฐ„ ๋‚ญ๋น„ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค๊ธฐ ์ผ์‘ค์˜€์Šต๋‹ˆ๋‹ค.

TDD๋ฅผ ๊ณต๋ถ€ํ•˜๋ ค๋ฉด, TDD๋ถ€ํ„ฐ ๊ณต๋ถ€ํ•˜๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋˜ ์ค‘ ์ €์˜ ๊ณ ๋ฏผ๋“ค์€ ์•„ํ‚คํ…์ฒ˜์™€ DDD๋ฅผ ๊ณต๋ถ€ํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด์„œ ๋ชจ๋‘ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. TDD๋Š” ํ•ญ์ƒ ํ•ซํ•˜์ฃ . ๊ทธ๋Ÿฐ๋ฐ TDD๋Š” ์ •๋ง ๋งค๋ ฅ์ ์ด๋ฉด์„œ๋„ ์–ด๋ ค์šด ๋ฐฉ๋ฒ•๋ก ์ž…๋‹ˆ๋‹ค. TDD๋ฅผ ํ•ด๋ณธ ์  ์—†๋Š” ์กฐ์ง์—์„œ TDD๊ฐ€ ์œ ํ–‰์ด๋‹ˆ ์ด์ œ๋ถ€ํ„ฐ TDD๋กœ ๊ฐœ๋ฐœํ•˜๋ ค๊ณ  ํ•˜๋ฉด ๊ทธ๊ฒŒ ๋ ๊นŒ์š”? TDD๋Š” ์ƒ๊ฐ๋ณด๋‹ค ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ์•Œ์•„์•ผ ํ•  ์„ ์ˆ˜ ์ง€์‹๊ณผ ๊ณต๊ฐ๋Œ€๋ฅผ ์ •๋ง๋กœ ๋งŽ์ด ํ•„์š”๋กœ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ TDD๋ฅผ ๊ณต๋ถ€ํ•˜๋ ค๋ฉด TDD๋ถ€ํ„ฐ ๊ณต๋ถ€ํ•˜๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ๋ฅผ ๋จผ์ € ๊ณต๋ถ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฏธ์ ๋ถ„์„ ํ•˜๋ ค๋ฉด ๋ฐฉ์ •์‹๋ถ€ํ„ฐ ๋‹ค๋ฃฐ ์ค„ ์•Œ์•„์•ผ ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ง์ž…๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ์— ๋Œ€ํ•œ ์ €์˜ ์ด์•ผ๊ธฐ๋ฅผ ํ’€์–ด๋“œ๋ฆด๊ฒŒ์š”!


ํ…Œ์ŠคํŠธ์— ๋Œ€ํ•œ ๊ณ ๋ฏผ์„ 
๋ช…์พŒํ•˜๊ฒŒ ํ•ด๊ฒฐํ•ด๋“œ๋ฆด๊ฒŒ์š”.

ํ…Œ์ŠคํŠธ์˜ ํ•„์š”์„ฑ์„ ๋ชป ๋А๋ผ๊ฒ ๋‹ค๋ฉด

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

ํ…Œ์ŠคํŠธ๋กœ ์ข‹์€ ์„ค๊ณ„๋ฅผ ์–ป๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฅด๊ฒ ๋‹ค๋ฉด

ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋งŒ ๋„ˆ๋ฌด ์น˜์ค‘ํ•ด์„œ ๊ณต๋ถ€ํ•˜์‹  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. JUnit ์‚ฌ์šฉ๋ฒ•, Mockito ์‚ฌ์šฉ๋ฒ•, h2๋ฅผ ์—ฐ๋™ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ณต๋ถ€ํ•˜๋Š” ๊ฒƒ์€ ๋ถ„๋ช… ์˜๋ฏธ๊ฐ€ ์žˆ๋Š” ๊ณต๋ถ€์ง€๋งŒ ๊ทธ๊ฒŒ ํ…Œ์ŠคํŠธ์˜ ๋ณธ์งˆ์€ ์•„๋‹™๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ๋ฅผ ์™œ ํ•ด์•ผํ•˜๊ณ , ์–ด๋–ค ๋ชฉํ‘œ๊ฐ€ ์žˆ๊ณ  ๊ทธ ๋ชฉํ‘œ๋ฅผ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ป๊ฒŒ ์‹ค์ฒœํ•ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ์ตํ˜€์•ผ ํ•ฉ๋‹ˆ๋‹ค

ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ ์—†์ด ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฅด๊ฒ ๋‹ค๋ฉด

ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ์— ๋Œ€ํ•œ ์งˆ๋ฌธ ์—ญ์‹œ ์ด์ „ ์งˆ๋ฌธ๊ณผ ๊ฐ™์€ ๋Œ€๋‹ต์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์—ฌ๋Ÿฌ๋ถ„์ด Typescript + Nest.js๋ฅผ ์“ฐ๋Š” ํ™˜๊ฒฝ์— ์žˆ๋‹ค๋ฉด, ์–ด๋–ป๊ฒŒ ํ…Œ์ŠคํŠธํ•˜์‹ค ๊ฑด๊ฐ€์š”? Mockito, H2 ๊ฐ™์€ ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ ์—†์ด๋„ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ตํ˜€์•ผ ํ•ฉ๋‹ˆ๋‹ค.


Spring ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๊ผญ ํ•„์š”ํ•œ 
ํ…Œ์ŠคํŠธ ๋„ฃ๋Š” ๋ฒ•
์„ ๋ฐฐ์›Œ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • โœ… ์‹ค๋ฌด์™€ ๋™๋–จ์–ด์ง„ ํ…Œ์ŠคํŠธ ๋„ฃ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค๋“œ๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • โœ… Spring ๊ฐœ๋ฐœ์ž์—๊ฒŒ ํ•„์š”ํ•œ ํ…Œ์ŠคํŠธ ๋„ฃ๋Š” ๋ฒ•์„ ์•Œ๋ ค๋“œ๋ฆฝ๋‹ˆ๋‹ค.
  • โœ… ๊ทธ๋Ÿฌ๋ฉด์„œ ๋™์‹œ์— ์™œ ์ด๋ ‡๊ฒŒ ํ•ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ์•Œ๋ ค๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์ด ์›๋ฆฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ์ง€์‹์€ ๋‹ค๋ฅธ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ๋„ ํ†ต์šฉ๋˜๋Š” ์ง€์‹๋“ค์ž…๋‹ˆ๋‹ค. Nest.js๋ฅผ ์‚ฌ์šฉํ•˜์‹œ๋˜, Swing UI๋ฅผ ์‚ฌ์šฉํ•˜์‹œ๋˜, Gin์„ ์‚ฌ์šฉํ•˜์‹œ๋˜... ์–ด๋””์—์„œ๋“  ์ ์šฉ๋  ์ˆ˜ ์žˆ๋Š” ์ง€์‹์ด๋ผ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ข…์žฅ์— ๊ฐ€์„œ๋Š” ์„ค๊ณ„์— ๋Œ€ํ•œ ๊ฐ•์˜๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ์˜ ๊ฐ€์น˜๋ฅผ ์ตœ๋Œ€ํ•œ์œผ๋กœ ์„ค๋ช…ํ•ด ๋“œ๋ฆฌ๊ธฐ ์œ„ํ•ด์„  ์„ค๊ณ„์— ๋Œ€ํ•œ ๋‚ด์šฉ์ด ๋น ์ ธ์„  ์•ˆ ๋œ๋‹ค ์ƒ๊ฐํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. 

์ ์–ด๋„ ์ œ๊ฐ€ ์ฐพ์•„๋ณด๊ธฐ๋ก  ๊ตญ๋‚ด์˜ ์Šคํ”„๋ง์— ํ…Œ์ŠคํŠธ๋ฅผ ๋„ฃ๋Š” ๋ฒ•์„ ์•Œ๋ ค์ฃผ๋Š” ์ฑ…์ด๋‚˜ ๊ฐ•์˜๋Š” ๋ชป ๋ณธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ชจ๋‘ @Mock, @Spy ์ด๋Ÿฐ ์–ด๋…ธํ…Œ์ด์…˜์„ ์ด์šฉํ•˜์—ฌ mockingํ•˜๊ณ  ์˜์กด์„ฑ ์ฃผ์ž… ๋ฐ›์•„ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋งŒ์•ฝ ์ด๋Ÿฐ Mock ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ํ™˜๊ฒฝ์ด๋ผ๋ฉด ์–ด๋–ป๊ฒŒ ํ…Œ์ŠคํŠธ ํ•˜์‹ค ๊ฑด๊ฐ€์š”? ๋ณธ์งˆ์ ์œผ๋กœ ์ด๋Ÿฌํ•œ ์–ด๋…ธํ…Œ์ด์…˜์ด ์—†์–ด๋„ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค! ๊ทธ๋ฆฌ๊ณ  ํ…Œ์ŠคํŠธํ•ด์•ผ ํ•  ๋Œ€์ƒ์ด ๋ฌด์—‡์ธ์ง€๋„ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. 


ํ…Œ์ŠคํŠธ๋ฅผ ํ…Œ์ŠคํŠธ๋‹ต๊ฒŒ ์ถ”๊ฐ€ํ•˜๋Š” 
๋ฐฉ๋ฒ•์„ ์•Œ๋ ค๋“œ๋ฆฝ๋‹ˆ๋‹ค!

ํ…Œ์ŠคํŠธ์˜ ํ•„์š”์„ฑ์„ ์•Œ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

ํ”„๋ ˆ์ž„์›Œํฌ ์—†์ด๋„ ์Šคํ”„๋ง์— ํ…Œ์ŠคํŠธ๋ฅผ ๋„ฃ๋Š” ๋ฒ•์„ ์•Œ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์Šคํ”„๋ง์„ ์‚ฌ์šฉํ•˜๋Š” ๋” ๋‚˜์€ ๋ฐฉ๋ฒ•์„ ์•Œ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋ ˆ์ด์–ด๋“œ ์•„ํ‚คํ…์ฒ˜์—์„œ ํ—ฅ์‚ฌ๊ณ ๋‚  ์•„ํ‚คํ…์ฒ˜๋กœ ๋ณ€ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์˜ค๋ฆฌ์—”ํ…Œ์ด์…˜

ํ…Œ์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์€ ์กฐ์ง์—์„œ TDD๋ฅผ ๋„์ž…ํ•  ๋•Œ ์‹คํŒจํ•˜๋Š” ์ด์œ ๋ฅผ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋‚ด๊ฐ€ ํ•˜๋Š” TDD๋Š” ์™œ ์‹คํŒจํ•˜๋Š”์ง€ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ์— ๋Œ€ํ•œ ์ œ๋Œ€๋กœ ๋œ ์ดํ•ด ์—†์ด ํ…Œ์ŠคํŠธ๋ฅผ ๋ฌด์ž‘์ • ๋„ฃ๊ธฐ ์‹œ์ž‘ํ–ˆ์„ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์ ๋“ค์„ ๊ฐ™์ด ์‚ดํŽด๋ด…๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ์— ๋Œ€ํ•œ ์ด๋ก 

๊ธฐ๋ณธ์ ์ธ ํ…Œ์ŠคํŠธ ์ง€์‹์„ ๊ณต๋ถ€ํ•ฉ๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ์˜ ํ•„์š”์„ฑ์— ๋Œ€ํ•ด ๊ณต๊ฐํ•˜๊ณ  ํ…Œ์ŠคํŠธ์™€ ์„ค๊ณ„์˜ ์ƒ๊ด€๊ด€๊ณ„๋ฅผ ํŒŒ์•…ํ•ฉ๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค๋ฉด์„œ ๊ฐœ๋ฐœ์ž๋Š” ์–ด๋–ค ๊ณ ๋ฏผ์„ ํ•ด์•ผํ•˜๋Š”์ง€ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ์ตœ์ข…์ ์œผ๋กœ ์ž์—ฐ์Šค๋Ÿฌ์šด ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด Testability๋ฅผ ๋†’์ด๋Š” ์ž‘์—…์— ๋Œ€ํ•ด ๊ฐ™์ด ์‚ดํŽด๋ด…๋‹ˆ๋‹ค.

1๋ถ€ - ํ† ์ดํ”„๋กœ์ ํŠธ ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ ์ ์šฉ

์•ž์œผ๋กœ ์‚ฌ์šฉํ•  ํ† ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฐ™์ด ์‚ดํŽด๋ด…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ† ์ด ํ”„๋กœ์ ํŠธ์— ์–ด๊ฑฐ์ง€๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ๋„ฃ์–ด๋ณด๋ฉฐ ์ตœ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ๋„ฃ์–ด ์ปค๋ฒ„๋ฆฌ์ง€ 100%๋ฅผ ๋‹ฌ์„ฑํ•ด๋ด…๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์—์„œ h2, MockMvc, PowerMock๊ฐ™์€ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ตœ์ข…์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ํ…Œ์ŠคํŠธ๋“ค์„ ๊ฐ™์ด ์‚ดํŽด๋ณด๋ฉฐ ํšŒ๊ท€ ๋ฒ„๊ทธ๋งŒ์„ ์ปค๋ฒ„ํ•˜๊ธฐ ์œ„ํ•œ ํ…Œ์ŠคํŠธ์—๋Š” ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”์ง€ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค.

๋ฐฉํ–ฅ์„ฑ ํƒ์ƒ‰

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

1๋ถ€ ์‹ค๊ธฐ์—์„œ ๋ฌด์ž‘์ • ํ…Œ์ŠคํŠธ๋ฅผ ๋„ฃ๊ธฐ ์œ„ํ•ด ๊ณ ๊ตฐ๋ถ„ํˆฌํ–ˆ๋‹ค๋ฉด, 2๋ถ€์—์„œ๋Š” Mockito ๊ฐ™์€ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—†์ด๋„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ Mockํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ตํž™๋‹ˆ๋‹ค. 2๋ถ€ ์‹ค๊ธฐ๋ฅผ ์œ„ํ•ด ๋ฏธ๋ฆฌ ์–ด๋–ป๊ฒŒ ์ฝ”๋“œ๋ฅผ ๋ฐ”๊ฟ€์ง€ ๊ฐ™์ด ์‚ดํŽด๋ด…๋‹ˆ๋‹ค.

2๋ถ€ - ํ† ์ดํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ ์„ค๊ณ„ ๊ฐœ์„ 

์•ž์„  ๋ฐฉํ–ฅ์„ฑ ํƒ์ƒ‰์„ ํ†ตํ•ด ์–ป์€ ์ธ์‚ฌ์ดํŠธ๋ฅผ ์šฐ๋ฆฌ์˜ ํ† ์ด ํ”„๋กœ์ ํŠธ์— ๋„์ž…ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์—์„œ ๊ตฌ์กฐ์ ์ธ ๋ณ€ํ™”๋ฅผ ์ค˜๊ฐ€๋ฉฐ ์„ค๊ณ„๋ฅผ ๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ๊ณผ์ •์—์„œ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ธฐ๋ฒ•๋“ค์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • ํŒจํ‚ค์ง€ ๊ตฌ์กฐ ๊ฐœ์„ 
  • ๋„๋ฉ”์ธ๊ณผ ์˜์†์„ฑ ๊ฐ์ฒด๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ
  • ์„œ๋น„์Šค ๋กœ์ง์„ ๋„๋ฉ”์ธ์œผ๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ
  • ์™ธ๋ถ€ ์—ฐ๋™์„ ์˜์กด์„ฑ ์—ญ์ „ํ•˜๊ธฐ
  • ํ…Œ์ŠคํŠธ๋ฅผ ์†Œํ˜• ํ…Œ์ŠคํŠธ๋กœ ๋งŒ๋“ค๊ธฐ

์ง„ํ™”ํ•˜๋Š” ์•„ํ‚คํ…์ฒ˜

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


๊ฐœ๋ฐœ์ž๋กœ ์„ฑ์žฅํ•˜๋Š” ๋ฐ  
๋„์›€์„ ๋“œ๋ฆฌ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค!

์•ˆ๋…•ํ•˜์„ธ์š”, ๊น€์šฐ๊ทผ์ž…๋‹ˆ๋‹ค! ๐Ÿ‘‹

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


Q&A ๐Ÿ’ฌ

Q. JUnit์ด๋‚˜ Mockito ์‚ฌ์šฉ๋ฒ•์€ ์•ˆ ์•Œ๋ ค์ฃผ์‹œ๋‚˜์š”?

๋„ค, ์•„์‰ฝ๊ฒŒ๋„ ํ•ด๋‹น ๊ฐ•์˜๋Š” JUnit๊ณผ Mockito ์‚ฌ์šฉ๋ฒ•์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ๋‹ค๋ฃจ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด์œ ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Context) ์ˆ˜๊ฐ•์ƒ ๊ฐœ์ธ๋งˆ๋‹ค ์ฒ˜ํ•œ ์ƒํ™ฉ์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์ด๋ฏธ ๋ช‡ ๋ฒˆ ํ…Œ์ŠคํŠธ๋ฅผ ์งœ๋ณธ ์‚ฌ๋žŒ์ด ์žˆ๋‹ค๋ฉด, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋‹ค๋ฃจ๋Š” ์ˆ™๋ จ๋„๊ฐ€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํšŒ์‚ฌ์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ JUnit์ด๋‚˜ Mockito๊ฐ€ ์•„๋‹ ์ˆ˜๋„ ์žˆ๊ณ . ๋ฒ„์ „์ด ๋‹ฌ๋ผ์„œ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์กด์žฌํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋กœ JUnit4์—์„œ๋Š” @ParameterizedTest๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ์•ž์„œ ์–ธ๊ธ‰ ๋“œ๋ฆฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์˜ ์‚ฌ์šฉ๋ฒ•์ด ๊ทธ๋ ‡๊ฒŒ ์–ด๋ ต์ง€ ์•Š๊ณ  ๊ด€๋ จ๋œ ์ข‹์€ ์ž๋ฃŒ๊ฐ€ ์ด๋ฏธ ๋„ˆ๋ฌด ๋งŽ์Šต๋‹ˆ๋‹ค. ํ•˜๋‹ค๋ชปํ•ด Github README ํŒŒ์ผ์„ ์ฝ๊ฑฐ๋‚˜ ๊ณต์‹ ๊ฐ€์ด๋“œ๋ฅผ ์ฝ๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ ์ถฉ๋ถ„ํžˆ ์‚ฌ์šฉ๋ฒ•์„ ์ตํž ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‚ฌ์šฉ๋ฒ•์€ ์ค‘์š”ํ•œ ๋‚ด์šฉ์ด ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

Test Design) ํŠน์ • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ํŠน์ • ๊ธฐ๋Šฅ์„ ์ด์šฉํ•˜์—ฌ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฒ•์„ ์ตํžˆ๋Š” ๊ฒƒ์€ ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์—†์œผ๋ฉด ํ•ด๋‹น ํ…Œ์ŠคํŠธ๋ฅผ ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. ๋„๊ตฌ๋‚˜ ํ”„๋ ˆ์ž„์›Œํฌ๋ณด๋‹ค ํ…Œ์ŠคํŠธ๋ฅผ ์–ด๋–ป๊ฒŒ ์„ค๊ณ„ํ•˜๊ณ , ์–ด๋–ป๊ฒŒ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅํ•œ ๊ตฌ์กฐ๋กœ ๋ฐ”๊พธ๋Š”์ง€๊ฐ€ ๋” ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ๊ฐ•์˜๋Š” ๋„๊ตฌ์— ์ง‘์ค‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ๋Š” ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค์˜ ํ•œ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์š”๊ตฌ์‚ฌํ•ญ ๋ถ„์„, ์„ค๊ณ„ ๋ฐ ๋ฐฐ์น˜, ์œ ์ง€๋ณด์ˆ˜ ๊ฐ™์€ ๋งฅ๋ฝ์—์„œ ๊ณ ๋ ค๋˜์–ด์•ผ ํ•  ์ ์„ ์ ๊ฒ€ํ•˜๋Š” ๊ฒƒ์ด ๋” ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

Q. ์ด์ „ ๊ฐ•์˜์™€์˜ ์ฐจ์ด์ ์€ ์–ด๋–ค ๊ฒƒ์ด ์žˆ๋‚˜์š”?

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

์†”์งํ•œ ์ด์•ผ๊ธฐ๋กœ ์ด์ „ ๊ฐ•์˜๋ฅผ ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜์…จ๋‹ค๋ฉด ๊ตณ์ด ์ค‘๋ณตํ•ด์„œ ์ˆ˜๊ฐ•ํ•  ํ•„์š”๋Š” ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด์ „ ๊ฐ•์˜๊ฐ€ ๊ตฌ์กฐ์ ์œผ๋กœ ์™œ ์ด๋ ‡๊ฒŒ ๋˜์–ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ์„ค๋ช…ํ•˜๋Š” ๊ฐ•์˜์˜€๋‹ค๋ฉด, ์ด๋ฒˆ ๊ฐ•์˜๋Š” ์‹ค์ œ๋กœ ์ฝ”๋“œ ๋ ˆ๋ฒจ์—์„œ ์–ด๋–ป๊ฒŒ ํ’€๋ฆฌ๋Š”์ง€๋ฅผ ๋‹ค๋ฃจ๋Š” ๊ฐ•์˜๋ผ๊ณ  ๋ณด์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. 

Q. ์ˆ˜๊ฐ• ์ „ ์•Œ์•„์•ผ ํ•  ์‚ฌํ•ญ์ด ์žˆ๋‚˜์š”?

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

๐Ÿ’พ ์ˆ˜๊ฐ• ์ „ ํ™•์ธํ•ด์ฃผ์„ธ์š”!

  • ๊ฐ•์˜ ๋‚ด ์‹ค์Šต ๋‚ด์šฉ์€ ๊ฐ€๊ธ‰์  ํŠน์ • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‚˜ IDE, ์‚ฌ์–‘์— ์˜์กด์ ์ด์ง€ ์•Š๊ฒŒ ๊ตฌ์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค. ํŠน์ • ๋ฒ„์ „์— ์žˆ๋Š” ํŠน์ • ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•œ ๊ฐ•์˜๊ฐ€ ๋˜์ง€ ์•Š๋„๋ก ๋…ธ๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜๋„ ํ˜น์‹œ ๋ชจ๋ฅด๋‹ˆ ๊ฐ•์—ฐ์ž์˜ ๋žฉํƒ‘ ๊ตฌ์„ฑ์ด ์•„๋ž˜์™€ ๊ฐ™์€ ํ™˜๊ฒฝ์ž„์„ ์•Œ๋ ค๋“œ๋ฆฝ๋‹ˆ๋‹ค.
    • PC ์‚ฌ์–‘ ๋ฐ ์šด์˜์ฒด์ œ: MacBook Pro (16-inch, 2019) ๋ฐ macOS Monterey 12.6
    • IDE: IntelliJ IDEA 2021.3.2
    • Java 17, Spring Boot 3.0.1, JUnit 4.13.2, AssertJ 3.23.1
  • ์ˆ˜๊ฐ•์ƒ์—๊ฒŒ๋Š” 40ํŽ˜์ด์ง€ ๋‚ด์™ธ์˜ PPT ์ž๋ฃŒ 12๊ฐœ๋ฅผ ํ•จ๊ป˜ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ์ด ๊ฐ•์˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋‚˜ ์Šคํ”„๋ง์„ ๋‹ค๋ฃจ๋Š” ๋ฐฉ๋ฒ• ๋“ฑ์— ๋Œ€ํ•ด ๋‹ค๋ฃจ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • Spring ๋ฐ Spring Data JPA๋ฅผ ํ•œ ๋ฒˆ์ด๋ผ๋„ ๋‹ค๋ค„๋ณธ ์‚ฌ์šฉ์ž๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
  • Controller, Service, Repository์— ๋Œ€ํ•ด ์•Œ๊ณ  ๊ณ„์‹ ๋‹ค๋Š” ์ „์ œ๋กœ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฐ•์˜์— ์‚ฌ์šฉํ•  ํ† ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์ˆ˜์—…์œผ๋กœ ํ’€์–ด๋‘์—ˆ์Šต๋‹ˆ๋‹ค. ํ™•์ธํ•ด๋ณด์‹œ๊ณ  ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์ •๋„๋ฉด ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.
  • PPT ์ผ๋ถ€๋ฅผ ์บก์ฒ˜ํ•ด์„œ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ๋ธ”๋กœ๊ทธ์— ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์€ ํ—ˆ์šฉํ•˜๋‚˜ ์ž๋ฃŒ ์ „์ฒด๋ฅผ ๊ฐœ์ธ ๋ธ”๋กœ๊ทธ์— ๊ณต์œ ํ•˜๋Š” ๊ฑด ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ์–‘ํ•ด ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค!
  • ์ด์ „ ๊ฐ•์˜์™€ ์ค‘๋ณต๋˜๋Š” ๋‚ด์šฉ์ด ๋‹ค์†Œ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชฉ์ฐจ๋ฅผ ํ™•์ธํ•ด๋ณด์‹œ๊ณ  ๊ฒน์น˜๋Š” ๋‚ด์šฉ ์žˆ๋Š”์ง€ ํ™•์ธํ•ด ๋ด์ฃผ์„ธ์š”. 
  • ๋ฐ๋ชจ ํ”„๋กœ์ ํŠธ๋Š” ์—ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”.

์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜
์ถ”์ฒœ๋“œ๋ ค์š”!

ํ•™์Šต ๋Œ€์ƒ์€
๋ˆ„๊ตฌ์ผ๊นŒ์š”?

  • Spring์— ํ…Œ์ŠคํŠธ๋ฅผ ๋„ฃ๊ณ  ์‹ถ์€ ๋ถ„

  • Spring์— ํ…Œ์ŠคํŠธ๋ฅผ ์–ด๋–ป๊ฒŒ ๋„ฃ์–ด์•ผ ํ• ์ง€ ๋ง‰๋ง‰ํ•˜์‹  ๋ถ„

  • ๋‚ด๊ฐ€ ๊ฐœ๋ฐœํ•œ Spring ํ”„๋กœ์ ํŠธ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ์„ค๊ณ„ ๊ตฌ์กฐ์ธ์ง€ ํ—ท๊ฐˆ๋ฆฌ๋Š” ๋ถ„

  • ํ…Œ์ŠคํŠธ๋ฅผ ๋„ฃ์–ด๋ณด๋ ค ํ–ˆ์ง€๋งŒ ์‹คํŒจํ–ˆ๋˜ ๋ถ„

  • H2 ๊ฐ™์€ ํ…Œ์ŠคํŠธ DB๊ฐ€ ์—†๋Š” NoSQL์— ํ…Œ์ŠคํŠธ๋ฅผ ๋„ฃ๊ณ  ์‹ถ์€ ๋ถ„

์„ ์ˆ˜ ์ง€์‹,
ํ•„์š”ํ• ๊นŒ์š”?

  • Java ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜์‹ค ์ˆ˜ ์žˆ์œผ์‹  ๋ถ„

  • Spring ๊ธฐ๋ณธ (Controller / Service / Repository๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์•„์‹œ๋Š” ๋ถ„)

  • JPA๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์‹  ๋ถ„

์•ˆ๋…•ํ•˜์„ธ์š”
๊น€์šฐ๊ทผ์ž…๋‹ˆ๋‹ค.

3,263

๋ช…

์ˆ˜๊ฐ•์ƒ

225

๊ฐœ

์ˆ˜๊ฐ•ํ‰

47

๊ฐœ

๋‹ต๋ณ€

4.9

์ 

๊ฐ•์˜ ํ‰์ 

2

๊ฐœ

๊ฐ•์˜

  • (ํ˜„) ์นด์นด์˜ค ๋ฐฑ์—”๋“œ ์—”์ง€๋‹ˆ์–ด
  • (์ˆ˜์ƒ) ๐Ÿ† ๊ณต๊ฐœ SW ๊ฐœ๋ฐœ์ž ๋Œ€ํšŒ [2020 ์ผ๋ฐ˜๋ถ€๋ฌธ / ๊ธˆ์ƒ_์ •๋ณดํ†ต์‹ ์‚ฐ์—…์ง„ํฅ์›์žฅ์ƒ] 

 

ํ˜„์žฌ ์นด์นด์˜ค์—์„œ ์ผํ•˜๊ณ  ์žˆ๊ณ , ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•ด์„œ, ํ‡ด๊ทผ ํ›„์—๋„ ํ•ญ์ƒ ๋ฌด์–ธ๊ฐ€๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

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

 

๊นƒํ—ˆ๋ธŒ > https://github.com/kok202
๋ธ”๋กœ๊ทธ > https://kok202.tistory.com

๋”๋ณด๊ธฐ

์ปค๋ฆฌํ˜๋Ÿผ

์ „์ฒด

25๊ฐœ โˆ™ (6์‹œ๊ฐ„ 20๋ถ„)

ํ•ด๋‹น ๊ฐ•์˜์—์„œ ์ œ๊ณต:

์ˆ˜์—…์ž๋ฃŒ
๊ฐ•์˜ ๊ฒŒ์‹œ์ผ: 
๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ์ผ: 

์ˆ˜๊ฐ•ํ‰

์ „์ฒด

153๊ฐœ

4.9

153๊ฐœ์˜ ์ˆ˜๊ฐ•ํ‰

  • dfghcvb11๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
    dfghcvb11

    ์ˆ˜๊ฐ•ํ‰ 5

    โˆ™

    ํ‰๊ท  ํ‰์  5.0

    5

    100% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

    ์ด ๊ฐ•์˜๋Š” ๋‹จ์ˆœํ•œ ํ…Œ์ŠคํŠธ ๊ฐ•์˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์ €๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•œ JUnit, Mockito ๋“ฑ์˜ ์‚ฌ์šฉ๋ฒ•์„ ๋ฐฐ์šฐ๊ณ  ์ ์šฉํ•ด ๋‚˜๊ฐ€๋Š” ์ค‘์ด์˜€์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ค๊ฐ€ ๋‹จ์ˆœํžˆ ํ…Œ์ŠคํŠธ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋„˜์–ด, ์ข‹์€ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ, ์ž˜ ๋งŒ๋“  ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์— ๋Œ€ํ•ด ๊ถ๊ธˆ์ฆ์ด ์ƒ๊ฒผ๊ณ , ์ด ๊ฐ•์˜๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ•์‚ฌ๋‹˜์˜ 1ํŽธ ๊ฐ•์˜๋ฅผ ์žฌ๋ฐŒ๊ฒŒ ๋ณธ ํ„ฐ๋ผ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹ ๋ขฐ๋„๊ฐ€ ๋†’์•˜๊ณ , ๋ชฉ์ฐจ์˜ ๋‚ด์šฉ๋„ ํฅ๋ฏธ๋กœ์›Œ ๋ณด์˜€์Šต๋‹ˆ๋‹ค. ๊ฐ•์˜๋ฅผ ์ „๋ถ€ ์ˆ˜๊ฐ•ํ•˜๊ณ  ํ›„๊ธฐ๋ฅผ ๋‚จ๊น๋‹ˆ๋‹ค. ์ด ๊ฐ•์˜๋Š” ๋‹จ์ˆœํ•œ ํ…Œ์ŠคํŠธ ๊ฐ•์˜๊ฐ€ ์•„๋‹Œ, ์ข‹์€ ์•„ํ‚คํ…์ฒ˜์™€ OOP์— ๋Œ€ํ•ด ๊ณ ๋ฏผํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ๋Š” ์•„์ฃผ ๋ฉ‹์ง„ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ๋ฅผ ์งœ๋Š” ๋ชฉ์ ์ด ๋‹จ์ˆœํ•œ ํšŒ๊ท€ ๋ฐฉ์ง€์˜€๋˜ ์ €์—๊ฒŒ, ํ…Œ์ŠคํŠธ์™€ ์„ค๊ณ„๋Š” ์ƒํ˜ธ ๋ณด์™„์  ๊ด€๊ณ„์ด๋ฉฐ, ๊ธฐ์กด ๋ ˆ์ด์–ด๋“œ ์•„ํ‚คํ…์ฒ˜์˜ ๋ฌธ์ œ์ ๊ณผ, ๋ ˆ์ด์–ด๋“œ ์•„ํ‚คํ…์ฒ˜์—์„œ ์ž‘์„ฑํ•˜๋Š” ํ…Œ์ŠคํŠธ์˜ ํ•œ๊ณ„์ ์„ ์•Œ๋ ค ์ฃผ๋ฉด์„œ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ข‹์€ ์„ค๊ณ„์— ๋Œ€ํ•ด ๊ณ ๋ฏผํ•˜๊ฒŒ ๋งŒ๋“ค์–ด ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ์ ๋“ค์„ ์ด๋ก ์œผ๋กœ๋งŒ ์งš์–ด์ฃผ๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ, ์ฝ”๋“œ๋ฅผ ๋ฆฌํŒฉํ† ๋ง ํ•˜๋Š” ๊ณผ์ •์„ ํ†ตํ•ด ๋” ๋‚˜์€ ๊ตฌ์กฐ์™€ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ์„ ์ œ์‹œํ•ด์ค๋‹ˆ๋‹ค. ์–ผ๋งˆ์ „ Mockito๋ฅผ ์ฒ˜์Œ ๋ฐฐ์šฐ๊ณ , Stubbing์„ ์ด์šฉํ•œ ํ…Œ์ŠคํŠธ์— ๊ฐํƒ„ํ•˜๊ณ  ์žˆ๋˜ ์ €์—๊ฒŒ, Mocktio๊ฐ€ ํ•„์š”ํ–ˆ๋˜ ํ…Œ์ŠคํŠธ๋“ค์„ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—†์ด ์ˆœ์ˆ˜ ์ž๋ฐ”๋กœ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฉ‹์ง„ ๊ฒฝํ—˜์„ ์„ ์‚ฌํ•ด ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ๋ชจ๋“  ๊ฒƒ์€ OOP๋ผ๋Š” 1ํŽธ์˜ ๋ง์”€์ด ๊ทธ๋Œ€๋กœ ์ด์–ด์ง€๋Š” ์ข‹์€ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค. ๊ทธ ์™ธ์—๋„ ํ…Œ์ŠคํŠธ์— ํ•„์š”ํ•œ ๊ฐœ๋…๋“ค๊ณผ ๊ฐ•์‚ฌ๋‹˜์˜ ๊ฐœ์ธ์ ์ธ ๊ณ ๋ฏผ์ด ๋‹ด๊ธด ์˜๊ฒฌ๋“ค์„ ์ด์•ผ๊ธฐ ํ•ด์ฃผ์‹œ๋Š” ๊ฒƒ๋„ ์ข‹์•˜์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ๋ถ„์•ผ์— ๋Œ€ํ•œ ์ง„์ค‘ํ•จ๊ณผ ํƒœ๋„๋“ค์„ ๊ฐ„์ ‘์ ์œผ๋กœ ๋А๋‚„ ์ˆ˜ ์žˆ์–ด ๋งŽ์ด ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค. ์ข‹์€ ๊ฐ•์˜ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

    • ํฌ์•„์•„์•™๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
      ํฌ์•„์•„์•™

      ์ˆ˜๊ฐ•ํ‰ 2

      โˆ™

      ํ‰๊ท  ํ‰์  3.0

      5

      100% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

      ๋‚ด๊ฐ€ ์ธํ”„๋Ÿฐ์—์„œ ๊ฒฐ์ œํ•œ ๋ชจ๋“  ๊ฐ•์˜ ํ†ตํ‹€์–ด์„œ ์ตœ๊ณ ์˜ ๊ฐ•์˜๋ผ ๋‹จ์–ธํ•œ๋‹ค. ์ฑ…์—์„œ ๋ฒ ๋ผ์ง€ ์•Š๊ณ  ๋จธ๋ฆฌ ์ฅ์–ด ๋œฏ์œผ๋ฉฐ ๋งŒ๋“  ์˜ค๋ฆฌ์ง€๋„ ์ปค๋ฆฌํ˜๋Ÿผ ๊ตฌ์„ฑ, ๊ฐ•์˜ ๋งˆ๋‹ค ๊ฝ‰๊ฝ‰ ์ฐจ ์žˆ๋Š” ์•Œ๋งน์ด๋“ค, ์–ด์˜๋ถ€์˜ ํšก์„ค์ˆ˜์„ค ์—†์Œ, ๊น”๋”ํ•œ ๋ฉ˜ํŠธ์™€ ๋ฌธ์žฅ, ์ ์ ˆํ•œ ์†๋„์™€ ๋ช…ํ™•ํ•œ ๋ฐœํ™”, ํ…Œ์ŠคํŠธ๋ผ๋Š” ๊ตฌ์ฒดํ™”๋œ ์‹ค์ฒœ ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด ์„ค๊ณ„๋ผ๋Š” ํฐ ๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๊ณ , ๋‹ค์‹œ ์„ค๊ณ„๋ผ๋Š” ๋ฐ”ํƒ• ์•„๋ž˜ ํ…Œ์ŠคํŠธ๋ฅผ ๋Œ์–ด๋‚ธ๋‹ค. ๊ฐ•์‚ฌ๋‹˜์ด ์–ผ๋งˆ๋‚˜ ๊ณ ๋ฏผํ•˜๊ณ  ๋ฐ˜๋ณตํ•˜๊ณ  ๊ฐœ์„ ํ•˜๋ฉฐ ๊ฐœ๋ฐœ์„ ํ•ด์˜ค์…จ๋Š”์ง€ ๋ณด์ด์ง€ ์•Š์•„๋„ ๋ณด์ธ๋‹ค. ๊ทธ๊ฑธ ๊ฐ•์˜๋กœ ๊ธฐ๊ฐ€ ๋ง‰ํžˆ๊ฒŒ ๋…น์—ฌ ๋‚ด์…จ๋‹ค. ์ธํ”„๋Ÿฐ์—์„œ ๊ฐ•์˜ ํ•œ ๋‘๊ฐœ ๋“ค์–ด๋ณธ ๊ฒŒ ์•„๋‹ˆ์ง€๋งŒ ์ด ๊ฐ•์˜ ๋งŒํผ A/S๋ฅผ ์„ธ๋ จ๋˜๊ฒŒ ํ•œ ๊ฒƒ๋„ ๋ชป๋ดค๋‹ค. ์˜์ƒ์ด๋ผ๋Š” ๊ฒŒ ๋˜ ์ฐ๊ณ ๋‚˜๋ฉด ๊ธ€์ฒ˜๋Ÿผ ์‰ฝ๊ฒŒ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š”๊ฒŒ ์•„๋‹ˆ๊ธฐ๋„ ํ•˜๊ณ , ๊ฐ•์˜ ํŠน์„ฑ ์ƒ ํ•ญ์ƒ ์•„๋ฆ„๋‹ต๊ณ  ํ•œ์น˜์˜ ์‹ค์ˆ˜๋„ ์—†๋Š” ๋ญ”๊ฐ€๋ฅผ ๋ณด์—ฌ์ฃผ๊ณ  ์‹ถ์€ ์š•๊ตฌ๋„ ๊ฐ•ํ• ํ…๋ฐ ๊ทธ๋Ÿฌํ•œ ๋ถ€๋ถ„์€ ๊ฐ€๊ฐ์—†์ด ์„ธ๋ จ๋˜๊ฒŒ ์ˆ˜์ •ํ•ด๋‘์—ˆ๋‹ค. ๊ฐ•์‚ฌ๋‹˜์ด ์‹ค์ˆ˜๋‚˜ "์ด๋žฌ์œผ๋ฉด ์ข‹์•˜์„ํ…๋ฐ"ํ•˜๋Š” ๋ถ€๋ถ„์—์„œ๋Š” ํ™”๋ฉด์ด ํšŒ์ƒ‰์œผ๋กœ ๋ฐ”๋€Œ๋ฉด์„œ ์Œ์„ฑ๋งŒ ๋‚˜์˜ค๋Š” ๊ตฌ๊ฐ„์ด ์žˆ๋‹ค. ์ด๋Ÿฐ ๋ถ€๋ถ„์ด ๋‚˜์˜ค๋ฉด ๋‚ด๊ฐ€ ์ •์‹ ์ฐจ๋ฆฌ๊ณ  ๋“ฃ๊ณ  ์žˆ๋‚˜ ์ ๊ฒ€๋„ ๋˜๊ณ , ๋‚ด ์ƒ๊ฐ๊ณผ ๋น„๊ตํ•ด ๋ณผ ์ˆ˜๋„ ์žˆ๊ณ , ์ €๋Ÿฐ ๊ณ ๋ฏผ์„ ๊ฐ•์‚ฌ๋‹˜๋„ ํ•˜์‹œ๋Š” ๊ตฌ๋‚˜ ์‹ถ๊ธฐ๋„ ํ•˜๊ณ , ์•”ํŠผ ์ด๋Ÿฐ A/S์˜์ƒ๋„ ๋งˆ์น˜ ์งœ์—ฌ์ง„ ๊ฐ๋ณธ์ฒ˜๋Ÿผ ๊ต์œก ๋„๊ตฌ๋กœ ํ›Œ๋ฅญํžˆ ์—ญํ• ์„ ํ•˜๊ฒŒ ํ•ด๋‘์—ˆ๋‹ค. ํ…Œ์ŠคํŠธ๋ฅผ ์ƒ€๋Š”๋ฐ ์„ค๊ณ„๊ฐ€ ๋”ธ๋ ค์™”๋‹ค. ๊ทผ๋ฐ ๊ทธ ์„ค๊ณ„๊ฐ€ ํ…Œ์ŠคํŠธ๋ณด๋‹ค ๋” ๋น„์‹ผ๊ฑฐ์˜€๋‹ค. ์ด๋Ÿฐ ๋ฏธ์นœ๋“ฏ์ด ํ›Œ๋ฅญํ•œ ๊ฐ•์˜์— ์ˆ˜๊ฐ•ํ‰ 54๊ฐœ ๋ฟ์ธ ๊ฑฐ ๋ณด๊ณ  ๋นก์ณ์„œ ์ˆ˜๊ฐ•ํ‰ ์ฒ˜์Œ ์จ ๋ณธ๋‹ค ใ…‹ใ…‹ ๋‚ด์šฉ, ๋ชฉ์†Œ๋ฆฌ, ์˜ค๋””์˜ค, ์˜์ƒ, ๋ถ„๋Ÿ‰.. ๋ชจ๋“  ๊ฒŒ ์‘์ง‘๋ ฅ์žˆ๊ฒŒ ๋ญ‰์ณ ์žˆ์–ด์„œ ๋งˆ์น˜ ์•„๋ฆ„๋‹ค์šด ์„ค๊ณ„๋ฅผ ๋ณด๋Š” ๊ฒƒ ๊ฐ™์•˜๋‹ค. ๋‚˜๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ์ˆ˜๊ฐ•์ƒ +9,999๋ช… ๋˜์–ด ์žˆ๋Š” ๋„ค์ž„๋“œ ๊ฐ•์˜๋ณด๋‹ค ๊น€์šฐ๊ทผ ๊ฐ•์‚ฌ๋‹˜์˜ ๊ฐ•์˜๊ฐ€ ํ›จ์”ฌ ์ข‹์•˜๋‹ค.

    • saechimdaeki๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
      saechimdaeki

      ์ˆ˜๊ฐ•ํ‰ 29

      โˆ™

      ํ‰๊ท  ํ‰์  5.0

      5

      100% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

      ๋„ˆ๋ฌด ์žฌ๋ฏธ์žˆ๊ฒŒ ๋ณด์•˜๊ณ  ์ €๋„ ์‹ ์ž…๋ถ„๋“ค์ด ์ €ํฌ๋Š” ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๊ฐ€ ์—†๋‚˜์š”? ๋ผ๊ณ  ๋ฌผ์„ ๋•Œ ๋ฐ˜์„ฑํ•˜๊ฒŒ ๋  ๊ฒƒ ๊ฐ™๋„ค์š” ใ… _ใ… .

      • chan park๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
        chan park

        ์ˆ˜๊ฐ•ํ‰ 4

        โˆ™

        ํ‰๊ท  ํ‰์  5.0

        5

        100% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

        ๋งˆ์นจ ์Šคํ”„๋ง์„ ๊ณต๋ถ€ํ•˜๊ณ  ํ…Œ์ŠคํŠธ๋ฅผ ์–ด๋–ป๊ฒŒ ์ž‘์„ฑํ•˜๋Š” ์ฝ”๋“œ๋“ค์ด ๋ณด๋‹ˆ ๋ฐ˜๋ณต๋˜๋Š” ์˜๋ฏธ์—†๋Š” ํ…Œ์ŠคํŠธ ์ž‘์„ฑ๋“ค์ด ๋ˆˆ์— ๋ณด์˜€์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์™œ ์ด๋Ÿฐ ๋ฐ˜๋ณต์ ์ธ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋Š”์ง€ ์˜๋ฌธ์ ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋งˆ์นจ ์ธํ”„๋Ÿฐ์—์„œ ์ƒˆ ๊ฐ•์˜๋กœ ์™œ ์Šคํ”„๋ง ํ…Œ์ŠคํŠธ ๊ฐœ๋ฐœ์ž๋“ค์ด ์ž‘์„ฑํ•˜๋Š”๋ฐ ์‹คํŒจํ•˜๋Š”์ง€ ๋ผ๋Š” ๊ฐ•์˜๊ฐ€ ์ƒˆ๋กœ ๋‚˜์˜จ๊ฑธ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๋”ฑ ์ €๋ฅผ ์œ„ํ•œ ๊ฐ•์˜๋‹ค! ํ•ด์„œ ๊ณผ๊ฐํžˆ ๊ฒฐ์ œ๋ฅผ ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์™„๊ฐ•์„ ํ•œ ํ›„, ์—ญ์‹œ ํ›„ํšŒ์—†๋Š” ์„ ํƒ์„ ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. 10๋ถ„ ๊ฐ•์˜๋ฅผ ์ผ์‹œ์ •์ง€๋ฅผ ๋ˆŒ๋Ÿฌ ํ•˜๋‚˜ํ•˜๋‚˜ ๊ฐ•์‚ฌ๋‹˜๊ป˜์„œ ์ด์•ผ๊ธฐ ํ•˜์‹œ๋Š” ๋ถ€๋ถ„์ด ๋ฌด์—‡์ธ์ง€ ๊ณฐ๊ณฐ์ด ์ƒ๊ฐํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ฐ•์˜ ์‹œ๊ฐ„์€ 6์‹œ๊ฐ„์ด์ง€๋งŒ 60์‹œ๊ฐ„ ๋งŒํผ์˜ ํ€„๋ฆฌํ‹ฐ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒŒ ๋А๊ปด์กŒ์Šต๋‹ˆ๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด ๊ณตํ•™์— ๋Œ€ํ•ด ์‹œ์•ผ๋ฅผ ๋„“ํ˜€์ค€ ๊ฐ•์‚ฌ๋‹˜๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

        • ๊น€์„ ์ง„๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
          ๊น€์„ ์ง„

          ์ˆ˜๊ฐ•ํ‰ 4

          โˆ™

          ํ‰๊ท  ํ‰์  5.0

          5

          48% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

          ์ง€๊ธˆ๊นŒ์ง€ ์ˆ˜๊ฐ•ํ‰์„ ๋‚จ๊ฒจ๋ณธ ์  ์—†๋Š”๋ฐ ์ด ๊ฐ•์˜๋Š” ์งฑ์ž…๋‹ˆ๋‹ค.

          ๋น„์Šทํ•œ ๊ฐ•์˜

          ๊ฐ™์€ ๋ถ„์•ผ์˜ ๋‹ค๋ฅธ ๊ฐ•์˜๋ฅผ ๋งŒ๋‚˜๋ณด์„ธ์š”!

          โ‚ฉ59,400