![모노레포가 미리캔버스 프론트엔드 아키텍처를 뒷받침 하는 방법 [2/2]](/_next/image?url=https%3A%2F%2Fmiro.medium.com%2Fv2%2Fresize%3Afit%3A1200%2F1*7HE4761UVnjSBmfp-cD73Q.png&w=3840&q=75)
CI 병렬화부터 런타임 모듈 통합까지, 멈추지 않는 프론트엔드 플랫폼의 실전 전략
이 아티클은 미리캔버스가 수백 개의 패키지로 구성된 모노레포를 효율적으로 운영하기 위해 도입한 CI/CD 전략과 마이크로 프론트엔드 구조를 상세히 다룹니다. 빌드 타임과 런타임 통합의 장단점을 명확히 구분하고, 플랫폼 엔지니어링 관점에서 아키텍처 규칙을 자동화하는 구체적인 방법론을 제시합니다.
대규모 모노레포에서 빌드 속도 저하와 배포 병목을 겪고 있는 시니어 엔지니어들에게 추천합니다. 특히 마이크로 프론트엔드 도입을 고민 중이라면 실질적인 의존성 관리 지표와 자동화 도구 활용법을 참고하세요.
대규모 프론트엔드 모노레포 환경에서 패키지 간 복잡한 의존성으로 인해 CI 피드백 속도가 저하되고, 특정 모듈 변경 시 전체 앱을 재배포해야 하는 독립 배포의 한계가 발생했습니다.
CI 파이프라인을 lint, type-check, test로 분리하여 병렬화하고, Webpack 5 Module Federation과 manifest.json을 도입하여 런타임에 모듈을 동적으로 통합하는 독립 배포 체계를 구축했습니다. 또한 Fan-in/Fan-out 지표 측정 및 순환 의존성 감지 도구를 통해 아키텍처 규칙을 자동화했습니다.
각 파이프라인의 독립적 실행으로 개발자 피드백 루프가 빨라졌으며, 프래그먼트 단위의 독립 배포가 가능해져 팀 간 배포 간섭이 제거되었습니다. 정량적인 지표 관리를 통해 모노레포의 복잡도를 도구로 제어할 수 있는 기반을 마련했습니다.
Trade-off
런타임 통합 방식은 빌드 타임 통합에 비해 런타임 구성이 복잡하며, Shared Scope 관리 시 React 싱글톤 위반과 같은 잠재적인 런타임 에러 위험이 존재하므로 엄격한 버전 협상 설정이 필요합니다.
Webpack 5에서 도입된 기술로, 별도로 빌드된 애플리케이션들이 런타임에 서로의 코드를 동적으로 공유하고 실행할 수 있게 해주는 메커니즘입니다.
Module Federation 환경에서 여러 모듈이 공통으로 사용하는 의존성(React 등)의 버전을 관리하고 공유하는 런타임 영역입니다.
개발자가 아키텍처 규칙을 수동으로 신경 쓰지 않아도 도구와 시스템을 통해 자연스럽게 지켜지도록 인프라와 관측성을 제공하는 엔지니어링 영역입니다.




