๋ชจ๋ฐ”์ผ ์•ฑ ๊ฐœ๋ฐœ์ž์—์„œ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋กœ ์ „ํ™˜ํ•˜๋ฉฐ ๋ฐฐ์šด ๊ฒƒ

minseok.kim
  • #๊ฐœ๋ฐœ์ž
  • #์ปค๋ฆฌ์–ด
  • #๋ฐฑ์—”๋“œ
  • #๋ชจ๋ฐ”์ผ
  • #fromm

์•ˆ๋…•ํ•˜์„ธ์š”. Fromm ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž ๊น€๋ฏผ์„์ž…๋‹ˆ๋‹ค.

์ €๋Š” ์ž‘๋…„๊นŒ์ง€ ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ๊ฐœ๋ฐœ์„ ๋‹ด๋‹นํ•˜๋‹ค๊ฐ€, ์˜ฌํ•ด ์ดˆ NestJS ๊ธฐ๋ฐ˜ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋กœ ์ง๋ฌด๋ฅผ ์ „ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

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

๊ทธ๋ž˜์„œ ์ด ๊ธ€์—์„œ๋Š” ๋ชจ๋ฐ”์ผ ๊ฐœ๋ฐœ์ž์—์„œ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋กœ ์ „ํ™˜ํ•˜๋ฉฐ ๋А๋‚€ ์ ๋“ค์„ ์ •๋ฆฌํ•ด๋ดค์Šต๋‹ˆ๋‹ค.

๊ด€์ ์ด ๋‹ฌ๋ผ์กŒ๋‹ค

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

๊ทธ๋Ÿฌ๋‹ค ๋ณด๋‹ˆ ์‹œ์„ ์ด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํ™”๋ฉด์—์„œ ์„œ๋ฒ„ ๋‚ด๋ถ€๋กœ ์˜ฎ๊ฒจ๊ฐ”์Šต๋‹ˆ๋‹ค. NestJS ์ฝ”๋“œ ๊ตฌ์กฐ๋ฅผ ์ฝ๊ณ , TypeORM ์ฟผ๋ฆฌ๊ฐ€ ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ๊ฑฐ์ณ ์‘๋‹ต์œผ๋กœ ์ด์–ด์ง€๋Š”์ง€๋ถ€ํ„ฐ ์ดํ•ดํ•ด์•ผ ํ–ˆ์œผ๋‹ˆ๊นŒ์š”.

๋˜ํ•œ, AWS ํ™˜๊ฒฝ๋„ ์•ฑ ๊ฐœ๋ฐœ๊ณผ๋Š” ์‚ฌ๋ญ‡ ๋‹ค๋ฅธ ์„ธ๊ณ„์˜€๋Š”๋ฐ์š”. ์‚ฌ์šฉ ์ค‘์ธ ์—ฌ๋Ÿฌ ์„œ๋น„์Šค๊ฐ€ ์„œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค ๋ณด๋‹ˆ, API๊ฐ€ ์–ด๋–ค ๊ฒฝ๋กœ๋กœ ์‹คํ–‰๋˜๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ๋ฐฐํฌ๋œ ์ดํ›„ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์–ด๋””๋ฅผ ํ™•์ธํ•ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ํŒŒ์•…ํ•˜๋Š” ์ผ์ด ์ดˆ๋ฐ˜์—๋Š” ๊ฝค ๋ณต์žกํ•˜๊ฒŒ ๋А๊ปด์กŒ์Šต๋‹ˆ๋‹ค.

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

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

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

์ฝ”๋“œ๋ฅผ ์“ฐ๊ธฐ ์ „์— ํ๋ฆ„์„ ๋จผ์ € ์ถ”์ ํ–ˆ๋‹ค

์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ๋งก์„ ๋•Œ๋ฉด ๋ชจ๋ฐ”์ผ์ด๋“  ๋ฐฑ์—”๋“œ๋“  ๊ณง๋ฐ”๋กœ ๊ตฌํ˜„๋ถ€ํ„ฐ ํ•˜์ง€๋Š” ์•Š์•˜์Šต๋‹ˆ๋‹ค.

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

