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

Node.js์˜ ๋ชจ๋“  ๊ฒƒ

๊ธฐ์ดˆ๋ถ€ํ„ฐ ์ฐจ๊ทผ์ฐจ๊ทผ ์‹ค๋ ฅ์„ ํƒ„ํƒ„ํžˆ ๋‹ค์ ธ ๊ฐ€๋ฉฐ Node.js ์‹ค๋ ฅ์„ ์™„์„ฑํ•˜๋Š” ์˜ฌ์ธ์› ๊ฐ•์˜ ๐Ÿ‘

Thumbnail

์ดˆ๊ธ‰์ž๋ฅผ ์œ„ํ•ด ์ค€๋น„ํ•œ
[๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ๋ฐฑ์—”๋“œ] ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.

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

  • Node.js ์™€ ์‹ค์ „ Application

  • Node.js + ORM(prisma) + PostgreSQL, Mongo

๋– ์˜ค๋ฅด๋Š” Node.js ์ง„์˜์˜ ์ƒ›๋ณ„! 
ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ORM, ํ”„๋ฆฌ์ฆˆ๋งˆ๋ฅผ ๋งŒ๋‚˜๋ณด์„ธ์š”. 

What is Prisma? 
์ง€๊ธˆ, ์™œ ํ”„๋ฆฌ์ฆˆ๋งˆ์ผ๊นŒ์š”?

Prisma๋Š” ์ƒˆ๋กœ์šด Node.js ์ง„์˜์˜ ORM์ด์—์š”.
์ฐจ์„ธ๋Œ€ ORM๋‹ต๊ฒŒ TypeScript๋ฅผ ์ง€์›ํ•˜๊ณ , Express ์™ธ์—๋„ ๋‹ค์–‘ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์“ธ ์ˆ˜ ์žˆ์–ด์š”.

typeORM๋ณด๋‹ค ๋”์šฑ ์ง๊ด€์ ์ธ ์ฐจ์„ธ๋Œ€ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ORM

Prisma๋Š” ์ž‘๋…„๋ถ€ํ„ฐ ๊ธ‰๊ฒฉํžˆ ๋‹ค์šด๋กœ๋“œ ์ˆ˜๊ฐ€ ์ฆ๊ฐ€ํ•˜๋ฉฐ ์ปค๋ฎค๋‹ˆํ‹ฐ ์—ญ์‹œ ์„ฑ์žฅํ•˜๊ณ  ์žˆ์–ด์š”. ์ด๋ฒˆ ๊ฐ•์˜์—์„œ๋Š” Prisma๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋‹ค์–‘ํ•œ ์žฅ์ ์„ ํ•จ๊ป˜ ์‹ค์Šตํ•ด๋ณด๋ฉฐ ๊ฒฝํ—˜ํ•ด๋ณด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

  • โœ… ์‰ฌ์šด DB ์—ฐ๊ฒฐ, ๊ฐ„ํŽธํ•œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜
  • โœ… Type Safety ๋ฐ TypeScript ์ง€์›
  • โœ… ๋‹ค์–‘ํ•œ ํƒ€์ž… ๋ฐ ์ฟผ๋ฆฌ ์ง€์›
  • โœ… SQL, NoSQL ๋“ฑ ๋‹ค์–‘ํ•œ DB ์—”์ง„ ์ง€์›
  • โœ… ์ž˜ ์ •๋ฆฌ๋œ ๊ณต์‹ ๋ฌธ์„œ ๋ณด์œ 
  • โœ… ์Šคํ‚ค๋งˆ๋กœ ๊ฐ„ํŽธํ•œ DB ์„ค๊ณ„ 
  • โœ… VSCode Extension ์ง€์›
  • โœ… ํŠธ๋žœ์žญ์…˜ ๋ฐ ๋ฏธ๋“ค์›จ์–ด ์ง€์› 

์–ธ์ œ๊นŒ์ง€ typeORM + Mongoose์ธ๊ฐ€์š”?

Prisma ๋ฆฌํŒฉํ† ๋ง์œผ๋กœ ์ฝ”๋“œ๋ฅผ ๋” ๊ฐ„๊ฒฐํ•˜๊ฒŒ.

๋ฆฌํŒฉํ† ๋ง ์ „ TypeORM ์ฝ”๋“œ
๋ฆฌํŒฉํ† ๋ง ์ „ Mongoose ์ฝ”๋“œ
Prisma๋กœ ๋ฆฌํŒฉํ† ๋งํ•œ ์ฝ”๋“œ

