ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๋ฐ˜์‘ํ˜•

๐Ÿงฉ NestJS Platform Agnosticism – ํ”Œ๋žซํผ ๋…๋ฆฝ์  ์•„ํ‚คํ…์ฒ˜์˜ ํž˜


NestJS๋Š” Node.js์˜ ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ(HTTP, WebSocket, GraphQL, Fastify ๋“ฑ) ์œ„์—์„œ ์ผ๊ด€๋œ ๊ฐœ๋ฐœ ๊ฒฝํ—˜์„ ์ œ๊ณตํ•˜๋Š” ํ”Œ๋žซํผ ๋…๋ฆฝ์  ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค.
์ด๋ฒˆ ๊ธ€์€ NestJS ๊ณต์‹ ๋ฌธ์„œ Platform Agnosticism์„ ๊ธฐ๋ฐ˜์œผ๋กœ,
๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ์—์„œ ๋™์ผํ•œ ์ฝ”๋“œ ๊ตฌ์กฐ๋กœ Nest ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก “NestJS๋Š” ๋‹จ์ˆœํ•œ HTTP ์„œ๋ฒ„ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์•„๋‹ˆ๋ผ, ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ์„ ์ถ”์ƒํ™”ํ•œ Application Framework์ž…๋‹ˆ๋‹ค.”


โœ… NestJS๊ฐ€ ์ง€์›ํ•˜๋Š” ํ”Œ๋žซํผ

NestJS๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ”Œ๋žซํผ์—์„œ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค:

ํ”Œ๋žซํผ ์„ค๋ช…

Express ๊ธฐ๋ณธ ํ”Œ๋žซํผ, ๋Œ€๋ถ€๋ถ„์˜ Node.js ์•ฑ์—์„œ ์‚ฌ์šฉ๋จ
Fastify ๋” ๋น ๋ฅธ ์„ฑ๋Šฅ๊ณผ ๋‚ฎ์€ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒฝ๋Ÿ‰ ์›น ํ”„๋ ˆ์ž„์›Œํฌ
GraphQL @nestjs/graphql ๋ชจ๋“ˆ์„ ํ†ตํ•ด GraphQL ์„œ๋ฒ„๋กœ ์ž‘๋™
WebSocket @WebSocketGateway()๋กœ ์‹ค์‹œ๊ฐ„ ์ด๋ฒคํŠธ ์ง€์›
gRPC @GrpcMethod()์„ ํ†ตํ•ด ๊ณ ์„ฑ๋Šฅ RPC ํ†ต์‹  ์ง€์›

๐Ÿ”Œ ํ”Œ๋žซํผ์„ ์ถ”์ƒํ™”ํ•œ ๊ตฌ์กฐ

NestJS๋Š” ํ•ต์‹ฌ DI, ๋ชจ๋“ˆ ์‹œ์Šคํ…œ, ๋ผ์šฐํŒ… ๊ตฌ์กฐ๋Š” ์œ ์ง€ํ•˜๋ฉด์„œ ํ”Œ๋žซํผ๋งŒ ๊ต์ฒดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โœ… Express vs Fastify ์˜ˆ์‹œ

// main.ts (Express)
const app = await NestFactory.create(AppModule);
await app.listen(3000);
// main.ts (Fastify)
const app = await NestFactory.create<NestFastifyApplication>(
  AppModule,
  new FastifyAdapter(),
);
await app.listen(3000);

โœ… AppModule, Controller, Service ๋“ฑ์€ ์™„์ „ํžˆ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.
๋ฐ”๋€Œ๋Š” ๊ฑด NestFactory.create()์˜ ๋‘ ๋ฒˆ์งธ ์ธ์ž ๋ฟ!


๋ฐ˜์‘ํ˜•

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

<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-XXXXXX"
     data-ad-slot="YYYYYY"
     data-ad-format="auto"
     data-full-width-responsive="true"></ins>

๐ŸŒ Platform Adapter ํŒจํ„ด

NestJS๋Š” ์–ด๋Œ‘ํ„ฐ ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜์—ฌ Express๋‚˜ Fastify ๊ฐ™์€ ํ”Œ๋žซํผ์— ์ข…์†๋˜์ง€ ์•Š๊ณ  ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

โœ… ์–ด๋Œ‘ํ„ฐ ์ข…๋ฅ˜

์–ด๋Œ‘ํ„ฐ ์„ค๋ช…

ExpressAdapter ๊ธฐ๋ณธ HTTP ์„œ๋ฒ„ ์–ด๋Œ‘ํ„ฐ
FastifyAdapter ๊ณ ์„ฑ๋Šฅ ์›น ์„œ๋ฒ„ ์–ด๋Œ‘ํ„ฐ
WsAdapter WebSocket ๊ธฐ๋ฐ˜ ์‹ค์‹œ๊ฐ„ ํ†ต์‹  ์–ด๋Œ‘ํ„ฐ
GraphQLAdapter GraphQL ํ†ตํ•ฉ์šฉ ์–ด๋Œ‘ํ„ฐ (Apollo ๋“ฑ)

๐Ÿ› ๏ธ ์‹ค์ „ ํ™œ์šฉ ์ „๋žต

โœ… Fastify๋กœ ์„ฑ๋Šฅ ์ตœ์ ํ™”

