2025 NestJS + React 19 + Drizzle ORM + Turborepo 아키텍처 결정 기록 요약
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
프론트엔드와 백엔드를 모두 개발하는 개발자, MVP 프로토타이핑에 관심 있는 개인 개발자
핵심 요약
- Monorepo 관리:
pnpm workspace
+Turborepo
조합으로 모듈 중앙 집중 관리와 빌드 최적화 - 백엔드 기술 스택:
NestJS
(Express 기반) +Drizzle ORM
(Serverless 호환성 강점) - 프론트엔드 기술 스택:
React 19
+Tailwind CSS
+ShadCN/UI
(AI 기반 개발 툴과 호환성 최적화)
섹션별 세부 요약
1. 프로젝트 목적 명확화
- 소규모 프로젝트에서 반복적인 설정 시간 줄이기 위해 완전한 풀스택 기술 스택 미리 구성
- 유지보수성과 확장성 강조, 향후 프로젝트에 재사용 가능한 경험 쌓기
2. 기술 선택 기준
- GitHub 스타 수와 NPM 다운로드 수로 인기와 활성도 평가
- TypeScript 지원 필수 (타입 안정성 보장)
- 아키텍처 유연성 (프로젝트 규모와 배포 환경 적응 가능성)
3. Monorepo 선택 이유
- 모듈 중앙 관리: 의존성 버전 통일 및 충돌 방지
- 공유 모듈 추출: ORM, UI 컴포넌트, TS 설정 등 별도 패키지로 분리
- 로컬 개발 편의성: 패키지 출판 없이 바로 개발 가능
- CI/CD 최적화: 빌드 효율성 향상
4. 대안 기술 분석
- Lerna: 2020년 이후 유지보수 중단
- Nx: 기업용 강력한 Monorepo 솔루션 (AI 기능 포함) → 학습 곡선이 높아 제외
- Express: 유연성과 성숙도 높지만 커스텀 프레임워크 개발 부담
- TypeORM/Prisma: ORM 유연성과 편의성 대비 설정 복잡도 및 SQL 처리 경험 부족
5. 최종 결정된 기술 스택
- 백엔드:
NestJS
(Express 기반, OOP/FP/FRP 통합) +Drizzle ORM
(Serverless 호환성, 가볍고 빠른 빌드) - 프론트엔드:
React 19
+Tailwind CSS
+ShadCN/UI
(AI 개발 툴과 호환) - 관리 도구:
pnpm workspace
+Turborepo
(인크리멘탈 빌드, 캐싱 지원)
6. 프로젝트 구조
├── apps/
│ ├── admin/ # React 19 + Vite 기반 관리 시스템
│ └── api/ # NestJS 기반 백엔드 서비스
├── packages/
│ ├── db/ # Drizzle ORM 스키마 및 마이그레이션 스크립트
│ ├── ui/ # ShadCN/UI 기반 UI 컴포넌트 라이브러리
│ ├── lint-config/ # 공유 ESLint 설정
│ └── ts-config/ # 공유 TypeScript 설정
├── .husky/ # 허브리(Husky) 기반 Git 훅 설정
├── pnpm-workspace.yaml # pnpm 워크스페이스 설정
├── turbo.json # Turborepo 빌드 설정
└── README.md
결론
- Monorepo + Turborepo 조합으로 개발 효율성 극대화, 공유 모듈 재사용성 강화
NestJS
+Drizzle ORM
조합으로 Serverless 호환성과 유지보수성 균형 유지React 19
+Tailwind CSS
+ShadCN/UI
조합은 AI 개발 툴과의 호환성을 최고 수준으로 제공- 프로젝트 코드는 nestjs-boilerplate에서 확인 가능 (실제 구현 예시 포함)