티스토리 뷰
📌 NestJS + Prisma + Next.js로 만드는 웹 애플리케이션 첫걸음 - 애자일 쇼핑몰 프로젝트 - NestJS 프로젝트 기본 구조 및 핵심 개념
octo54 2025. 3. 12. 11:07📌 NestJS + Prisma + Next.js로 만드는 웹 애플리케이션 첫걸음 - 애자일 쇼핑몰 프로젝트 - NestJS 프로젝트 기본 구조 및 핵심 개념
1. NestJS 프로젝트란?
NestJS는 Node.js 기반의 모듈화된 백엔드 프레임워크로, TypeScript를 기본적으로 지원하며 대규모 애플리케이션 개발에 적합합니다.
이번 쇼핑몰 프로젝트에서는 NestJS를 활용하여 백엔드 API 서버를 구축하고, Prisma를 이용해 데이터베이스와 상호작용할 예정입니다.
✅ NestJS의 주요 특징:
- TypeScript 지원 (안정성과 유지보수성 향상)
- 모듈 기반 구조 (기능별 분리하여 확장성 제공)
- REST API 및 GraphQL 지원
- 의존성 주입(Dependency Injection) 방식으로 효율적인 코드 관리 가능
2. NestJS 프로젝트 기본 구조
2.1. 프로젝트 디렉터리 구조
NestJS 프로젝트를 생성하면 다음과 같은 기본 디렉터리 구조가 생성됩니다.
nestjs-shoppingmall/
├── src/ # 소스 코드 디렉터리
│ ├── app.module.ts # 최상위 모듈
│ ├── main.ts # 애플리케이션 시작점
│ ├── users/ # 사용자 모듈 (예제)
│ │ ├── users.controller.ts
│ │ ├── users.service.ts
│ │ ├── users.module.ts
│ │ ├── users.entity.ts
│ ├── products/ # 상품 모듈 (예제)
│ │ ├── products.controller.ts
│ │ ├── products.service.ts
│ │ ├── products.module.ts
│ │ ├── products.entity.ts
├── test/ # 테스트 디렉터리
├── node_modules/ # 패키지 설치 디렉터리
├── package.json # 프로젝트 설정 파일
├── tsconfig.json # TypeScript 설정 파일
├── .env # 환경 변수 파일
💡 각 디렉터리 역할:
- main.ts: 애플리케이션의 진입점
- app.module.ts: 애플리케이션의 루트 모듈
- controllers/: 클라이언트 요청을 처리하는 컨트롤러
- services/: 비즈니스 로직을 담당하는 서비스
- modules/: 관련 기능을 묶어 모듈 단위로 관리
3. NestJS의 핵심 개념
3.1. 모듈(Module) 시스템
NestJS는 기능별로 모듈을 나누어 관리하는 구조를 사용합니다.
✅ 모듈을 사용하면:
- 기능별로 분리하여 유지보수 가능
- 코드 재사용성이 높아짐
- 새로운 기능 추가 시 기존 코드에 영향을 최소화
💡 예제: 사용자(User) 모듈 생성
import { Module } from '@nestjs/common';
import { UsersController } from './users.controller';
import { UsersService } from './users.service';
@Module({
controllers: [UsersController],
providers: [UsersService],
exports: [UsersService],
})
export class UsersModule {}
3.2. 컨트롤러(Controller) - API 엔드포인트
컨트롤러는 클라이언트의 요청을 처리하고 응답을 반환하는 역할을 합니다.
💡 예제: 사용자 컨트롤러 (UserController)
import { Controller, Get } from '@nestjs/common';
import { UsersService } from './users.service';
@Controller('users')
export class UsersController {
constructor(private readonly usersService: UsersService) {}
@Get()
getAllUsers() {
return this.usersService.getAllUsers();
}
}
3.3. 서비스(Service) - 비즈니스 로직
서비스는 데이터베이스와 상호작용하고, 핵심 비즈니스 로직을 처리하는 역할을 합니다.
💡 예제: 사용자 서비스 (UserService)
import { Injectable } from '@nestjs/common';
@Injectable()
export class UsersService {
private users = [{ id: 1, name: 'John Doe' }];
getAllUsers() {
return this.users;
}
}
3.4. 엔터티(Entity) - 데이터 모델 정의
NestJS에서는 Prisma ORM을 사용하여 데이터베이스 테이블을 모델링할 수 있습니다.
💡 예제: Prisma를 이용한 User 모델 정의
model User {
id Int @id @default(autoincrement())
name String
email String @unique
role String @default("customer")
}
4. NestJS의 실행 및 테스트
4.1. NestJS 프로젝트 실행
✅ NestJS 프로젝트 실행 명령어:
npm run start:dev
이 명령어를 실행하면 개발 환경에서 NestJS 서버가 실행됩니다.
4.2. API 테스트 (Postman 활용)
API가 정상적으로 동작하는지 확인하려면 Postman 또는 cURL을 사용하여 GET /users 요청을 보낼 수 있습니다.
💡 예제: Postman을 이용한 API 테스트
- 요청: GET http://localhost:3000/users
- 응답:
[
{ "id": 1, "name": "John Doe" }
]
5. NestJS 프로젝트에서 적용할 개발 원칙
✅ 모듈 단위 개발 → users, products, orders 등 기능별 모듈 구성
✅ 의존성 주입(DI, Dependency Injection) 활용 → 유지보수성과 확장성 향상
✅ RESTful API 원칙 준수 → GET, POST, PUT, DELETE 엔드포인트 사용
✅ DTO(Data Transfer Object) 적용 → 데이터 유효성 검사 및 타입 체크 강화
🎯 마무리하며
이번 챕터에서는 NestJS의 기본 구조 및 핵심 개념을 정리했습니다.
다음 단계에서는 3.2. Prisma ORM을 활용한 데이터 모델링을 다뤄보겠습니다. 🚀
'project > NestJS + Prisma로 만드는 웹 애플리케이션 첫걸음 - 쇼핑몰' 카테고리의 다른 글
- Total
- Today
- Yesterday
- 스마트 컨트랙트
- llm
- Prisma
- Webpack
- gatsbyjs
- 웹개발
- 개발블로그
- PostgreSQL
- kotlin
- 백엔드
- rag
- LangChain
- Docker
- SEO최적화
- NestJS
- Ktor
- seo 최적화 10개
- 프론트엔드
- Next.js
- App Router
- REACT
- CI/CD
- github
- fastapi
- AI 자동화
- 백엔드개발
- nextJS
- nodejs
- 관리자
- AI챗봇
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |