대규모 서비스에서 커지는 프론트엔드 복잡도를 어떻게 분리하고 관리할지, 마이크로 프론트엔드 아키텍처의 개념과 실전 설계 관점에서 정리하는 시리즈입니다.


모노레포 환경에서 pnpm workspaces를 적용했지만 구조의 한계를 느끼고, 빌드 시스템 도구를 재검토했다. 의존성 기반 태스크 실행, 캐싱, 병렬 처리를 통해 Turborepo와 Nx가 어떻게 생산성을 개선하는지 정리한다.

이 글에서는 패키지 매니저가 왜 필요한지부터 시작해 npm, Yarn, pnpm의 발전 과정과 차이를 정리한다. 또한 Workspaces와 의존성 관리 방식을 비교하면서, 모노레포 환경에서 어떤 선택이 왜 중요한지 살펴본다.

모노레포는 여러 패키지를 하나의 저장소에서 관계 중심으로 관리하는 방식이고, 폴리레포는 프로젝트별로 저장소를 나눠 관리하는 방식이다. 각각 장단점이 있지만, 여러 앱과 공통 모듈을 함께 발전시켜야 하는 구조에서는 모노레포가 더 유리할 수 있다. 이번 글에서는 두 방식의 차이와 함께, 디자인 시스템과 마이크로 프론트엔드 관점에서 모노레포를 살펴본다.

마이크로 프론트엔드는 커진 서비스와 팀이 겪는 복잡도를 더 잘 관리하기 위해 나온 방식이다. 처음에는 모놀리스 구조가 빠르고 효율적이지만, 규모가 커질수록 코드 수정, 배포, 협업 비용이 점점 커진다. 마이크로 프론트엔드는 이런 문제를 줄이기 위한 선택지지만, 항상 정답은 아니다. 중요한 건 규모 자체보다 지금 구조에서 겪는 실제 문제이다.