피드로 돌아가기
Dev.toDevOps
원문 읽기
Nx Monorepo 전환을 통한 5개 레포지토리 파편화 해결 및 의존성 그래프 체계화
Why We Chose Nx to Untangle a Growing Multi-Tenant Platform
AI 요약
Context
14개 오피스와 36개 큐를 관리하는 QuokkaQ 플랫폼의 성장으로 인해 Go 백엔드와 다수 UI 프로젝트가 5개의 레포지토리로 분산된 상태. 코드 복제와 CI 파이프라인 동기화 실패로 인해 배포 리스크가 증가하며 구조적 한계 직면.
Technical Solution
- Strangler Fig 패턴 적용을 통한 단계적 마이그레이션으로 서비스 중단 없는 Nx 워크스페이스 전환 수행
- ts 프리셋 기반의 유연한 구조 설계를 통해 React, Node, Go 등 이기종 스택 수용 가능성 확보
- project.json 내 dependsOn 설정을 통해 상위 라이브러리의 우선 빌드를 강제하는 명시적 의존성 그래프 구축
- @nx/enforce-module-boundaries 규칙을 활용해 프로젝트 간 import 경로를 제한하는 엄격한 경계 제어 구현
- Affected detection 로직을 통해 변경 사항이 발생한 프로젝트와 그 영향 범위만 식별하여 빌드 및 테스트 수행
실천 포인트
- 멀티 테넌트 플랫폼 설계 시 공유 컴포넌트의 소유권 분산 방지를 위한 Monorepo 검토 - 기술 스택이 다양할 경우 특정 프레임워크 프리셋보다 범용 프리셋(ts 등) 선택 권장 - 무분별한 의존성 확장을 막기 위한 ESLint 기반의 Module Boundary Rule 설정 적용 - 빌드 최적화를 위해 단순 스크립트 실행 도구가 아닌 Dependency Graph 기반 도구 선정