์€ํ–‰ ์„œ๋ฒ„ ํ”„๋กœ์ ํŠธ ์‹ค์Šต์„ ํ†ตํ•ด ๋ฐฐ์šฐ๋Š” ์ฝ”ํ‹€๋ฆฐ ๋งˆ์Šคํ„ฐ ํด๋ž˜์Šค

์ด ๊ฐ•์˜์—์„œ๋Š” ๊ฐ€์ƒ ๊ฒฐ์ œ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด์„œ ์ฝ”ํ‹€๋ฆฐ์„ ๋งˆ์Šคํ„ฐ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ•์˜ ์ž…๋‹ˆ๋‹ค.

(4.8) ์ˆ˜๊ฐ•ํ‰ 31๊ฐœ

์ˆ˜๊ฐ•์ƒ 343๋ช…

๋‚œ์ด๋„ ์ž…๋ฌธ

์ˆ˜๊ฐ•๊ธฐํ•œ ๋ฌด์ œํ•œ

์‹ค์Šต ์ค‘์‹ฌ
์‹ค์Šต ์ค‘์‹ฌ
mysql
mysql
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
์ž๊ฒฉ์ฆ
์ž๊ฒฉ์ฆ
์‹œํ—˜
์‹œํ—˜
์‹ค์Šต ์ค‘์‹ฌ
์‹ค์Šต ์ค‘์‹ฌ
mysql
mysql
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
์ž๊ฒฉ์ฆ
์ž๊ฒฉ์ฆ
์‹œํ—˜
์‹œํ—˜

๋จผ์ € ๊ฒฝํ—˜ํ•œ ์ˆ˜๊ฐ•์ƒ๋“ค์˜ ํ›„๊ธฐ

๋จผ์ € ๊ฒฝํ—˜ํ•œ ์ˆ˜๊ฐ•์ƒ๋“ค์˜ ํ›„๊ธฐ

4.8

5.0

Baskin

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

ํ˜„์ง ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๋‹ค. ์ฒซ ๊ฐœ๋ฐœ ์ปค๋ฆฌ์–ด๋Š” ์ž๋ฐ”๊ฐ€ ํ•œ์ฐฝ ์Šคํ”„๋ง์˜ ๊ตญ๋ฃฐ์ด์—ˆ๋˜ ๋•Œ์˜ ์ฃผ๋‹ˆ์–ด ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž์˜€์Šต๋‹ˆ๋‹ค. ์ฝ”ํ‹€๋ฆฐ์ด ๋‚˜์™€์„œ ์•ˆ๋“œ๋กœ์ด๋“œ๊ฐ€ ์ฝ”ํ‹€๋ฆฐ์„ ๋„์ž…ํ•˜๋…œ ๋งˆ๋…œ ์Šคํ”„๋ง์—๋„ ๋„๋ฆฌ ์“ฐ์ผ๊นŒ ๋‹น์‹œ ํŒ€์›๋“ค๊ณผ ๋…ผ์˜ํ•˜๋˜ ๊ฑธ๋กœ ๊ธฐ์–ตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์ดํ›„ ์˜๋„์น˜์•Š๊ฒŒ(?) Flutter ๊ฐœ๋ฐœ์ž๋กœ ์ „ํ–ฅํ•˜๋ฉฐ ์ผํ•˜๋‹ค๊ฐ€ ์ด๋ฒˆ์— ์ข‹์€ ๊ธฐํšŒ๊ฐ€ ์ƒ๊ฒจ ๋‹ค์‹œ ์Šคํ”„๋ง ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋กœ ์šด์ข‹๊ฒŒ ์ด์งํ•ด์„œ ์˜จ๋ณด๋”ฉ์„ ํ•ด๋ณด๋ ค๊ณ  ํ•˜๋˜ ์ฐฐ๋‚˜ ์ด๋ ‡๊ฒŒ ์ข‹์€ ๊ฐ•์˜๋ฅผ ๋ฐœ๊ฒฌํ–ˆ๋„ค์š”. ์ฝ”ํ‹€๋ฆฐ์„ ํ™œ์šฉํ•œ ์Šคํ”„๋ง ํ”„๋กœ์ ํŠธ๋ฅผ ๋‹ค๋ฃจ๋‹ˆ ๊ฐํšŒ๋„ ์ƒˆ๋กญ๊ณ  ์ž๋ฐ” ์Šคํ”„๋ง๊ณผ ๋น„๊ตํ•˜๋ฉด ์ฝ”๋“œ์ ์œผ๋กœ ํ›จ์”ฌ ๊ฐ„๊ฒฐํ•˜๊ณ  DX์ ์œผ๋กœ๋„ ๊ฝค๋‚˜ ํฅ๋ฏธ๋กœ์šด ๋ถ€๋ถ„๋“ค์ด ๋งŽ๋„ค์š”. ๊ฐ•์˜๋Š” ๊พธ์ค€ํžˆ ๋ณด๊ณ  ์žˆ์ง€๋งŒ ์ฃผ๋‹ˆ์–ด ์„œ๋ฒ„ ๊ฐœ๋ฐœ์ž๋กœ ์ผํ•  ๋‹น์‹œ ์™œ ์ด๋ ‡๊ฒŒ ๊ตฌํ˜„ํ•  ์ƒ๊ฐ์„ ๋ชป ํ–ˆ์„๊นŒ์— ๋Œ€ํ•œ ๋ฐ˜์„ฑ๊ณผ ๊นจ๋‹ฌ์Œ์˜ ์—ฐ์†์ธ ๊ฐ•์˜์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋งˆ์น˜ ํ›Œ๋ฅญํ•œ ๋ฆฌ๋“œ ๊ฐœ๋ฐœ์ž๋ถ„์ด ์˜†์—์„œ ์นœ์ ˆํžˆ ์•Œ๋ ค์ฃผ๋ฉฐ ๋”ฐ๋ผ๊ฐ€๋Š” ๋А๋‚Œ์ด์—์š”. ๋”๊ตฐ๋‹ค๋‚˜ Kafka, Redis ๋“ฑ์„ ์ข…ํ•ฉ์ ์œผ๋กœ ๋‹ค๋ฃจ๊ณ  ์ ์šฉํ•˜๋Š” ๊ฐ•์˜๋Š” ์ •๋ง ๋ณด๊ธฐ ๋“œ๋ฌธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์Šคํ”„๋ง์— ๋Œ€ํ•œ ์ด๋ก ์„ ๊ฐ–์ถ˜ ์ƒํƒœ์—์„œ ๋ฐฑ์—”๋“œ ์ด์ง์„ ์•ž๋‘๊ฑฐ๋‚˜ ์ค€๋น„ ์ค‘์ธ ์ฃผ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž, ์˜ค๋žซ ๋™์•ˆ ์ž๋ฐ”๋ฅผ ์“ฐ๋‹ค ์ฝ”ํ‹€๋ฆฐ ๋„์ž…์„ ๊ณ„ํšํ•˜๋Š” ๊ฐœ๋ฐœ์ž, ๋˜๋Š” ์ €์ฒ˜๋Ÿผ ํƒ€ ๋ถ„์•ผ ๊ฐœ๋ฐœ์ž๋กœ์„œ ๊ทผ๋ฌดํ•˜๋‹ค ๋‹ค์‹œ ์ „ํ–ฅ์„ ๊ณ„ํš ์ค‘์ด๊ณ , ํ˜„์žฌ๋Š” ์Šคํ”„๋ง์ด ์–ด๋””๊นŒ์ง€ ์™”๋Š”์ง€ ํŒŒ์•…ํ•˜๊ณ  ์‹ถ์€ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์•„์ฃผ ํ›Œ๋ฅญํ•œ ๊ฐ•์˜๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰ ๊ฐ•์˜๊นŒ์ง€ ์ž˜ ๋“ฃ๊ณ  ์„ฑ๊ณต์ ์ธ ์˜จ๋ณด๋”ฉ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค ใ…Žใ…Ž ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! + ํ•™์Šต์ž ๋ถ„๋“ค์—๊ฒŒ ๋“œ๋ฆฌ๊ณ  ์‹ถ์€ ๋ง์”€์€ ์‹ค๋ฌด/์‹ค์ „ ์ค‘์‹ฌ์˜ ๊ฐ•์˜๋‹ค๋ณด๋‹ˆ AOP, IoC ๋“ฑ์˜ ๊ธฐ๋ณธ์ ์ธ ๊ฐœ๋…์€ ๊ฐ•์˜ ์ค‘๊ฐ„ ์ค‘๊ฐ„ ๋‚˜์˜ค๋Š” ํ‚ค์›Œ๋“œ๋“ค์„ ์บ์น˜ํ•ด์„œ ๋ณ„๋„๋กœ ๊ณต๋ถ€ํ•˜์‹œ๊ณ  ๋‹ค์‹œ ๋“ค์œผ์‹œ๋ฉด ๋ถ„๋ช… ๊ฐ•์˜์ž๋‹˜์˜ ๊ฐœ๋ฐœ ์˜๋„๋ฅผ ํŒŒ์•…ํ•˜์‹ค ์ˆ˜ ์žˆ์„๊ฑฐ๋ผ ์ƒ๊ฐ๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋“ ๊ฑธ ๋– ๋จน์—ฌ์ฃผ๊ณ  ์„ฑ์žฅํ•˜๋Š” ๊ฐœ๋ฐœ์ž๋Š” ํ˜„์—…์—์„œ๋Š” ์‚ฌ์‹ค ๋ณด๊ธฐ ๋งค์šฐ ๋“œ๋ญ…๋‹ˆ๋‹ค. ๊ผฐ๋Œ€(?)๊ฐ™๊ธด ํ•˜์ง€๋งŒ ๊ฐœ๋ฐœ ์ง๊ตฐ์€ ์˜จ์‹ค ์† ํ™”์ดˆ ๊ฐ™์€ ์ง๊ตฐ์€ ์ ˆ๋Œ€ ์•„๋‹ˆ๋‹ˆ๊นŒ์š”!