Prisma๋กœ ์†์ด ํŽธ์•ˆํ•ด์ง€๋Š” ๋ฆฌํŒฉํ† ๋ง์„ ๊ฒฝํ—˜ํ•ด๋ณด์„ธ์š”! JavaScript ์œ ์ €๋“ค์—๊ฒŒ ์ต์ˆ™ํ•œ ๊ฐ์ฒดํ˜• ์ฟผ๋ฆฌ๋กœ ํ›จ์”ฌ ๊ฐœ๋ฐœ์ด ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค. ORM์„ ํ†ตํ•ด์„œ DB์— ๋” ๋งŽ์€ ์„ค์ •์„ ํ•  ์ˆ˜๋„ ์žˆ๊ณ , ์ง๊ด€์ ์ธ ์ฟผ๋ฆฌ๋ฅผ ์งค ์ˆ˜ ์žˆ๊ฒŒ ๋ผ์š”!

PostgreSQL & MongoDB?

Prisma๊ฐ€ postgreSQL ๋ฐ MongoDB์™€์˜ ๋›ฐ์–ด๋‚œ ํ˜ธํ™˜์„ฑ์„ ์ž๋ž‘ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•„์‹œ๋‚˜์š”? ๐Ÿ˜ฎ ๋‘ DBMS๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ํฌ๊ณ  ์ž๋ฃŒ๊ฐ€ ๋งŽ์„ ๋ฟ ์•„๋‹ˆ๋ผ ์ตœ๊ทผ ๋“ค์–ด ๋”๋”์šฑ ์ธ๊ธฐ๊ฐ€ ๋†’์•„์ง€๊ณ  ์žˆ๋Š” ์šฐ์ˆ˜ํ•œ DB์˜ˆ์š”. NoSQL ์ง„์˜์˜ ๋Œ€ํ‘œ DBMS์ธ MongoDB, ์˜คํ”ˆ์†Œ์Šค์ธ๋ฐ๋‹ค Prisma์—์„œ ๊ณต์‹์ ์œผ๋กœ ์ œ์ผ ๋งŽ์€ ์ง€์›์„ ํ•ด์ฃผ๋Š” PostgreSQL๊นŒ์ง€, ์ด ๊ฐ•์˜์—์„œ ๋ชจ๋‘ ์‹ค์Šต์„ ์ง„ํ–‰ํ•  ๊ฑฐ์˜ˆ์š”.

๊ทธ๋ž˜์„œ, ์ด๋ฒˆ ๊ฐ•์˜์—์„œ๋Š”!

Node.js ํ™˜๊ฒฝ์—์„œ NestJS๋ฅผ ํ™œ์šฉํ•ด Prisma๋ฅผ ๋ฐฐ์›Œ๋ด…๋‹ˆ๋‹ค. postgreSQL์™€ MongoDB๋ฅผ ์ƒํ™ฉ์— ๋งž๊ฒŒ migrateํ•˜๊ณ , ๋‹ค์–‘ํ•œ ์ฟผ๋ฆฌ๋ฅผ ํ†ตํ•ด CRUD ๊ตฌํ˜„์€ ๋ฌผ๋ก  JOIN๊ณผ ์ง‘๊ณ„ ์ฟผ๋ฆฌ๊นŒ์ง€ ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉํ•ด๋ด…์‹œ๋‹ค!


์ด๋Ÿฐ ๊ฑธ ๋ฐฐ์›Œ์š” ๐Ÿƒ

1. ORM ํ•„์ˆ˜ ๊ฐœ๋…

๋ฉด์ ‘ ๋‹จ๊ณจ ์งˆ๋ฌธ๋“ค๊ณผ ORM์„ ์‚ฌ์šฉํ•  ๋•Œ ๊ผญ ์•Œ์•„์•ผ ํ•˜๋Š” ๊ฐœ๋…๋“ค์„ ๋ชจ์•˜์Šต๋‹ˆ๋‹ค.

2. Prisma ์‚ฌ์šฉ๋ฒ•

Prisma ๋ช…๋ น์–ด๋“ค์„ ํ•œ๋ฒˆ์”ฉ ์ง์ ‘ ์‚ฌ์šฉํ•ด๋ณผ ๊ฑฐ์˜ˆ์š”. ์ดํ•ด๊ฐ€ ์ž˜ ๊ฐ€์ง€ ์•Š๋Š” ๋ถ€๋ถ„์ด ์žˆ๋”๋ผ๋„ ๊ฑฑ์ • ๋งˆ์„ธ์š”! ๋’ค์—์„œ ์‹ค์Šต์„ ํ•˜๋‹ค ๋ณด๋ฉด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ตํž ์ˆ˜ ์žˆ์œผ๋‹ˆ, ์šฐ์„ ์€ ๊ฐ€๋ณ๊ฒŒ ์‹œ์ž‘ํ•ด๋ณด์„ธ์š”.

3. Prisma + PostgreSQL ์‹ค์Šต & MongoDB ๊ฐœ๋… ๋น ๋ฅด๊ฒŒ ํ›‘์–ด๋ณด๊ธฐ