๋ฐฑ์—”๋“œ๋กœ ์ „ํ™˜ํ•œ ๋’ค์—๋„ ์ด ์Šต๊ด€์€ ๊ทธ๋Œ€๋กœ ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ™”๋ฉด์˜ ํ๋ฆ„์„ ๋”ฐ๋ผ๊ฐ€๋˜ ์‹œ์„ ์€ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ API์˜ ๊ฒฝ๋กœ๋ฅผ ๋”ฐ๋ผ๊ฐ€๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ œ๊ฐ€ ๋งก์•˜๋˜ Auth ์ž‘์—…๋„ ๋น„์Šทํ–ˆ๋Š”๋ฐ์š”. ๊ธฐ์กด OTP ์ธ์ฆ์„ ์ด๋ฉ”์ผ ๋งค์ง๋งํฌ ๋ฐฉ์‹์œผ๋กœ ๋ฐ”๊พธ๋Š” ์ž‘์—…์ด์—ˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ์กด OTP ๋ฐฉ์‹์€ ๋Œ€๋žต ์ด๋Ÿฐ ๊ณผ์ •์ด์—ˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ฉ”์ผ ์ž…๋ ฅ โ†’ OTP ๋ฉ”์ผ ๋ฐœ์†ก API ํ˜ธ์ถœ โ†’ ์‚ฌ์šฉ์ž๊ฐ€ OTP ์ž…๋ ฅ โ†’ OTP ๊ฒ€์ฆ API ํ˜ธ์ถœ โ†’ ์„ฑ๊ณตํ•˜๋ฉด ํšŒ์›๊ฐ€์ž… ์ฒ˜๋ฆฌ

์ด๋ฉ”์ผ ๋งค์ง๋งํฌ๋กœ ๋ฐ”๊พธ๋ฉด์„œ ๊ฒฝ๋กœ๋Š” ์ด๋ ‡๊ฒŒ ๋‹ฌ๋ผ์กŒ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ฉ”์ผ ์ž…๋ ฅ โ†’ ๋งค์ง๋งํฌ ๋ฐœ์†ก API ํ˜ธ์ถœ โ†’ ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ฉ”์ผ ๋งํฌ ํด๋ฆญ โ†’ ํ† ํฐ ๊ฒ€์ฆ โ†’ ์„ฑ๊ณตํ•˜๋ฉด ํšŒ์›๊ฐ€์ž… ์ฒ˜๋ฆฌ

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

๋จผ์ € ์–ด๋–ค API๊ฐ€ ์ด๋ฏธ ์กด์žฌํ•˜๋Š”์ง€ Controller์—์„œ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ API๊ฐ€ ์–ด๋–ค ์‘๋‹ต์„ ๋‚ด๋ ค์ฃผ๋Š”์ง€, ํ˜ธ์ถœํ•˜๋ ค๋ฉด ์–ด๋–ค query๋‚˜ body๊ฐ€ ํ•„์š”ํ•œ์ง€๋ฅผ ํ•จ๊ป˜ ์‚ดํŽด๋ดค์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์œผ๋กœ Service์—์„œ ์‹ค์ œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ํŒŒ์•…ํ–ˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ์กฐ๊ฑด์—์„œ ์„ฑ๊ณตํ•˜๊ณ  ์–ด๋–ค ์กฐ๊ฑด์—์„œ ์‹คํŒจํ•˜๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ์‹คํŒจ ์‹œ ์–ด๋–ค ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉฐ ๊ทธ ํŒ๋‹จ์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ DB์—์„œ ์˜ค๋Š”์ง€ ์™ธ๋ถ€ API์—์„œ ์˜ค๋Š”์ง€๊นŒ์ง€ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

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

๋‹ฌ๋ผ์ง€๋Š” ์ง€์ ๊ณผ ์œ ์ง€๋˜๋Š” ์ง€์ ์„ ๊ตฌ๋ถ„ํ–ˆ๋‹ค

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

Auth ์ž‘์—…์—์„œ๋„ ๋‹ฌ๋ผ์ง€๋Š” ์ง€์ ๊ณผ ์œ ์ง€๋˜๋Š” ์ง€์ ์„ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ณผ์ •์ด ๋จผ์ € ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค.

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

ํ•˜์ง€๋งŒ ๋ชจ๋“  ํ๋ฆ„์ด ๋ฐ”๋€ ๊ฒƒ์€ ์•„๋‹ˆ์—ˆ์Šต๋‹ˆ๋‹ค.

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

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

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

๊ทธ๋ž˜์„œ ๋ฐฑ์—”๋“œ ์ž‘์—…์„ ํ•  ๋•Œ๋Š” ๋Š˜ ๊ฐ™์€ ์งˆ๋ฌธ์„ ์Šค์Šค๋กœ์—๊ฒŒ ๋˜์กŒ์Šต๋‹ˆ๋‹ค.

  • ์ด๋ฒˆ ์š”๊ตฌ์‚ฌํ•ญ์—์„œ ์‹ค์ œ๋กœ ๋‹ฌ๋ผ์ง€๋Š” ๋ถ€๋ถ„์€ ๋ฌด์—‡์ธ๊ฐ€?
  • ๊ธฐ์กด ๋กœ์ง ์ค‘ ๊ทธ๋Œ€๋กœ ๋‘˜ ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์€ ์–ด๋””์ธ๊ฐ€?
  • ๋น„์Šทํ•œ ํ๋ฆ„์ด ์ด๋ฏธ ์กด์žฌํ•˜๋Š”๊ฐ€?
  • ๋‚ด ๋ณ€๊ฒฝ ๋ฒ”์œ„๊ฐ€ ์š”๊ตฌ์‚ฌํ•ญ๋ณด๋‹ค ๋„“์–ด์ง€์ง„ ์•Š์•˜๋Š”๊ฐ€?

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

