NestJS - YooByWk/YooByWk.github.io GitHub Wiki

NestJS

NestJS ๋Š” Node.js ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ.

TypeScript๋ฅผ ์ฃผ๋ ฅ์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉฐ, ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ๊ธ‰ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•ด ์—ฌ๋Ÿฌ ๊ฐœ๋…(OOP, FP, FRP) ๊ฐœ๋…์ด ํ†ตํ•ฉ๋จ

์ฒ ํ•™

Spring ๊ณผ ์œ ์‚ฌํ•˜๋‹ค.

NestJS๋Š” Angular์˜ ๊ตฌ์กฐ์  ์ฒ ํ•™๊ณผ Java Spring์˜ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ๊ธ‰ ์„ค๊ณ„ ํŒจํ„ด์„ Node.js ํ™˜๊ฒฝ์— ๋„์ž…ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•œ๋‹ค.

1. ์˜์กด์„ฑ ์ฃผ์ž… (DI, Dependency Injection)

์ •์˜: ํด๋ž˜์Šค๊ฐ€ ์ž์‹ ์ด ์˜์กดํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ์ƒ์„ฑํ•˜๋Š” ๋Œ€์‹ , IOC (Inversion of Control) ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ์ฃผ์ž…๋ฐ›์•„ ์‚ฌ์šฉ

OOP ์—ฐ๊ด€์„ฑ : DI๋Š” SOLID ์›์น™ ์ค‘ DIP (์˜์กด์„ฑ ์—ญ์ „ ์›์น™) ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ํ•ต์‹ฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ตฌ์„ฑ ์š”์†Œ ๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๊ณ  ํ…Œ์ŠคํŠธ ์šฉ์ด์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•œ๋‹ค.

2. ๋ชจ๋“ˆ์„ฑ (Modularidad)

์ •์˜: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ Module ๋‹จ์œ„๋กœ ๋ถ„๋ฆฌํ•˜๊ณ  ์บก์Аํ™”ํ•˜์—ฌ ๊ด€๋ฆฌ

์˜์˜: ๊ฐ ๋ชจ๋“ˆ์€ ๊ด€๋ จ๋œ Controller ์™€ Provider ๋ฅผ ๋ฌถ์–ด ์ฑ…์ž„ ๋ฒ”์œ„๋ฅผ ๋ช…ํ™•ํžˆ ํ•˜๋ฉฐ, ๋Œ€๊ทœ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ตฌ์กฐ์  ๋ณต์žก์„ฑ์„ ํšจ๊ณผ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.

3. AOP (๊ด€์  ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ) ๋ฐ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ

์ •์˜: ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ(@)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ(ํšก๋‹จ ๊ด€์‹ฌ์‚ฌ) ์„ ๋ถ„๋ฆฌ

ํ™œ์šฉ: @UseGuards (์ธ์ฆ/์ธ๊ฐ€), @UseInterceptors (์‘๋‹ต ๋ณ€ํ™˜/๋กœ๊น…), @UsePipes (์œ ํšจ์„ฑ ๊ฒ€์‚ฌ) ๋“ฑ์„ ํ†ตํ•ด ์ฝ”๋“œ๋ฅผ ๊ตฌ์กฐ์ ์ด๊ณ  ์„ ์–ธ์ ์œผ๋กœ ์œ ์ง€ํ•œ๋‹ค.

ํ•ต์‹ฌ ์š”์†Œ

  1. Controller : ํด๋ผ์ด์–ธํŠธ์˜ Request๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  Response๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ณ„์ธต
  2. Provider(service) : ๋ณต์žกํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ณ„์ธต, DI ์ปจํ…Œ์ด๋„ˆ์— ๋“ฑ๋ก๋˜์–ด ์‚ฌ์šฉ
  3. Module : Controller ์™€ Provider๋ฅผ ๋ฌถ์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ตฌ์กฐ์  ๋‹จ์œ„๋ฅผ ์ •์˜

ํŠน์ด์‚ฌํ•ญ

  • Express.js์— ๋น„ํ•ด ๊ตฌ์กฐ๊ฐ€ ๋ณต์žกํ•จ : ์˜คํžˆ๋ ค ๊ตฌ์กฐํ™” ๋œ ์žฅ์ ์ด๊ธฐ๋„ ํ•จ
  • ๊ณต์‹๋ฌธ์„œ๊ฐ€ ์ž˜ ๋˜์–ด์žˆ์Œ. ์–ด์ง€๊ฐ„ํ•œ ์ •๋ณด๋Š” ๊ณต์‹๋ฌธ์„œ์— ๋‹ค ๋‚˜์™€์žˆ๋‹ค๊ณ  ๋ด๋„ ๋ฌด๋ฐฉ
  • ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค ์ง€์› : HTTP, gRPC, MQTT, Redis ์™ธ ๋‹ค์–‘ํ•œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ํ†ต์‹  ๋ฐฉ์‹์„ ์‰ฝ๊ฒŒ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“ˆ์„ ์ œ๊ณตํ•ด์คŒ...