티스토리 뷰
📌 NestJS + Kubernetes & 마이크로서비스 배포: 실전 가이드 - NestJS + Nx 기반 대규모 프로젝트 구조 설계
octo54 2025. 4. 12. 20:08📌 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 모노레포 설계
'project > NestJS + Kubernetes & 마이크로서비스 배포' 카테고리의 다른 글
- Total
- Today
- Yesterday
- PostgreSQL
- NestJS
- Next.js
- 프론트엔드
- flax
- SEO최적화
- gatsbyjs
- SEO 최적화
- 프론트엔드면접
- App Router
- Prisma
- 개발블로그
- 파이썬알고리즘
- Ktor
- Python
- CI/CD
- llm
- rag
- nextJS
- 딥러닝
- 백엔드개발
- REACT
- AI챗봇
- 웹개발
- seo 최적화 10개
- nodejs
- fastapi
- Docker
- JAX
- kotlin
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |