본문 바로가기
IT & 테크

(최신) NestJS 왕초보 따라하기: 백엔드 개발 쉽게 시작하기!

by BlackD 2025. 2. 23.
반응형

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) 개념 이해
✅ 모듈 기반 구조 파악

반응형