AI Briefing

Webpack Module Federation: 런타임 통합 원리와 마이크로 프런트엔드 적용

·2022.06.23 09:00

핵심 내용

별도 빌드된 컨테이너를 런타임에 통합하여 빌드 시간과 영향 범위를 줄이는 Webpack 5의 Module Federation 기능의 원리와 한계를 설명한다.

1 / 2

자세히 보기

Module Federation의 개념과 필요성

Webpack 5의 Module Federation은 여러 애플리케이션을 개별적으로 빌드한 후 런타임에 하나의 애플리케이션처럼 통합하는 기능이다. 기존 마이크로 프런트엔드 방식이 모노레포 기반의 빌드타임 통합에 의존했던 것과 달리, 이 기능은 독립적인 빌드 산출물을 서로 연결할 수 있게 한다.

이 기술은 서비스 규모가 커질 때 다음과 같은 이점을 제공한다:

  • 빌드 및 배포 시간 단축: 변경된 컨테이너만 빌드하므로 전체 빌드 부담이 줄어든다.
  • 영향도 최소화: 검증 범위를 변경된 컨테이너로 한정할 수 있다.
  • 로딩 효율성: 배포된 컨테이너의 원격 모듈만 새로 로딩하므로 배포 직후 로딩 시간이 짧다.

핵심 용어와 동작 원리

Module Federation은 컨테이너(Container) 단위로 애플리케이션을 정의하며, 각 컨테이너는 다른 컨테이너의 **원격 모듈(Remote Module)**을 로딩하거나 **노출(Expose)**할 수 있다.

  • 리모트 앱: 모듈을 Expose하는 컨테이너
  • 호스트 앱: 원격 모듈을 사용하는 컨테이너
  • 공유 모듈(Shared): 런타임에 한 번만 로딩되는 의존성 (예: React)

동작 과정:

  1. 리모트 앱은 remoteEntry.js 파일을 생성하여 모듈 맵을 제공한다.
  2. 호스트 앱은 remoteEntry.js를 로딩하여 전역 변수(예: app2)를 설정한다.
  3. 호스트 앱은 import("app2/Button")과 같은 방식으로 원격 모듈을 동적으로 로딩한다.

주의사항 및 한계

실제 도입 시 다음과 같은 제약이 존재한다:

  • 타입 정보 부재: 호스트 앱은 리모트 모듈의 타입을 자동으로 인식하지 못하므로, 타입 정의를 별도로 관리해야 한다.
  • 경로 관리 복잡성: 환경별(개발, 운영 등)로 remoteEntry.js의 URL이 달라지므로, 빌드 시점이나 런타임에 적절한 경로 설정 로직이 필요하다.

이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.

AI 처리 방식을 확인하거나, 요약 오류와 출처 표기 문제, 삭제 요청을 문의 · 건의로 알려주세요.