NestJS는 Node.js 환경에서 동작하는 백엔드 프레임워크로,
TypeScript를 기본적으로 지원하며 Express.js 또는 Fastify 기반으로 동작합니다.
대규모 애플리케이션을 효율적으로 개발할 수 있도록 모듈 기반 아키텍처를 제공합니다.
📌 NestJS 주요 특징
✅ TypeScript 지원 (JavaScript도 가능)
✅ Express.js 또는 Fastify 기반
✅ 모듈 기반 구조 (대규모 프로젝트에 적합)
✅ 의존성 주입(DI) 지원
✅ GraphQL, WebSocket, gRPC 등 다양한 기능 제공
✅ 강력한 테스트 및 확장성 제공
2. NestJS 설치 및 프로젝트 생성
📌 NestJS CLI 설치
먼저, NestJS CLI(Command Line Interface)를 설치합니다.
npm i -g @nestjs/cli
📌 새 프로젝트 생성
nest new my-nest-app
- 프로젝트를 생성하면 여러 파일과 폴더가 자동으로 구성됩니다.
- npm install을 실행하여 필요한 패키지를 설치합니다.
📌 NestJS 서버 실행
cd my-nest-app
npm run start
이제 기본 서버가 실행되며, http://localhost:3000에서 확인할 수 있습니다.
3. NestJS의 기본 구조 이해하기
NestJS는 모듈(Module) 기반 구조로 되어 있습니다.
📂 src/ 폴더 안에는 다음과 같은 기본 파일들이 있습니다:
- main.ts → 애플리케이션의 진입점
- app.module.ts → 주요 모듈을 관리하는 파일
- app.controller.ts → 요청을 처리하는 컨트롤러
- app.service.ts → 비즈니스 로직을 담당하는 서비스
4. 첫 번째 컨트롤러 생성 (라우팅)
📌 컨트롤러 파일 생성
NestJS CLI를 사용하여 새로운 컨트롤러를 생성할 수 있습니다.
nest generate controller users
또는
nest g co users
📂 src/users/users.controller.ts 파일이 생성됩니다.
📌 컨트롤러 코드 작성
import { Controller, Get } from '@nestjs/common';
@Controller('users')
export class UserController {
@Get()
getAllUsers() {
return ['User1', 'User2', 'User3'];
}
}
📌 @Controller('users') → /users 경로를 처리
📌 @Get() → HTTP GET 요청을 처리
이제 http://localhost:3000/users에 접속하면 ['User1', 'User2', 'User3']가 반환됩니다.
5. 서비스(Service)와 의존성 주입(DI) 적용
서비스는 비즈니스 로직을 담당하는 중요한 역할을 합니다.
📌 서비스 생성
nest g service users
📂 src/users/users.service.ts 파일이 생성됩니다.
📌 서비스 코드 작성
import { Injectable } from '@nestjs/common';
@Injectable()
export class UserService {
getUsers() {
return ['User1', 'User2', 'User3'];
}
}
📌 @Injectable() → 의존성 주입 가능하도록 설정
📌 컨트롤러에서 서비스 사용하기
import { Controller, Get } from '@nestjs/common';
import { UserService } from './users.service';
@Controller('users')
export class UserController {
constructor(private readonly userService: UserService) {}
@Get()
getAllUsers() {
return this.userService.getUsers();
}
}
📌 constructor(private readonly userService: UserService) → 서비스를 주입(DI)하여 사용
6. 모듈(Module) 설정
NestJS는 모듈(Module) 기반으로 동작하며, 각 기능별로 모듈을 나눌 수 있습니다.
📂 src/users/users.module.ts
import { Module } from '@nestjs/common';
import { UserController } from './users.controller';
import { UserService } from './users.service';
@Module({
controllers: [UserController],
providers: [UserService],
})
export class UserModule {}
📌 @Module() → 모듈을 정의하고 컨트롤러 및 서비스를 등록
📂 src/app.module.ts
import { Module } from '@nestjs/common';
import { UserModule } from './users/users.module';
@Module({
imports: [UserModule],
})
export class AppModule {}
📌 UserModule을 AppModule에 등록하여 사용할 수 있도록 설정
7. NestJS의 장점 및 활용 사례
✅ 대규모 애플리케이션 개발에 적합 → 모듈 기반 구조로 유지보수가 쉬움
✅ TypeScript 기본 지원 → 안정적인 코드 작성 가능
✅ GraphQL, WebSocket, gRPC 등 확장성 높음
✅ Fastify 지원 → Express보다 빠른 성능 가능
✅ 마이크로서비스 개발 가능 → MSA 아키텍처에서 활용 가능
8. 결론
NestJS는 강력하고 확장성이 뛰어난 Node.js 백엔드 프레임워크입니다.
모듈 기반 아키텍처와 TypeScript 지원 덕분에 대규모 프로젝트에서 특히 유용합니다.
📌 핵심 개념
✅ NestJS 프로젝트 생성 및 실행
✅ 컨트롤러와 서비스 생성 및 활용
✅ 의존성 주입(DI) 개념 이해
✅ 모듈 기반 구조 파악
'IT & 테크' 카테고리의 다른 글
(최신) Bitbucket 이해하기 : 주요 기능 장점 & github 차이점 비교 (0) | 2025.02.23 |
---|---|
(최신) GitHub vs GitLab: 왕초보도 쉽게 이해하는 차이점 (0) | 2025.02.23 |
(최신) 1년차 AI 엔지니어 연봉 : 얼마나 받을까? (0) | 2025.02.23 |
[필독] si 1년차 개발자 연봉 인상 : 현실과 전략! (0) | 2025.02.23 |
(최신) 10년차 개발자 연봉 : 얼마나 받을까? (0) | 2025.02.22 |