5.0

๋ฏธ๋ž˜ 1์ธ ๊ฐœ๋ฐœ์ž

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

๊ฐ•์˜๋ฅผ ์ค€๋น„ํ•˜๋Š”๋ฐ์— ์žˆ์–ด์„œ ๋„์›€์„ ์ฃผ์—ˆ๋Š”์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ... ๊ฐ•์˜ํ•˜์‹œ๋Š” ๋ถ„์˜ ์งˆ๋ฌธ์— ๋‹ต๋ณ€์„ ๋ช‡๊ฐœ ๋“œ๋ฆฌ๋ฉฐ ๊ต๋ฅ˜ํ–ˆ๋˜ ํ† ์Šค์—์„œ ๊ทผ๋ฌดํ•˜๊ณ  ์žˆ๋Š” ๊ฐœ๋ฐœ์ž ์ž…๋‹ˆ๋‹ค. ๊ฐ•์˜๋ฅผ ์ฐ๋Š”๋‹ค๊ณ  ์ฐ๋Š”๋‹ค๊ณ  ํ•˜์…จ๋Š”๋ฐ.. ์ง„์งœ ์ด๋ ‡๊ฒŒ ์˜คํ”ˆ์„ ํ•˜์…จ๋„ค์š” ใ…‹ใ…‹ใ…‹ ์žฌ๋ฏธ์žˆ๋Š” ์ฃผ์ œ์ธ๊ฑฐ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋•๋ถ„์— ์ข‹์€ ๊ฒฝํ—˜๋„ ํ•ด๋ณด๋Š”๊ฑฐ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ฐ•์˜ ๋“ค์–ด์ฃผ์‹œ๋Š” ๋ถ„๋“ค์—๊ฒŒ ๋ชจ๋‘ ๋งŽ์€ ๋„์›€์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ผ๊ฒ ์Šต๋‹ˆ๋‹ค. !

5.0

armyso9506

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

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

์ˆ˜๊ฐ• ํ›„ ์ด๋Ÿฐ๊ฑธ ์–ป์„ ์ˆ˜ ์žˆ์–ด์š”

  • Kotlin

  • MySQL

  • MongoDB

  • OAuth2

  • Kafka

  • Redis

  • Concurrency Controll

์€ํ–‰ ์„œ๋ฒ„ ํ”„๋กœ์ ํŠธ ์‹ค์Šต์„ ํ†ตํ•ด ๋ฐฐ์šฐ๋Š” ์ฝ”ํ‹€๋ฆฐ

๋‹จ์ˆœํžˆ ์ฝ”ํ‹€๋ฆฐ ๋ฌธ๋ฒ•์„ ๋ฐฐ์šฐ๋Š” ๊ฒƒ์„ ๋„˜์–ด, ์€ํ–‰ ์„œ๋ฒ„์— ๋Œ€ํ•ด์„œ ์ƒ˜ํ”Œ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•จ๊ป˜ ์ž‘์„ฑํ•˜๋ฉฐ ์‹ค๋ฌด ๊ฒฝํ—˜์„ ์Œ“์„ ์ค€๋น„๊ฐ€ ๋˜์…จ๋‚˜์š”?


์ด ๊ฐ•์˜์—์„œ๋Š” ์ฝ”ํ‹€๋ฆฐ์˜ ๊ฐ„๊ฒฐํ•˜๊ณ  ํ‘œํ˜„๋ ฅ ๋†’์€ ๋ฌธ๋ฒ•์œผ๋กœ ํšจ์œจ์ ์ธ ์ฝ”๋“œ ์ž‘์„ฑ๋ฒ•์„ ์ตํžˆ๊ณ , Spring์˜ AOP ํ•œ๊ณ„๋ฅผ ๋›ฐ์–ด๋„˜๋Š” ์ฝ”ํ‹€๋ฆฐ๋งŒ์˜ ํ•ด๊ฒฐ์ฑ…์„ ๋ฐœ๊ฒฌํ•˜๋ฉฐ, ํ™•์žฅ์„ฑ ์žˆ๋Š” ๋กœ๊ทธ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์„ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ Redis, Kafka, MySQL, MongoDB๋ฅผ ํ™œ์šฉํ•ด ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์„œ๋ฒ„๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๊ณ , ๋™์‹œ์„ฑ ์ด์Šˆ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์‹ค์ „์—์„œ ์ ์šฉํ•ด๋ด…๋‹ˆ๋‹ค.


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

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

Kotlin ์™œ ๋ฐฐ์›Œ์•ผ ํ•˜์ง€..?

Spring๊ณผ 100% ํ˜ผ์šฉ์ด ๋œ๋‹ค๊ณ  ๋งํ•˜๋ฉฐ, Jetbrain์—์„œ ๋งŒ๋“  Kotlin์ด๋ผ๋Š” ์–ธ์–ด๋Š” Spring์—์„œ ์ ํ•ฉํ•˜์ง€ ์•Š์€ ๋™์‹œ์„ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ์ตœ์ ํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“š๊ฐ„๊ฒฐํ•˜๊ณ  ์ง๊ด€์ ์ธ ๋ฌธ๋ฒ•


Kotlin์€ ๊ฐ„๊ฒฐํ•˜๊ณ  ์ง๊ด€์ ์ธ ๋ฌธ๋ฒ•์„ ์ œ๊ณตํ•˜๋Š” ํ˜•ํƒœ์ด๊ธฐ ๋–„๋ฌธ์— ๊ฐœ๋ฐœ์ž๊ฐ€ ๋” ์ ์€ ์ฝ”๋“œ๋กœ ๋” ๋งŽ์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐ€๋…์„ฑ ํ–ฅ์ƒ์˜ ํšจ๊ณผ๊ฐ€ ์žˆ์œผ๋ฉฐ ์š”์ง€๋ณด์ˆ˜๊ฐ€ ๋” ์šฉ์ดํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“š ๋†’์€ ์ƒ์‚ฐ์„ฑ๊ณผ ์•ˆ์ „์„ฑ


Kotlin์€ ๋„ ์•ˆ์ •์„ฑ์„ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง€์›ํ•˜์—ฌ ๋„ ํฌ์ธํ„ฐ ์˜ˆ์™ธ(NullPointerException)๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ง€์›ํ•˜์—ฌ ๋ณด๋‹ค ๊ธฐ๋Šฅ์ ์ด๊ณ  ์„ ์–ธ์ ์ธ ๋ฐฉ์‹์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ๋“ค์€ ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ์„ ๋†’์ด๊ณ , ๋ฒ„๊ทธ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ์„ ์ค„์—ฌ์ค๋‹ˆ๋‹ค.

๐Ÿ“š ๋†’์€ ํ˜ธํ™˜์„ฑ


Kotlin์€ 100% ์ž๋ฐ”์™€ ํ˜ธํ™˜๋˜๋ฏ€๋กœ ๊ธฐ์กด ์ž๋ฐ” ํ”„๋กœ์ ํŠธ์— ์‰ฝ๊ฒŒ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ž๋ฐ” ๊ฐœ๋ฐœ์ž๋“ค์ด Kotlin์„ ๋ฐฐ์šฐ๋Š”๋ฐ ํฐ ์žฅ๋ฒฝ์ด ์—†์œผ๋ฉฐ, ๊ธฐ์กด ์ฝ”๋“œ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ๋„ ์ƒˆ๋กœ์šด Kotlin ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ๋‚˜๋ฉด ์ด๋Ÿฐ ๊ฒฐ๊ณผ๋ฌผ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด์š”

์ฝ”ํ‹€๋ฆฐ ๋ฌธ๋ฒ•์„ ํ™œ์šฉํ•œ API ๊ตฌ์„ฑ

ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์‚ฌ์šฉํ•˜๋Š” ์ฝ”ํ‹€๋ฆฐ์—์„œ๋Š” ๋ฌธ๋ฒ•์„ ์–ด๋–ป๊ฒŒ ์ž‘์„ฑํ• ๊นŒ์š”?? ๋‹ค์–‘ํ•œ ๋žŒ๋‹ค์‹๋„ ์ง€์›ํ•˜๋ฉฐ ์„œ๋ฒ„๋ฅผ ํ•จ๊ป˜ ๊ตฌ์„ฑํ•˜์‹œ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

Spring AOP๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•œ ์ฝ”ํ‹€๋ฆฐ ์‚ฌ์šฉ๋ฒ•

Kotlin์€ Spring์„ ์˜จ์ „ํžˆ ์ง€์›ํ•˜์ง€๋งŒ, Spring์—์„œ์˜ AOP์— ๋Œ€ํ•œ ํ•œ๊ณ„๋Š” ๋ถ„๋ช…ํ•˜๊ฒŒ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

Kotlin์—์„œ๋Š” ์–ด๋–ป๊ฒŒ ์ด๋Ÿฌํ•œ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ฐ™์ด ํ•™์Šตํ•˜์‹œ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋™์‹œ์„ฑ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ๋ฝ ๊ด€๋ฆฌ

์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ธ์Šคํ„ด์Šค๊ฐ€ ์˜ฌ๋ผ๊ฐ€ ์žˆ๋Š” ํ™˜๊ฒฝ์—์„œ๋Š” ํด๋Ÿฌ์Šคํ„ฐ๊ฐ„์— ๋™์‹œ์„ฑ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ์ž‘์—…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

Redis, MySQL, MongoDB๋ฅผ ํ™œ์šฉํ•œ ์„œ๋ฒ„ ๊ตฌ์„ฑ

์„œ๋ฒ„๋ฅผ ๊ตฌ์„ฑํ•˜๋Š”๋ฐ์—๋Š” ๋‹จ์ˆœํ•œ DB๋งŒ ์กด์žฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์บ์‹œ์™€ ๋ฉ”์‹œ์ง€ ํ๋ฅผ ์ง์ ‘ ํ™œ์šฉํ•˜๋ฉฐ ํ”„๋กœ์ ํŠธ๊ฐ€ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

OAuth2 ์ธ์ฆ ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•œ API ๋ณด์•ˆ

๋ณด์•ˆ์€ ์„œ๋ฒ„ ๊ตฌ์„ฑ์— ์žˆ์–ด์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์š”์ธ์ž…๋‹ˆ๋‹ค.

ํ•ด๋‹น ๊ฐ•์˜์—์„œ๋Š” callBack์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•ด ํ™•์žฅ์„ฑ ์žˆ๋Š” Auth ์ฒ˜๋ฆฌ์— ๋Œ€ํ•ด์„œ ๋‹ค๋ฃจ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

Kafka๋ฅผ ํ™œ์šฉํ•œ ๋ฉ”์‹œ์ง€ ํ ๊ตฌํ˜„

MSA์•„ํ‚คํ…์ฒ˜, ํฐ ๋„๋ฉ”์ธ ์„œ๋น„์Šค๋ผ๋ฉด Kafka๋Š” ์„ ํƒ์ด ์•„๋‹ˆ๋ผ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.

์‹ค์ œ Kafka ํ™œ์šฉ ๊ฐ€์ด๋“œ๋ฅผ ํ•จ๊ป˜ ์ œ๊ณตํ•ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๊ฐ•์˜์—์„œ ๋‹ค๋ฃจ๋Š” ๊ธฐ์ˆ  ์Šคํƒ

MySQL

์—ฐ๊ด€ ๊ด€๊ณ„๊ฐ€ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด์„œ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์ธ MySQL์ด ์‚ฌ์šฉ์ด ๋ฉ๋‹ˆ๋‹ค.

JPA๊ตฌ์„ฑํ•˜๊ณ , Entity๋ฅผ ์ž‘์„ฑํ•˜๋ฉฐ ๋ฐ์ดํ„ฐ๊ฐ„์˜ ์—ฐ๊ด€๊ด€๊ณ„๋ฅผ ๋ช…์‹œํ•˜๋Š” ์ฝ”๋“œ ๋ฐฉ์‹์„ ํ†ตํ•ด ์„œ๋น„์Šค ๊ฐœ๋ฐœ์— ๋Œ€ํ•ด ์œ ์—ฐํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ ธ๊ฐ€์‹œ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

MongoDB

ํด๋ฆฌ๊ธ€๋ž ํผ์‹œ์Šคํ„ด์Šค ์ „๋žต์„ ๋„์ž…ํ•˜์—ฌ ๋“ค์–ด์˜ค๋Š” ํŠธ๋ž˜ํ”ฝ ์œ ํ˜•์— ๋”ฐ๋ผ ํžˆ์Šคํ† ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋กœ์จ ํ™œ์šฉ์ด ๋ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ฐœ๋…์„ ํ•™์Šตํ•˜์‹œ๊ณ  ๊ณ ๋ คํ•˜์‹œ๋Š”๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€์— ๋Œ€ํ•ด์„œ ๋‹ค๋ฃจ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Redis, Redisson

์บ์‹ฑ ํˆด์„ ๋„์ž…ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ CPU ์ตœ์ ํ™” ๋ฐ ์บ์‹ฑ ์ฒ˜๋ฆฌ๋กœ์จ ํ™œ์šฉ์ด ๋˜๊ณ  ์žˆ์œผ๋ฉฐ, ์ถ”๊ฐ€์ ์œผ๋กœ ๋™์‹œ์„ฑ ์ œ์–ด์— ๋Œ€ํ•œ Lock์„ ๋„์ž…ํ•˜์—ฌ ์ ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Kafka

๋ฉ”์‹œ์ง€ ๊ธฐ๋ฐ˜์˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ตฌํ˜„ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. Procuer์™€ Consumer๋ฅผ ๊ตฌ์„ฑํ•˜๋ฉฐ ํ•จ๊ป˜ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ์„ฑํ•ด ๋‚˜๊ฐ€์‹ค ์ˆ˜ ์žˆ์œผ๋ฉฐ, Consumer์˜ ํ™•์žฅ์„ฑ์„ ์œ„ํ•œ ์ฝ”๋“œ ๊ตฌํ˜„์— ๋Œ€ํ•ด์„œ๋„ ๋‹ค๋ฃจ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

Spring Security

Spring Securit๋ฅผ ํ™œ์šฉํ•˜์—ฌ Token๊ฒ€์ฆ์„ ์ง„ํ–‰ํ•˜๊ณ  ์ด๋ฅผ ํ†ตํ•ด ์š”์ฒญ์— ๋Œ€ํ•œ ํ•„ํ„ฐ๋ง์„ ์„ ์ œ์ ์œผ๋กœ ์ ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ตฌ์กฐ๋ฅผ ํ†ตํ•ด ๋ฆฌ์†Œ์Šค ํšจ์œจ์„ฑ์„ ํ™•๋ณดํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ์จ ์„œ๋ฒ„๋ฅผ ๊ตฌ์„ฑํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

JWT

OAuth2 ์ธ์ฆ ์ดํ›„, ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ JWT ํ† ํฐ์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ๋‹ค๋ฃจ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ดํ›„ JWT๋ฅผ ๊ฒ€์ฆํ•˜๋Š” ๊ณผ์ •์„ Spring Security์™€ ์—ฐ๋™ํ•˜์—ฌ ํ—ˆ๊ฐ€๋œ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ์š”์ฒญ๋งŒ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ๋‹ค๋ฃจ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ค‘์š”ํ•˜๊ฒŒ ์—ฌ๊ธฐ๋Š” 4๊ฐ€์ง€ ๊ฐ€์น˜๊ด€

โญ• 1. ๊ฐ•์˜๋Š” ์ธ๊ฐ„์ ์ด์–ด์•ผ ํ•œ๋‹ค.