npm install --save @nestjs/platform-fastify fastify
// main.ts
import { NestFactory } from '@nestjs/core';
import { FastifyAdapter, NestFastifyApplication } from '@nestjs/platform-fastify';

const app = await NestFactory.create<NestFastifyApplication>(
  AppModule,
  new FastifyAdapter(),
);
await app.listen(3000);
  • Express๋ณด๋‹ค ์ตœ๋Œ€ 2~3๋ฐฐ ๋น ๋ฅธ ์‘๋‹ต ์†๋„ ํ™•๋ณด
  • ๋ผ์šฐํŒ…, ๋ฏธ๋“ค์›จ์–ด, DI ๊ตฌ์กฐ๋Š” ๋™์ผํ•˜๊ฒŒ ์œ ์ง€

๐Ÿ”„ ๋Ÿฐํƒ€์ž„์— ํ”Œ๋žซํผ ๊ตฌ๋ถ„ – ์‹ค๋ฌด ํŒ

const app = process.env.USE_FASTIFY === 'true'
  ? await NestFactory.create<NestFastifyApplication>(AppModule, new FastifyAdapter())
  : await NestFactory.create(AppModule);

await app.listen(3000);

โ˜‘๏ธ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ ํ”Œ๋žซํผ์„ ์ „ํ™˜ ๊ฐ€๋Šฅ
โ˜‘๏ธ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์€ Express, ์šด์˜ ํ™˜๊ฒฝ์€ Fastify ์ „๋žต๋„ ๊ฐ€๋Šฅ


๐Ÿง  ์‹ค๋ฌด ์„ค๊ณ„ ์ „๋žต

์ „๋žต ์„ค๋ช…

Express → Fastify ์ „ํ™˜ ์ค€๋น„ ํ”Œ๋žซํผ ์ถ”์ƒํ™” ๊ตฌ์กฐ ์œ ์ง€๋กœ ๊ต์ฒด๊ฐ€ ์šฉ์ดํ•จ
HTTP + WebSocket ๋™์‹œ ์ฒ˜๋ฆฌ ExpressAdapter + WsAdapter๋กœ ๊ฐ€๋Šฅ
GraphQL + REST ๊ณต์กด ๋™์ผ ๋ชจ๋“ˆ ๊ตฌ์กฐ ๋‚ด์— GraphQL Resolver + REST Controller ์šด์˜
Custom Adapter ๊ตฌ์ถ• ํŠน์ˆ˜ํ•œ ๋„คํŠธ์›Œํฌ/IoT ํ™˜๊ฒฝ์—์„œ๋Š” ์ž์ฒด ์–ด๋Œ‘ํ„ฐ ์ œ์ž‘ ๊ฐ€๋Šฅ

โœ… ํ”Œ๋žซํผ ๋…๋ฆฝ ๊ตฌ์กฐ์˜ ์ด์ 

  • โœ… ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ž์œ ๋„ ํ™•๋ณด (Express → Fastify)
  • โœ… ํ…Œ์ŠคํŠธ์™€ ์šด์˜ ํ™˜๊ฒฝ ๋ถ„๋ฆฌ ๊ฐ€๋Šฅ
  • โœ… ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ํ™•์žฅ์„ฑ ํ–ฅ์ƒ
  • โœ… ์„ฑ๋Šฅ ๊ฐœ์„  ์‹œ ์ „๋žต ์„ ํƒ ์œ ์—ฐํ™”

๐Ÿ”š ๋งˆ๋ฌด๋ฆฌ ์š”์•ฝ

๊ฐœ๋… ์„ค๋ช…

Platform Agnosticism NestJS ์ฝ”์–ด๋Š” ํ”Œ๋žซํผ์— ๋…๋ฆฝ์ ์ธ ๊ตฌ์กฐ๋กœ ์„ค๊ณ„๋จ
Adapter ํŒจํ„ด ํ”Œ๋žซํผ ๋ณ„ ์–ด๋Œ‘ํ„ฐ๋กœ ๊ต์ฒด ๊ฐ€๋Šฅ (Express, Fastify ๋“ฑ)
์‹ค๋ฌด ํ™œ์šฉ ์ „๋žต ์„ฑ๋Šฅ, ํ™•์žฅ์„ฑ, ํ…Œ์ŠคํŠธ ๋ชฉ์ ์— ๋งž๊ฒŒ ํ”Œ๋žซํผ ๊ต์ฒด ๊ฐ€๋Šฅ

 

NestJS Platform Agnosticism,NestJS Express vs Fastify,NestJS ์–ด๋Œ‘ํ„ฐ ํŒจํ„ด,NestJS Fastify ์ ์šฉ,NestJS ํ”Œ๋žซํผ ๋…๋ฆฝ์„ฑ,NestJS ์„ฑ๋Šฅ ์ตœ์ ํ™”,NestJS Adapter ๊ตฌ์กฐ,NestJS GraphQL REST ๊ณต์กด,NestJS HTTP WebSocket,NestJS ์‹ค๋ฌด ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„


 

โ€ป ์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์Šต๋‹ˆ๋‹ค.
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
ยซ   2025/05   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
๊ธ€ ๋ณด๊ด€ํ•จ
๋ฐ˜์‘ํ˜•