ํฐ์คํ ๋ฆฌ ๋ทฐ
๐ NestJS ๋ฐฑ์๋ ๊ฐ๋ฐ: ๊ธฐ์ด๋ถํฐ ์ค์ ๊น์ง - NestJS๋? ํ๋ ์์ํฌ ๊ฐ์ ๋ฐ ํน์ง
octo54 2025. 3. 17. 11:37๐ NestJS ๋ฐฑ์๋ ๊ฐ๋ฐ: ๊ธฐ์ด๋ถํฐ ์ค์ ๊น์ง - NestJS๋? ํ๋ ์์ํฌ ๊ฐ์ ๋ฐ ํน์ง
NestJS๋ Node.js ๊ธฐ๋ฐ์ ๊ฐ๋ ฅํ ๋ฐฑ์๋ ํ๋ ์์ํฌ๋ก, TypeScript๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ์ฌ์ฉํ๋ฉฐ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ(OOP), ํจ์ํ ํ๋ก๊ทธ๋๋ฐ(FP), ๋ฐ์ํ ํ๋ก๊ทธ๋๋ฐ(FRP) ํจ๋ฌ๋ค์์ ๊ฒฐํฉํ ๊ตฌ์กฐ์ ์ธ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ ๊ณตํฉ๋๋ค.
์ด๋ฒ ๊ธ์์๋ NestJS์ ๊ฐ๋
๊ณผ ํน์ง, ๊ธฐ์กด Express.js์์ ์ฐจ์ด์ , ๊ทธ๋ฆฌ๊ณ NestJS๋ฅผ ์ ํํด์ผ ํ๋ ์ด์ ์ ๋ํด ์ค๋ช
ํ๊ฒ ์ต๋๋ค. ๐
1.1 NestJS๋?
NestJS๋ Node.js ๊ธฐ๋ฐ์ ๋ฐฑ์๋ ํ๋ ์์ํฌ๋ก, Express.js ๋๋ Fastify์ ๊ฐ์ HTTP ์๋ฒ๋ฅผ ๋ํํ์ฌ ์ฌ์ฉํฉ๋๋ค.
TypeScript ์ง์, ์์กด์ฑ ์ฃผ์
(DI), ๋ชจ๋ํ๋ ์ํคํ
์ฒ๋ฅผ ํตํด ๋๊ท๋ชจ ์ ํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ์ ์ ํฉํฉ๋๋ค.
โ NestJS์ ํต์ฌ ํน์ง
โ TypeScript ๊ธฐ๋ฐ → ์ ์ ํ์
๊ฒ์ฌ๋ก ์์ ์ ์ธ ์ฝ๋ ์์ฑ ๊ฐ๋ฅ
โ ๋ชจ๋ํ๋ ์ํคํ
์ฒ → ์ ์ง๋ณด์์ฑ๊ณผ ํ์ฅ์ฑ์ด ๋ฐ์ด๋จ
โ ์์กด์ฑ ์ฃผ์
(DI, Dependency Injection) → ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๊ณ ์ฌ์ฌ์ฉ์ฑ์ ๋์
โ Express.js & Fastify ์ง์ → ๊ธฐ์กด Node.js ๊ฐ๋ฐ ๋ฐฉ์๊ณผ์ ํธํ์ฑ ์ ๊ณต
โ GraphQL, WebSocket, ๋ง์ดํฌ๋ก์๋น์ค ์ง์ → ๋ค์ํ ํ๋กํ ์ฝ์ ํ์ฉ ๊ฐ๋ฅ
โ ํ
์คํ
์นํ์ ํ๊ฒฝ → Jest ๊ธฐ๋ฐ์ ๊ฐ๋ ฅํ ํ
์คํธ ์ง์
๐ก NestJS๋ ์ํฐํ๋ผ์ด์ฆ๊ธ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ ํฉํ ๋ฐฑ์๋ ํ๋ ์์ํฌ์ ๋๋ค.
1.2 NestJS vs Express.js
NestJS๋ Express.js๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ์ง๋ง, ๋ ๊ตฌ์กฐ์ ์ด๊ณ ์ ์ง๋ณด์ํ๊ธฐ ์ฌ์ด ๋ฐฉ์์ ์ ๊ณตํฉ๋๋ค.
์๋ ํ๋ NestJS์ Express.js์ ์ฃผ์ ์ฐจ์ด์ ์ ๋น๊ตํ ๊ฒ์
๋๋ค.
๋น๊ต ํญ๋ชฉ NestJS Express.js
๊ธฐ๋ณธ ์ธ์ด | TypeScript | JavaScript/TypeScript |
์ํคํ ์ฒ | ๋ชจ๋ ๊ธฐ๋ฐ | ๋ฏธ๋ค์จ์ด ๊ธฐ๋ฐ |
์์กด์ฑ ์ฃผ์ (DI) | โ ์ง์ | โ ์ง์ ๊ด๋ฆฌ ํ์ |
REST API ์ง์ | โ ๊ธฐ๋ณธ ์ ๊ณต | โ ์ง์ ์ค์ ํ์ |
GraphQL ์ง์ | โ ๊ธฐ๋ณธ ์ ๊ณต | โ ๋ณ๋ ํจํค์ง ํ์ |
๋ง์ดํฌ๋ก์๋น์ค ์ง์ | โ ๊ธฐ๋ณธ ์ง์ | โ ์ง์ ๊ตฌํํด์ผ ํจ |
๐ก NestJS๋ ๊ธฐ์กด Express.js์ ์ฅ์ ์ ์ ์งํ๋ฉด์๋, ๋ ๊ตฌ์กฐ์ ์ด๊ณ ํ์ฅ ๊ฐ๋ฅํ ๋ฐฑ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ์ ์๋๋ก ๋์ต๋๋ค.
1.3 NestJS ์ํคํ ์ฒ ๊ฐ์
NestJS๋ ๋ชจ๋(Module), ์ปจํธ๋กค๋ฌ(Controller), ํ๋ก๋ฐ์ด๋(Provider), ์๋น์ค(Service) ๋ฑ์ ๊ฐ๋ ์ ์ค์ฌ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
โ NestJS์ ์ฃผ์ ๊ฐ๋
๐ ๋ชจ๋(Module) → ์ ํ๋ฆฌ์ผ์ด์
์ ๊ธฐ๋ฅ๋ณ๋ก ๋ถ๋ฆฌํ๋ ์ญํ
๐ ์ปจํธ๋กค๋ฌ(Controller) → HTTP ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ์๋ต์ ๋ฐํ
๐ ํ๋ก๋ฐ์ด๋(Provider) → ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋, ๋น์ฆ๋์ค ๋ก์ง ์ฒ๋ฆฌ
๐ ์๋น์ค(Service) → ํ๋ก๋ฐ์ด๋์ ์ผ์ข
์ผ๋ก ์ปจํธ๋กค๋ฌ์ ์ฐ๊ฒฐ๋จ
์๋๋ NestJS์ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ฅผ ๋ํ๋ธ ์์ ์ ๋๋ค.
๐ src/app.module.ts
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
@Module({
imports: [],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
โ ๋ชจ๋(Module)์ @Module() ๋ฐ์ฝ๋ ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ ์๋จ
๐ src/app.controller.ts
import { Controller, Get } from '@nestjs/common';
import { AppService } from './app.service';
@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}
@Get()
getHello(): string {
return this.appService.getHello();
}
}
โ
์ปจํธ๋กค๋ฌ(Controller)๋ @Controller() ๋ฐ์ฝ๋ ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ ์๋จ
โ
@Get() ๋ฐ์ฝ๋ ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ GET ์์ฒญ์ ์ฒ๋ฆฌํจ
๐ src/app.service.ts
import { Injectable } from '@nestjs/common';
@Injectable()
export class AppService {
getHello(): string {
return 'Hello, NestJS!';
}
}
โ ์๋น์ค(Service)๋ @Injectable() ๋ฐ์ฝ๋ ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์์กด์ฑ ์ฃผ์ (DI)์ด ๊ฐ๋ฅํจ
๐ก NestJS์ ์ํคํ ์ฒ๋ ๋ชจ๋ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ด ์ ์ง๋ณด์์ฑ๊ณผ ํ์ฅ์ฑ์ด ๋ฐ์ด๋ฉ๋๋ค.
1.4 NestJS๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ์ด์
NestJS๋ ๊ฐ์ธ ํ๋ก์ ํธ๋ถํฐ ๋๊ท๋ชจ ์ํฐํ๋ผ์ด์ฆ ์ ํ๋ฆฌ์ผ์ด์ ๊น์ง ๋ชจ๋ ์ ํ์ ๋ฐฑ์๋ ๊ฐ๋ฐ์ ์ ํฉํฉ๋๋ค.
โ NestJS๊ฐ ํนํ ์ ์ฉํ ๊ฒฝ์ฐ
โ ๋๊ท๋ชจ ํ๋ก์ ํธ๋ฅผ ๊ฐ๋ฐํด์ผ ํ ๋ → ๋ชจ๋ ๊ธฐ๋ฐ ์ํคํ
์ฒ๋ก ํ์ฅ์ฑ์ด ๋ฐ์ด๋จ
โ GraphQL, WebSocket, REST API๋ฅผ ํ ๋ฒ์ ์ง์ํด์ผ ํ ๋ → ๋ค์ํ ํ๋กํ ์ฝ์ ์ง์
โ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋ ๋ฐ ORM์ด ํ์ํ ๊ฒฝ์ฐ → TypeORM, Prisma ๋ฑ๊ณผ ์ฝ๊ฒ ํตํฉ ๊ฐ๋ฅ
โ ํ
์คํธ ์ฃผ๋ ๊ฐ๋ฐ(TDD)์ ์ ์ฉํด์ผ ํ ๋ → Jest ๊ธฐ๋ฐ์ ๊ฐ๋ ฅํ ํ
์คํธ ํ๊ฒฝ ์ ๊ณต
โ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ
์ฒ๋ฅผ ๊ณ ๋ คํ๋ ๊ฒฝ์ฐ → Kafka, gRPC, RabbitMQ์์ ์ฐ๋ ์ง์
๐ก NestJS๋ ์ ์ง๋ณด์์ฑ์ด ๋ฐ์ด๋ ๋ฐฑ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ๋ฐ ์ต์ ํ๋ ํ๋ ์์ํฌ์ ๋๋ค.
1.5 ๊ฒฐ๋ก : NestJS๋ ๋ฐฑ์๋ ๊ฐ๋ฐ์ ์ํ ๊ฐ๋ ฅํ ์ ํ
โ
NestJS๋ TypeScript ๊ธฐ๋ฐ์ผ๋ก ์์ ํ ์ฝ๋ ์์ฑ ๊ฐ๋ฅ
โ
๋ชจ๋ ๊ธฐ๋ฐ ์ํคํ
์ฒ๋ก ์ ์ง๋ณด์์ฑ๊ณผ ํ์ฅ์ฑ์ด ๋ฐ์ด๋จ
โ
Express.js์ ์ฅ์ ์ ์ ์งํ๋ฉด์๋, ์์กด์ฑ ์ฃผ์
๊ณผ ๊ฐ์ ๊ณ ๊ธ ๊ธฐ๋ฅ์ ์ ๊ณต
โ
GraphQL, WebSocket, ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ
์ฒ๊น์ง ํญ๋๊ฒ ์ง์
์ด์ NestJS์ ๊ฐ๋
๊ณผ ์ฃผ์ ํน์ง์ ์ดํดํ์ต๋๋ค!
๋ค์ ๊ธ์์๋ **"NestJS ๊ฐ๋ฐ ํ๊ฒฝ ์ค์ ๋ฐ ํ๋ก์ ํธ ๊ตฌ์กฐ ์ดํด"**๋ฅผ ๋ค๋ฃจ๊ฒ ์ต๋๋ค. ๐
๐ ๋ค์ ๊ธ ์๊ณ : NestJS ๊ฐ๋ฐ ํ๊ฒฝ ์ค์ ๋ฐ ํ๋ก์ ํธ ๊ตฌ์กฐ ์ดํด
๐ ๋ค์ ํธ: 2. NestJS ๊ฐ๋ฐ ํ๊ฒฝ ์ค์ ๋ฐ ํ๋ก์ ํธ ๊ตฌ์กฐ ์ดํด
'study > ๋ฐฑ์๋' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
- Total
- Today
- Yesterday
- seo ์ต์ ํ 10๊ฐ
- nodejs
- ๊ด๋ฆฌ์
- Next.js
- ํ๋ก ํธ์๋๋ฉด์
- Ktor
- ๊ฐ๋ฐ๋ธ๋ก๊ทธ
- REACT
- Python
- ํ์ด์ฌ ์๊ณ ๋ฆฌ์ฆ
- kotlin
- App Router
- CI/CD
- gatsbyjs
- github
- PostgreSQL
- SEO์ต์ ํ
- NestJS
- fastapi
- ํ๋ก ํธ์๋
- ๋ฐฑ์๋๊ฐ๋ฐ
- AI์ฑ๋ด
- llm
- ์น๊ฐ๋ฐ
- rag
- Docker
- Prisma
- nextJS
- Webpack
- LangChain
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |