티스토리 뷰

반응형

📌 NestJS + Kubernetes & 마이크로서비스 배포: 실전 가이드

11. NestJS + Nx 기반 대규모 프로젝트 구조 설계


NestJS 프로젝트가 커질수록 서비스, 도메인, 기능이 복잡해지고 관리가 어려워집니다.
이를 해결하기 위해 **Nx(모노레포 툴)**를 활용하면 NestJS 프로젝트를 도메인 중심, 기능 중심으로 구조화하고, 대규모 협업과 테스트 자동화, 캐시 활용까지 효율적으로 관리할 수 있습니다.
이번 글에서는 NestJS + Nx를 이용한 Monorepo 기반 구조 설계 전략을 소개합니다. 🚀


✅ 1. Nx란?

Nx는 마이크로서비스, 모노레포, 풀스택 프로젝트를 효율적으로 관리할 수 있도록 도와주는 빌드 시스템 + CLI 도구입니다.

📌 주요 기능

  • 모듈 간 의존성 자동 추적 및 분석
  • 코드 생성기 및 자동화 CLI
  • 캐싱과 병렬 실행으로 빌드 속도 최적화
  • 마이크로서비스와 프론트엔드를 한 저장소에서 관리 가능

✅ 2. Nx로 NestJS 프로젝트 시작하기

npx create-nx-workspace@latest nestjs-ms

옵션 선택:

  • preset: nest
  • directory layout: apps-libs

생성 구조:

nestjs-ms/
├── apps/
│   ├── api-gateway/
│   ├── user-service/
├── libs/
│   ├── users/
│   ├── auth/
│   ├── common/

✅ 3. Nx 프로젝트 구조 설계 전략

폴더 역할

apps/ 실행 가능한 앱 (REST API, GraphQL API 등)
libs/ 재사용 가능한 모듈 (도메인, 유틸, 인터페이스)

예시:

  • libs/users: 도메인 로직 (서비스, 엔티티, DTO 등)
  • libs/common: 공통 유틸, 미들웨어, 예외 처리
  • libs/auth: 인증 관련 로직, JWT, guards 등

✅ 4. NestJS + Nx 기반 라이브러리 생성

nx g @nrwl/nest:lib users --directory=libs

생성된 libs/users/src/lib/users.service.ts에서 비즈니스 로직을 구현하고
apps/user-service/src/main.ts에 주입하여 사용합니다.

💡 서비스 간 도메인 분리코드 재사용성이 크게 향상됩니다.


✅ 5. 프로젝트 레벨 모듈 통합

📂 apps/api-gateway/app.module.ts

@Module({
  imports: [
    UsersModule,
    AuthModule,
    ConfigModule.forRoot(),
  ],
})

각각 libs/users, libs/auth에 정의된 모듈들을 깔끔하게 불러올 수 있습니다.


✅ 6. Nx가 제공하는 강력한 도구들

기능 명령어

affected apps 보기 nx affected:apps
affected 테스트 실행 nx affected:test
affected 빌드 nx affected:build
빌드 캐시 확인 nx graph
린트, 포맷, 테스트 nx format:write, nx lint, nx test

✅ 7. CI/CD와 Nx 통합

# GitHub Actions 예시
- name: Affected Build
  run: npx nx affected:build --base=origin/main --head=HEAD

✅ 변경된 앱 또는 라이브러리만 선택적으로 테스트/빌드 → 빠르고 효율적인 파이프라인 구성


✅ 8. 대규모 NestJS 프로젝트 운영을 위한 팁

  • 폴더 구조는 기능 중심(Feature-based) 또는 **도메인 중심(Domain-based)**으로 유지
  • 각 lib은 providers, controllers, dto, entities 구조로 설계
  • interface는 libs/interfaces에 통합
  • 테스트 코드는 __tests__ 또는 *.spec.ts에 위치

✅ 결론: Nx로 대규모 NestJS 프로젝트 체계화

✅ 모노레포 구조로 다수의 NestJS 서비스 관리 가능
✅ libs를 통해 코드 중복 최소화 및 재사용 극대화
✅ affected 기반으로 빠르고 효율적인 빌드 & 테스트
✅ 팀 단위 협업 시 코드 품질과 생산성 향상

다음 글에서는 NestJS 프로젝트에서 GraphQL + Federation 기반의 마이크로서비스 GraphQL 게이트웨이 설계를 소개합니다! ✨


🔍 다음 글 예고: NestJS GraphQL 마이크로서비스 + Apollo Federation 설계

📌 다음 편: 12. NestJS GraphQL Federation 기반 API Gateway 구축


 

NestJS Nx,NestJS Monorepo,Nx NestJS 구조,Nx NestJS 마이크로서비스,Nx 라이브러리,NestJS 도메인 분리,NestJS 대규모 프로젝트,Nx CI/CD,NestJS 코드 재사용,NestJS 모노레포 설계

※ 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
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
글 보관함
반응형