์„ฑ๊ณต ์‘๋‹ต๋ฟ ์•„๋‹ˆ๋ผ ์‹คํŒจ ์‘๋‹ต๊นŒ์ง€ ์ง์ ‘ ํ™•์ธํ–ˆ๋‹ค

๋ชจ๋ฐ”์ผ ๊ฐœ๋ฐœ์„ ํ•  ๋•Œ๋„ ๊ตฌํ˜„๋งŒ ๋๋‚ฌ๋‹ค๊ณ  ํ•ด์„œ ์ž‘์—…์ด ๋๋‚˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ ์ •์ƒ ๋™์ž‘ํ•˜๋Š”์ง€, ๋กœ๋”ฉ ์ƒํƒœ๋Š” ์ž์—ฐ์Šค๋Ÿฌ์šด์ง€, API ์‹คํŒจ ์‹œ ํ™”๋ฉด์ด ๊นจ์ง€์ง€ ์•Š๋Š”์ง€, ๋นˆ ๋ฐ์ดํ„ฐ๋‚˜ ์˜ˆ์™ธ ์ƒํ™ฉ์—์„œ ๋ฌธ์ œ๊ฐ€ ์—†๋Š”์ง€๋ฅผ ์ง์ ‘ ํ•˜๋‚˜ํ•˜๋‚˜ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฐฑ์—”๋“œ์—์„œ๋„ ์ด ์Šต๊ด€์€ ๊ทธ๋Œ€๋กœ ํ•„์š”ํ–ˆ๋Š”๋ฐ์š”. ๋‹ค๋งŒ ์ ๊ฒ€ ๋Œ€์ƒ์ด ํ™”๋ฉด ๋™์ž‘์—์„œ API ์‘๋‹ต, ์„œ๋ฒ„ ๋กœ๊ทธ, DB ์ƒํƒœ๋กœ ๋ฐ”๋€Œ์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ API ์ž‘์—…์„ ํ•œ ๋’ค์—๋Š” ๋ณดํ†ต ์ด๋Ÿฐ ์ˆœ์„œ๋กœ ํ™•์ธํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

  1. ๋กœ์ปฌ ๋˜๋Š” ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ API๋ฅผ ์ง์ ‘ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
  2. ์„ฑ๊ณต ์ผ€์ด์Šค์˜ ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  3. ์‘๋‹ต ๋ณธ๋ฌธ์ด ์˜๋„ํ•œ ๊ตฌ์กฐ๋กœ ๋‚ด๋ ค์˜ค๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  4. ์‹คํŒจ ์ผ€์ด์Šค๋ฅผ ์ง์ ‘ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
  5. ์—๋Ÿฌ ์‘๋‹ต์ด ์˜๋„ํ•œ ํ˜•ํƒœ๋กœ ๋‚ด๋ ค์˜ค๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  6. ์„œ๋ฒ„ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  7. ํ•„์š”ํ•œ ๊ฒฝ์šฐ DB ๊ฐ’์ด ์˜๋„๋Œ€๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  8. ํ”„๋ก ํŠธ์—”๋“œ๋‚˜ ์•ฑ์—์„œ ์‹ค์ œ๋กœ ํ˜ธ์ถœํ–ˆ์„ ๋•Œ๋„ ๋ฌธ์ œ๊ฐ€ ์—†๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋ฐ”์ผ ์‹œ์ ˆ์—๋„ API ๋กœ๊ทธ๋Š” ํ™•์ธํ–ˆ์ง€๋งŒ, ์ด์ œ๋Š” ์ž…์žฅ์ด ๋ฐ˜๋Œ€๊ฐ€ ๋์Šต๋‹ˆ๋‹ค. ์˜ˆ์ „์—๋Š” ์„œ๋ฒ„๊ฐ€ ๋‚ด๋ ค์ค€ ์‘๋‹ต์„ ๋ฐ›์•„ ์“ฐ๋Š” ์ชฝ์ด์—ˆ๋‹ค๋ฉด, ์ง€๊ธˆ์€ ๋‚ด๊ฐ€ ๋งŒ๋“  API๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์‘๋‹ตํ•˜๋Š”์ง€๋ฅผ ์ง์ ‘ ๊ฒ€์ฆํ•˜๋Š” ์ชฝ์ด ๋์Šต๋‹ˆ๋‹ค.