์ „๋ฌธ์„ฑ์ด ๋–จ์–ด์ง€๋Š” ๋ชจ์Šต์œผ๋กœ ์—ฌ๊ฒจ์งˆ์ง€๋ผ๋„ ๋ณด์—ฌ์ฃผ๊ธฐ ํŽธํ•œ ๊ฐ•์˜๋Š” ๊ฐ•์˜๊ฐ€ ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋””๋ฒ„๊น…๋„ ์ง„ํ–‰ํ•˜๋Š” ์‹œ๊ฐ„๋˜ํ•œ ๊ฐ•์˜์˜ ์ผ๋ถ€ ์ž…๋‹ˆ๋‹ค.

โญ• 2. ์‹ค๋ฌด์— ํŠนํ™”๋˜์–ด์•ผ ํ•œ๋‹ค

๊ฐœ๋ฐœ์€ ๋ง๋กœํ•˜๋Š”๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์‹ค์ œ ๊ตฌํ˜„์„ ํ•ด๋ณด๊ณ  ๋™์ž‘ํ•˜๋Š” ๊ณผ์ •์„ ํ•จ๊ป˜ ํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ธฐํš์ž๋ถ„๋“ค... ์‚ด๋ ค์ฃผ์„ธ์š”..

โญ• 3. ์ˆ˜๊ฐ•์ƒ ๋ถ„๋“ค์—๊ฒŒ ๋„์›€์ด ๋˜์–ด์•ผ ํ•œ๋‹ค.

์ œ๊ฐ€ ์‹ค๋ฌด์—์„œ ์ ์šฉํ•ด์„œ ํšจ๊ณผ๋ฅผ ๋ณด์•˜๋˜ ๊ฐœ๋…๋“ค์„ ๋…น์ด๊ณ ์ž ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์„ ํ†ตํ•ด์„œ ์‹ค๋ฌด๋ฅผ ๊ฐ„์ ‘์ ์œผ๋กœ ์ฒดํ—˜ํ•˜์‹œ๊ฑฐ๋‚˜ ์‹ค๋ฌด์ž๋ผ๋ฉด ์‹ค๋ฌด ํ™˜๊ฒฝ์— ๋” ๋›ฐ์–ด๋‚œ ํผํฌ๋จผ์Šค๋ฅผ ๋ณด์—ฌ์ฃผ์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โญ• 4. ๊ฐ•์˜๊ฐ€ ๋์ด ์•„๋‹ˆ๋‹ค.

๊ฐ•์˜๋ฅผ ์ง„ํ–‰ํ•˜์‹œ๋ฉด์„œ ์งˆ์˜์‘๋‹ต์„ ๋งŽ์ด ๋‚จ๊ฒจ์ฃผ์‹œ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์ด ๊ฐ•์˜๋Š” ์ € ํ˜ผ์ž๋งŒ์˜ ์ง€์‹์„ ํ†ตํ•ด์„œ ๋งŒ๋“ค์–ด์ง€์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ๋Œ€๊ธฐ์—… ๊ฐœ๋ฐœ์ž๋ถ„๋“ค์˜ ์˜๊ฒฌ๋˜ํ•œ ์ทจํ•ฉ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ฐ•์˜ ์™„์„ฑ์— ๋„์›€์„ ์ฃผ์‹ ๋ถ„๋“ค์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์ด๋ ฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.


private val supported_one = "์นด์นด์˜คํŽ˜์ด ํ”Œ๋žซํผ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž" private val supported_two = "ํ† ์Šค์ฆ๊ถŒ API ์„œ๋ฒ„ ๊ฐœ๋ฐœ์ž" private val supported_three = "๋น„๋ฐ€๋กœ ํ•ด๋‹ฌ๋ผ๋Š” ์œ ๋‹ˆ์ฝ˜ ์Šคํƒ€ํŠธ์—… ์„œ๋ฒ„ ๊ฐœ๋ฐœ์ž"

๊ฐ•์˜ ๊ตฌ์„ฑ๋„

โฉ์„น์…˜ 2

์‹ค๋ฌด๋ฅผ ๊ฒฝํ—˜ํ•˜๋ฉด์„œ ๋‹ค๋ฃจ์—ˆ๋˜ model๊ด€๋ฆฌ์— ๋Œ€ํ•ด์„œ ๊ฐ„๋žตํ•˜๊ฒŒ ๋‹ค๋ฃจ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

google์˜ ์„ค๊ณ„ํŒจํ„ด์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์–ด๋– ํ•œ ๊ด€์ ์œผ๋กœ type์„ ๋‹ค๋ฃจ๋Š”๊ฒƒ์ด ๋ฒ ์ŠคํŠธ์ผ์ง€์— ๋Œ€ํ•œ ๊ฐœ์ธ์ ์ธ ๊ฒฌํ•ด๊ฐ€ ๋“ค์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

โฉ์„น์…˜ 3

OAuth2์— ๋Œ€ํ•ด์„œ ํ™•์žฅ์„ฑ ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

OAuth2๋Š” ํ”Œ๋žซํผ ํŠน์ง•์— ๋”ฐ๋ผ์„œ ๊ณ„์†ํ•ด์„œ ์ถ”๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ์ธํ„ฐํŽ˜์ด์Šค ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•ด์„œ ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ํ™•์žฅ์„ฑ ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ๋ ค๋“œ๋ฆฝ๋‹ˆ๋‹ค.

โฉ์„น์…˜ 4

ํ•ด๋‹น ์„น์…˜์—์„œ๋Š” Kotlin์„ ์‚ฌ์šฉํ•˜์—ฌ Spring์—์„œ์˜ AOP์˜ ๋‹จ์ ์„ ๊ทน๋ณตํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ํ•™์Šตํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค..

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

ํ•˜์ง€๋งŒ ๋‹จ์ ๋„ ๋ช‡๊ฐ€์ง€ ์กด์žฌํ•˜๋Š” ์•„์‰ฌ์šด ์นœ๊ตฌ์ž…๋‹ˆ๋‹ค. ์ด ์„น์…˜์—์„œ๋Š” ์–ด๋–ป๊ฒŒ Spring์˜ AOP๋ฅผ ์ฝ”ํ‹€๋ฆฐ์—์„œ ์ข€ ๋” ์œ ์—ฐํ•˜๊ฒŒ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•ด์„œ ๋‹ค๋ฃจ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

โฉ์„น์…˜ 5