Prisma์—์„œ ์“ธ ์ˆ˜ ์žˆ๋Š” ์ฟผ๋ฆฌ๋“ค๊ณผ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ด…๋‹ˆ๋‹ค.


Q&A ๐Ÿ’ฌ

Q. NestJS์— ๋Œ€ํ•ด ์•Œ์•„์•ผ ํ•˜๋‚˜์š”?

2023 ver. ์ˆ˜์—…์˜ ๊ฒฝ์šฐ NestJS๋กœ ์‹ค์Šต์„ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ์ง€๋งŒ ์„ ์ˆ˜ ์ง€์‹์€ ์•„๋‹™๋‹ˆ๋‹ค. ๊ฐ•์˜๋ฅผ ๋ณด๊ณ  ๋”ฐ๋ผํ•˜์‹ ๋‹ค๋ฉด ํฌ๊ฒŒ ์–ด๋ ต์ง€ ์•Š์œผ์‹ค ๊ฑฐ์˜ˆ์š”!

Q. ๋ฐฑ์—”๋“œ ์ฝ”๋“œ๋Š” ์‹ค๋ฌด์™€ ์—ฐ๊ด€์ด ์žˆ๋‚˜์š”?

Prisma์—๋งŒ ์ง‘์ค‘ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ•์˜์—์„œ Prisma ์™ธ ์š”์†Œ๋Š” ๋ชจ๋‘ ๋ฐฐ์ œํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Dto๋‚˜ Type ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ๊ฐ•์˜์—์„œ ์ƒ๋žต๋˜์–ด ์žˆ๋Š” ์  ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”!

Q. 2022 ver. ์ˆ˜์—…์€ ๋“ค์–ด๋„ ๋˜๋‚˜์š”?

๋„ค! ๋“ค์–ด๋„ ๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ ์Œ์งˆ๊ณผ ํ™”์งˆ์ด ์กฐ๊ธˆ ์•ˆ ์ข‹์Šต๋‹ˆ๋‹ค. 2023๋…„ ๋ฒ„์ „๊ณผ ๋‚ด์šฉ์€ ๋งŽ์ด ๊ฒน์น˜์ง€๋งŒ, ์ฃผ์ œ๋Š” ๊ฒน์น˜์ง€ ์•Š์œผ๋‹ˆ Prisma์— ๋Œ€ํ•ด ๋” ์—ฐ์Šตํ•˜๊ณ  ์‹ถ์œผ์‹œ๋‹ค๋ฉด ๋“ค์œผ์…”๋„ ๋ฉ๋‹ˆ๋‹ค!

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

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

  • Node.js๋กœ ํฌ๊ณ  ์ž‘์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค์–ด๋ณด๊ณ  ์‹ถ์œผ์‹  ๋ถ„

  • Node.js์˜ ์ „๋ฐ˜์ ์ธ ์ƒํƒœ๊ณ„๋ฅผ ์•Œ๊ณ  ์‹ถ์œผ์‹  ๋ถ„

  • Node.js ํ™˜๊ฒฝ์—์„œ Prisma๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๊ณ  ์‹ถ์œผ์‹  ๋ถ„

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

  • JavaScript

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

366

๋ช…

์ˆ˜๊ฐ•์ƒ

13

๊ฐœ

์ˆ˜๊ฐ•ํ‰

33

๊ฐœ

๋‹ต๋ณ€

5.0

์ 

๊ฐ•์˜ ํ‰์ 

2

๊ฐœ

๊ฐ•์˜

์•ˆ๋…•ํ•˜์„ธ์š”! ์ œ ๊ฒฝํ—˜์„ ์ž์œ ๋กญ๊ฒŒ ๊ณต์œ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
yongsoocho578@gmail.com ์œผ๋กœ ํ”ผ๋“œ๋ฐฑ๊ณผ ์˜๊ฒฌ์€ ํ™˜์˜์ž…๋‹ˆ๋‹ค.

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

์ „์ฒด

104๊ฐœ โˆ™ (13์‹œ๊ฐ„ 7๋ถ„)

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

    ์ˆ˜๊ฐ•ํ‰

    ์•„์ง ์ถฉ๋ถ„ํ•œ ํ‰๊ฐ€๋ฅผ ๋ฐ›์ง€ ๋ชปํ•œ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค.
    ๋ชจ๋‘์—๊ฒŒ ๋„์›€์ด ๋˜๋Š” ์ˆ˜๊ฐ•ํ‰์˜ ์ฃผ์ธ๊ณต์ด ๋˜์–ด์ฃผ์„ธ์š”!

    ๊ณต๊ฐœํ•˜์ง€ ์•Š๋Š” ๊ฐ•์˜๋กœ ์ˆ˜๊ฐ•์ด ์ œํ•œ๋ฉ๋‹ˆ๋‹ค.