์ฐจ์ด๋Š” ์ ๊ฒ€ ๋ฐฉ์‹์— ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ์ „์—๋Š” ๊ธฐ๊ธฐ ํ™”๋ฉด์—์„œ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๊ณ  UI ์ƒํƒœ๋ฅผ ๋ดค๋‹ค๋ฉด, ์ง€๊ธˆ์€ API ํด๋ผ์ด์–ธํŠธ๋กœ ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์ƒํƒœ ์ฝ”๋“œ, ์‘๋‹ต ๋ณธ๋ฌธ, ์„œ๋ฒ„ ๋กœ๊ทธ, DB ์ƒํƒœ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

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

๊ฒฐ๊ตญ ๊ธฐ๋ณธ๊ธฐ๊ฐ€ ๋” ์ค‘์š”ํ•ด์กŒ๋‹ค

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

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

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

๊ทธ ๋ฐฉ์‹์„ ๊ตฌ์ฒด์ ์œผ๋กœ ํ’€๋ฉด ์ด ์„ธ ๊ฐ€์ง€์˜€์Šต๋‹ˆ๋‹ค.

  1. ๊ธฐ์กด ํ๋ฆ„์„ ๋จผ์ € ์ฝ๊ธฐ
  2. ๋ณ€๊ฒฝ ๋ฒ”์œ„๋ฅผ ๋ช…ํ™•ํžˆ ๊ตฌ๋ถ„ํ•˜๊ธฐ
  3. ์„ฑ๊ณต๊ณผ ์‹คํŒจ ์ผ€์ด์Šค ๋ชจ๋‘ ๊ฒ€์ฆํ•˜๊ธฐ

ํ™”๋ฉด์„ ๋‹ค๋ฃจ๋“  API๋ฅผ ๋‹ค๋ฃจ๋“  ๋ณ€ํ•˜์ง€ ์•Š๋Š” ์Šต๊ด€์ด์—ˆ๊ณ , ๋•๋ถ„์— ์ง๋ฌด ์ „ํ™˜ ์ดˆ๋ฐ˜์˜ ๋ถˆ์•ˆ๊ฐ๋„ ํฌ๊ฒŒ ์ค„์ผ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋งˆ๋ฌด๋ฆฌํ•˜๋ฉฐ

์•ž์„œ ๋งํ•œ ๊ธฐ๋ณธ๊ธฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ๋Œ์–ด์˜ฌ๋ฆฌ๋Š” ๋ฐ๋Š” Claude Code์™€ Codex ๊ฐ™์€ AI ๋„๊ตฌ์˜ ๋„์›€๋„ ์ปธ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ ์ค‘์š”ํ•œ ๊ฑด ๋„๊ตฌ ์ž์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ, ๊ทธ๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ–ˆ๋А๋ƒ์˜€์Šต๋‹ˆ๋‹ค.

๋ฐฑ์—”๋“œ ๊ฐœ๋…์ด ๋ถ€์กฑํ–ˆ์„ ๋•Œ๋Š” AI์—๊ฒŒ ์ฝ”๋“œ๋ฅผ ๋จผ์ € ์ž‘์„ฑํ•˜๊ฒŒ ํ•œ ๋’ค, ๊ทธ ์ฝ”๋“œ๋ฅผ ๋‘๊ณ  โ€œ์™œ ์ด๋ ‡๊ฒŒ ํ–ˆ์„๊นŒ?โ€, โ€œ๋” ๋‚˜์€ ๋ฐฉ๋ฒ•์€ ์—†์„๊นŒ?โ€๋ฅผ ํ•จ๊ป˜ ๋ฌผ์—ˆ์Šต๋‹ˆ๋‹ค. PRD๋‚˜ ๊ธฐํš์„œ๋„ AI์™€ ํ•จ๊ป˜ ์‚ดํŽด๋ณด๋ฉฐ ๊ตฌํ˜„๊ณผ ๋ฌธ์„œ ์‚ฌ์ด์— ์–ด๊ธ‹๋‚œ ๋ถ€๋ถ„์€ ์—†๋Š”์ง€, ๋ˆ„๋ฝ๋œ ์š”๊ตฌ์‚ฌํ•ญ์€ ์—†๋Š”์ง€ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

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

์ฝ์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

โ† ๋ชฉ๋ก์œผ๋กœ ๋Œ์•„๊ฐ€๊ธฐ

Art Changes Life

๋…ธ๋จธ์Šค์™€ ํ•จ๊ป˜ ์—”ํ„ฐํ…Œํฌ ์‚ฐ์—…์„ ํ˜์‹ ํ•ด๋‚˜๊ฐˆ ๋ฉค๋ฒ„๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.

์ฑ„์šฉ ์ค‘์ธ ๊ณต๊ณ  ๋ณด๊ธฐ