OAuth2์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ ๊ตฌํ˜„๊ณผ AOP๊นŒ์ง€ ์ ์šฉ์„ ๋งˆ์นœ API๋ฅผ ์ž‘์—…ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

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

โฉ์„น์…˜ 6

์ข€ ๋” B2C ๋ฐ B2B์— ์–ด์šธ๋ฆฌ๋Š” ๊ธฐ๋Šฅ ์ž‘์—…์„ ์œ„ํ•œ ์ฝ”๋“œ์ž‘์—…์ด ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค.

๋“ค์–ด์˜ค๋Š” ํŠธ๋ž˜ํ”ฝ์— ๋”ฐ๋ผ์„œ ํŠน์ • Service Logic์„ ์‹คํ–‰์‹œํ‚ค๋ฉด์„œ ์–ด๋–ป๊ฒŒ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด์„œ ํ•จ๊ป˜ ๊ตฌํ˜„ํ•˜์‹œ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

@Service, @RestController ๋“ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋น„์ง€๋‹ˆ์Šค ๋กœ์ง์„ ํ•จ๊ป˜ ์ž‘์„ฑํ•˜์‹œ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

โฉ์„น์…˜ 7

Redis๋Š” ์‹ค๋ฌด์—์„œ ๋งค์šฐ ์ค‘์š”ํ•œ ์š”์†Œ์ž…๋‹ˆ๋‹ค. ๋™์‹œ์„ฑ์„ ์ œ์–ดํ•˜๋Š”๋ฐ์— ์‚ฌ์šฉ๋„ ๊ฐ€๋Šฅํ•˜๊ณ , ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์บ์‹œ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•ด DB์— ๋Œ€ํ•œ CPU ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด์„œ ์‚ฌ์šฉ์ด ๋ฉ๋‹ˆ๋‹ค.

ํ•ด๋‹น ์„น์…˜์—์„œ๋Š” Redis ์™€ Redisson ๋ฅผ ํ™œ์šฉ ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ์ž‘์—…ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

โฉ์„น์…˜ 8

๋ณธ๊ฒฉ์ ์œผ๋กœ ์•ž์„œ ์ž‘์„ฑํ–ˆ๋˜ Redis ๊ด€๋ จ ๋ฉ”์„œ๋“œ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋™์‹œ์„ฑ ์ œ์–ด์— ๋Œ€ํ•œ ๋กœ์ง์„ ์ž‘์„ฑํ•˜์‹œ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋™์‹œ๋‹ค๋ฐœ์ ์œผ๋กœ ๋“ค์–ด์˜ค๋Š” ํŠธ๋ž˜ํ”ฝ์„ ์ˆœ์ฐจ์ฒ˜๋ฆฌ ํ•˜๊ธฐ ์œ„ํ•œ Distributed Lock ์„ ํ•จ๊ป˜ ์ž‘์„ฑํ•ด๋‚˜๊ฐ€๋ฉฐ ๋ฐ์ดํ„ฐ ์˜์†์„ฑ ๋ณด์žฅ์„ ์œ„ํ•œ ๋กœ์ง์„ ํ•จ๊ป˜ ์ž‘์„ฑ ํ•˜๋Š” ์‹œ๊ฐ„์ด ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

โฉ์„น์…˜ 9, 10

์ด ์‹œ๊ฐ„์—๋Š” Kafka ์— ๋Œ€ํ•ด์„œ ์ง์ ‘ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜์‹œ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. Kafka์˜ Producer ๋ฅผ ํ™œ์šฉํ•˜์—ฌ API์ƒ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ ๋ณ€ํ™”๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ , ์„œ๋น„์Šค๊ฐ„์˜ ๋А์Šจํ•œ ๊ฒฐํ•ฉ๊ณผ ํด๋ฆฌ๊ธ€๋ž ํผ์‹œ์Šคํ„ด์Šค ์ „๋žต์„ ํ™œ์šฉํ•˜๋Š” ์ฝ”๋“œ๋กœ์จ ํ™œ์šฉํ•˜์‹œ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.


MongoDB์— ๋Œ€ํ•œ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ , ๊ทธ์— ๋”ฐ๋ฅธ ์„œ๋น„์Šค ๋กœ์ง์„ ๊ตฌํ˜„ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฉ”๋ชจ๋ฆฌ ํ™œ์šฉ์„ ํ†ตํ•ด DB์— ๋Œ€ํ•œ ์‚ฌ์šฉ๋Ÿ‰์„ ์ค„์ด๋Š” ๋กœ์ง์— ๋Œ€ํ•ด์„œ ๊ตฌํ˜„ํ•˜๋ฉฐ ๋‹ค๋ฃจ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

โฉ์„น์…˜ 11

Spring Security ๋ฅผ ํ™œ์šฉํ•˜์—ฌ API์— ๋“ค์–ด์˜ค๋Š” ์š”์ฒญ์„ ์„ ํ–‰ํ•˜์—ฌ ์ฒ˜๋ฆฌํ•˜๋Š” ๋กœ์ง์„ ๋‹ด๋‹นํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ด ๊ณผ์ •์ด ๊ด€๋ฆฌํ•ด์•ผํ•˜๋Š” ํฌ์ธํŠธ๊ฐ€ ๋Š˜์–ด๋‚œ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์ง€๋งŒ, ๊ทธ์— ๋”ฐ๋ผ์„œ ์ถ”๊ฐ€์ ์ธ ์ž์›์„ ์ตœ์ ํ™” ํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์— ๋Œ€ํ•ด์„œ ํ•จ๊ป˜ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

โฉ์„น์…˜ 12, 13

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

์ˆ˜๊ฐ• ์ „ ์ฐธ๊ณ  ์‚ฌํ•ญ

์‹ค์Šต ํ™˜๊ฒฝ

  • Macos M3๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ดฌ์˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • Docker๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • java --version : 17.0.12 2024-07-16 LTS

  • JetBrain ๊ณ„์—ด์˜ IDE๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • Gradle์„ ์‚ฌ์šฉํ•˜์—ฌ ๋นŒ๋“œ ํ•ฉ๋‹ˆ๋‹ค.

  • ์ธํ”„๋ผ์— ๋Œ€ํ•ด์„œ๋Š” ๋‹ค๋ฃจ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ฐ™์ด ๋ณด๋ฉด ์ข‹์€ ๊ฐ•์˜!

