데브허브 | DEVHUB | 모노레포 설정 삽질 공유(Ai 가 아직 잘 못하는 것?)모노레포 설정 삽질 공유(Ai 가 아직 잘 못하는 것?)
- 다양한 기술 스택(RN, React, NestJS, NextJS, Python)을 사용하는 프로덕션 레벨 AI 앱 개발을 위해 모노레포를 도입했습니다. 🛠️
- 모노레포 도입의 핵심 이점은 도메인 모델의 단일 소스 관리를 통한 설계 일관성 확보와 의존성 그래프 기반의 효율적인 배포 시스템 구축입니다. 💡
- Expo 앱의 Metro 번들러 캐시와 모노레포 캐시 시스템 간의 충돌 가능성에도 불구하고, 운영 효율성이 기술적 난이도보다 크다고 판단하여 Expo 앱을 모노레포에 포함했습니다. 🚧
- NX는 태스크 중심의 캐시 시스템과 코드 임포트 기반의 의존성 그래프 자동 계산 기능으로 복잡한 배포 순서 관리에 유리하여 선택되었습니다. 🎯
- NX는 언어에 구애받지 않고 프로젝트를 관리할 수 있어 파이썬 기반 AI 서비스까지 통합 관리가 가능합니다. 🌐
- 터보레포는 유연성이 뛰어나지만, 배포 파이프라인을 직접 설계해야 하며, 기술 스택이 유사한 프로젝트에 캐시 효율성이 더 높다는 점에서 다양한 스택의 AI 앱에는 NX가 더 적합했습니다. ⚙️
- AI는 빌드 시스템, 번들러, 언어별 설정 등 넓은 범위의 컨텍스트와 암묵적 지식(예: Expo 캐시 충돌)을 종합적으로 고려하는 데 아직 한계가 있습니다. 🧠
- NX Expo 플러그인이
react-native 버전을 *로 설정하여 개발자가 직접 수정해야 하는 의도를 AI가 파악하지 못해 버전 충돌 해결에 어려움을 겪었습니다. 🌟
- TS 임포트 에러 해결 시, AI는 PNPM 워크스페이스(심링크)를 제안할 수 있으나, 이는 NX의 캐시 시스템과 충돌하여 이점을 상실할 수 있으므로
tsconfig.json에 직접 경로 별칭을 설정하는 것이 올바른 해결책이었습니다. 🔗