ํƒ€์ž„ ์บก์А ํ”„๋กœ์ ํŠธ ์‹ค์Šต์„ ํ†ตํ•ด ๋ฐฐ์šฐ๋Š” ์ฝ”ํ‹€๋ฆฐ ๋งˆ์Šคํ„ฐ ํด๋ž˜์Šค

  • JetBrains์˜ ์ตœ๋Œ€ ์˜คํ”ˆ์†Œ์Šค์ธ Ktor์„ ํ†ตํ•ด์„œ ์›น ์„œ๋น„์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” Kotlin ๋งˆ์Šคํ„ฐ ํด๋ž˜์Šค ๊ฐ•์˜ ์ž…๋‹ˆ๋‹ค. ์ด ๊ฐ•์˜๋ฅผ ํ†ตํ•ด์„œ Kotlin์˜ ๊ธฐ๋ณธ์ ์ธ ๋ฌธ๋ฒ•๊ณผ ์‹ค์ „ ์•”ํ˜ธํ™” ๋ฐฉ์‹์— ๋Œ€ํ•ด์„œ ํ•™์Šตํ•˜์‹œ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ •์„์— ๊ฐ€๊น๊ณ  ๊ธฐ๋ณธ์— ์ถฉ์‹คํ•œ ์ฝ”๋ฃจํ‹ด ๋งˆ์Šคํ„ฐ ํด๋ž˜์Šค

  • ์ฝ”๋ฃจํ‹ด ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์„ฑ์€ ๋Œ€๊ธฐ์—… ๊ฐœ๋ฐœ์ž๋“ค์˜ ์ฝ”๋ฃจํ‹ด ๋งˆ์Šคํ„ฐ ํด๋ž˜์Šค!! ๋‹ค์–‘ํ•œ ์˜ˆ์ œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์‹ค๋ฌด ๊ฐœ๋ฐœ์ž๋“ค์˜ ๊ฒฌํ•ด๊ฐ€ ๋“ค์–ด๊ฐ„ ๊ฐ•์˜๋ฅผ ๋ฐ”๋กœ ๋งŒ๋‚˜๋ณด์„ธ์š”!

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

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

  • ์ฝ”ํ‹€๋ฆฐ์ด ์ฒ˜์Œ์ด์‹  ๋ถ„

  • ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๋Œ€ํ•ด์„œ ํ•™์Šต ํ•˜๊ณ  ์‹ถ์œผ์‹  ๋ถ„

  • ๋™์‹œ์„ฑ ์ œ์–ด๊ฐ€ ๊ถ๊ธˆํ•˜์‹  ๋ถ„

  • API ์„œ๋ฒ„์— ๋Œ€ํ•ด์„œ ๊ถ๊ธˆํ•˜์‹  ๋ถ„

  • ์‹ค๋ฌด์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํˆด์ด ๊ถ๊ธˆํ•˜์‹  ๋ถ„๋“ค

์•ˆ๋…•ํ•˜์„ธ์š”
Hong์ž…๋‹ˆ๋‹ค.

7,697

๋ช…

์ˆ˜๊ฐ•์ƒ

480

๊ฐœ

์ˆ˜๊ฐ•ํ‰

143

๊ฐœ

๋‹ต๋ณ€

4.7

์ 

๊ฐ•์˜ ํ‰์ 

25

๊ฐœ

๊ฐ•์˜

์ž๊ธฐ ์†Œ๊ฐœ

์ง‘์—์„œ ๋นˆ๋‘ฅ๋Œ€๋‹ค ๊ฐœ๋ฐœ์— ํฅ๋ฏธ๋ฅผ ๋А๊ปด ๊ฐœ๋ฐœ ๊ณต๋ถ€๋ฅผ ์‹œ์ž‘ํ•˜์˜€๊ณ  ํ˜„์žฌ๋Š” ํŒ๊ต์—์„œ ํ”Œ๋žซํผ ์„œ๋ฒ„ ๊ฐœ๋ฐœ์„ ๋‹ด๋‹นํ•˜์—ฌ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ๊ฐ€ ๊ณต๋ถ€๋ฅผ ํ–ˆ๋˜ ๋ฐฉ๋ฒ•๊ณผ ์‹ค๋ฌด์—์„œ ์ ‘ํ•˜์‹ค ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฌธ์ œ์ ๋“ค๊ณผ ํ•ด๊ฒฐ์ฑ…์„ ์—ฌ๋Ÿฌ๋ถ„๋“ค์—๊ฒŒ ์ œ๊ณตํ•˜๊ณ  ์‹ถ์–ด ์ง€์‹๊ณต์œ ์ž ํ™œ๋™์„ ์ด์–ด๋‚˜๊ฐ€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

๊ฐ•์˜๋Š” ์˜ค๋กœ์ง€ ์ €๋งŒ์˜ ์ง€์‹์„ ํ†ตํ•ด ๋งŒ๋“ค์–ด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฐ•์˜๋Š” ํ•จ๊ป˜ํ•˜์‹œ๋Š” ๋ถ„๋“ค์ด ๊ณ„์‹ญ๋‹ˆ๋‹ค.

 

์ง€์‹๊ณต์œ ์ž ๊ฒฝ๋ ฅ

[ๅ‰] ์ƒŒ๋“œ๋ฐ•์ŠคIP ๊ด€๋ จ ๋ธ”๋ก์ฒด์ธ ๊ฐœ๋ฐœ์ž

[ๅ‰] ๋ฉ”ํƒ€๋ฒ„์Šค ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž

[็พ] ํŒ๊ต์—์„œ ๊ณ ์—ฌ๊ฐ€๋Š” ์„œ๋ฒ„ ๊ฐœ๋ฐœ์ž

 

์ธํ„ฐ๋ทฐ ์ด๋ ฅ

๊ธฐํƒ€ ๋ฌธ์˜

  • unduck2022@gmail.com

๋”๋ณด๊ธฐ

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

์ „์ฒด

50๊ฐœ โˆ™ (9์‹œ๊ฐ„ 2๋ถ„)

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

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

์ˆ˜๊ฐ•ํ‰

์ „์ฒด

31๊ฐœ

4.8

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

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

    ์ˆ˜๊ฐ•ํ‰ 12

    โˆ™

    ํ‰๊ท  ํ‰์  5.0

    5

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

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

    • Hong
      ์ง€์‹๊ณต์œ ์ž

      ใ…‹ใ…‹ใ…‹ ํ•ญ์ƒ ์ซ“์•„๋‹ค๋‹ˆ๋ฉฐ ๊ท€์ฐฎ๊ฒŒ ํ•ด์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๋•๋ถ„์— ์ข‹์€ ๊ฐ•์˜๋ฅผ ์ค€๋น„ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค ํ•ญ์ƒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค! โค๏ธ

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

    ์ˆ˜๊ฐ•ํ‰ 14

    โˆ™

    ํ‰๊ท  ํ‰์  5.0

    5

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

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

    • Hong
      ์ง€์‹๊ณต์œ ์ž

      ์•ˆ๋…•ํ•˜์„ธ์š” Keny๋‹˜ ์ข‹์€ ํ‰ ๋‚จ๊ฒจ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์•ž์œผ๋กœ ๋” ์•Œ์ฐฌ๊ฐ•์˜๋กœ ์ถ”๊ฐ€๋กœ ์ฐพ์•„๋ต™๋„๋ก ํ• ๊ฒŒ์š”! ์ข‹์€ ํ•˜๋ฃจ ๋ณด๋‚ด์„ธ์š”!

  • ๋ฏธ๋ž˜ 1์ธ ๊ฐœ๋ฐœ์ž๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
    ๋ฏธ๋ž˜ 1์ธ ๊ฐœ๋ฐœ์ž

    ์ˆ˜๊ฐ•ํ‰ 8

    โˆ™

    ํ‰๊ท  ํ‰์  5.0

    5

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

    ๊ฐ•์˜๋ฅผ ์ค€๋น„ํ•˜๋Š”๋ฐ์— ์žˆ์–ด์„œ ๋„์›€์„ ์ฃผ์—ˆ๋Š”์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ... ๊ฐ•์˜ํ•˜์‹œ๋Š” ๋ถ„์˜ ์งˆ๋ฌธ์— ๋‹ต๋ณ€์„ ๋ช‡๊ฐœ ๋“œ๋ฆฌ๋ฉฐ ๊ต๋ฅ˜ํ–ˆ๋˜ ํ† ์Šค์—์„œ ๊ทผ๋ฌดํ•˜๊ณ  ์žˆ๋Š” ๊ฐœ๋ฐœ์ž ์ž…๋‹ˆ๋‹ค. ๊ฐ•์˜๋ฅผ ์ฐ๋Š”๋‹ค๊ณ  ์ฐ๋Š”๋‹ค๊ณ  ํ•˜์…จ๋Š”๋ฐ.. ์ง„์งœ ์ด๋ ‡๊ฒŒ ์˜คํ”ˆ์„ ํ•˜์…จ๋„ค์š” ใ…‹ใ…‹ใ…‹ ์žฌ๋ฏธ์žˆ๋Š” ์ฃผ์ œ์ธ๊ฑฐ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋•๋ถ„์— ์ข‹์€ ๊ฒฝํ—˜๋„ ํ•ด๋ณด๋Š”๊ฑฐ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ฐ•์˜ ๋“ค์–ด์ฃผ์‹œ๋Š” ๋ถ„๋“ค์—๊ฒŒ ๋ชจ๋‘ ๋งŽ์€ ๋„์›€์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ผ๊ฒ ์Šต๋‹ˆ๋‹ค. !

    • Hong
      ์ง€์‹๊ณต์œ ์ž

      ์ด๋ ‡๊ฒŒ ๋˜ ์ฐพ์•„์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!! ๋งŽ์ด ๋ฐฐ์› ๊ณ  ๋งŽ์ด ๋ฐฐ์šด ๋ถ€๋ถ„๋“ค ๋‹ค๋ฅธ๋ถ„๋“ค์—๊ฒŒ๋„ ๋‚˜๋ˆ„๊ณ  ์‹ถ์–ด์„œ ์ค€๋น„ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค ใ…Žใ…Ž ํ•ญ์ƒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!! ๋˜ ์ฐพ์•„๊ฐ€์„œ ๊ดด๋กญํž๊ฒŒ์š” ใ…‹ใ…‹ใ…‹ ๋งŽ์€ ๊ด€์‹ฌ ๋ถ€ํƒ๋“œ๋ ค์š”!

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

    ์ˆ˜๊ฐ•ํ‰ 10

    โˆ™

    ํ‰๊ท  ํ‰์  5.0

    5

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

    ๋•๋ถ„์— ํŽธํ•˜๊ฒŒ ๊ณต๋ถ€ ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

    • Hong
      ์ง€์‹๊ณต์œ ์ž

      ์ข‹์€ ํ‰ ๋‚จ๊ฒจ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ•์˜๋ฅผ ํ†ตํ•ด์„œ ์ฝ”ํ‹€๋ฆฐ์˜ ๋งค๋ ฅ์— ์ข€ ๋” ๋น ์ง€์‹œ๋ฉด ์ข‹๊ฒ ๋„ค์š”!!

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

    ์ˆ˜๊ฐ•ํ‰ 25

    โˆ™

    ํ‰๊ท  ํ‰์  5.0

    5

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

    Goat ๊ทธ ์ž์ฒด. ๊ฐœ์ธ์ ์œผ๋กœ ์ธํ”„๋Ÿฐ์— ์žˆ๋Š” ์ฝ”ํ‹€๋ฆฐ ๊ฐ•์˜ ์ค‘ one Top์ด๋ผ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

    • Hong
      ์ง€์‹๊ณต์œ ์ž

      ์•ˆ๋…•ํ•˜์„ธ์š” soap๋‹˜ ์ข‹์€ ํ‰ ๋‚จ๊ฒจ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!! ์•ž์œผ๋กœ ๋” ์ข‹์€ ๊ฐ•์˜๋กœ ์ฐพ์•„๋ต™๋„๋ก ํ• ๊ฒŒ์š”! ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

Hong๋‹˜์˜ ๋‹ค๋ฅธ ๊ฐ•์˜

์ง€์‹๊ณต์œ ์ž๋‹˜์˜ ๋‹ค๋ฅธ ๊ฐ•์˜๋ฅผ ๋งŒ๋‚˜๋ณด์„ธ์š”!

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

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

์—ฐ๊ด€ ๋กœ๋“œ๋งต

๊ฐ•์˜๊ฐ€ ํฌํ•จ๋œ ๋กœ๋“œ๋งต์œผ๋กœ ํ•™์Šตํ•ด ๋ณด์„ธ์š”!

์›” โ‚ฉ21,780

5๊ฐœ์›” ํ• ๋ถ€ ์‹œ

โ‚ฉ108,900