프론트엔드 MSA, MFE 도입 전략과 통합 방식 분석

by DD
2주 전
조회수 0

모놀리식 프론트엔드(Monolithic Frontend)의 배포 의존성, 머지 충돌, 기술 스택 제약 등 문제 해결을 위해 마이크로서비스 아키텍처(MSA) 개념을 프론트엔드에 적용함

각 팀이 독립적인 기술 스택으로 애플리케이션을 개발 및 배포하고, 컨테이너 앱이 이를 통합하여 사용자에게는 단일 앱처럼 보이게 함

빌드 타임 통합런타임 통합 방식이 있으며, 각각 코드 일관성, 초기 로딩 성능 또는 배포 독립성, 장애 격리 등의 장단점을 가짐

통합 위치는 서버 사이드 렌더링(SSR), 클라이언트 사이드 렌더링(CSR), 엣지 컴퓨팅(Edge Computing)으로 나뉘며, 각각 초기 로딩, SEO, UX, 응답 속도 측면에서 장단점을 보임

복잡성 증가기술적 이해도 요구라는 한계점이 존재하므로, 프로젝트 규모와 팀 역량을 고려한 신중한 도입이 필요함

모놀리식 프론트엔드의 한계점과 MFE의 필요성

기존 모놀리식 프론트엔드(Monolithic Frontend)배포 의존성(Deployment Dependency), 잦은 머지 충돌(Merge Conflict), 기술 스택 통일(Tech Stack Unification) 압박, 그리고 빌드 및 테스트 시간 증가(Build & Test Time Increase)와 같은 확장성 문제를 야기함. 이러한 문제들은 대규모 애플리케이션 개발 시 팀 간 협업 효율성을 저하시키고 개발 속도를 늦추는 주요 원인이 됨. 마이크로프론트엔드 아키텍처(Microfrontend Architecture)는 이러한 문제들을 해결하기 위해 백엔드의 마이크로서비스(Microservices) 개념을 프론트엔드에 도입하여, 애플리케이션을 독립적인 개발 및 배포 단위로 분할하는 것을 목표로 함.

빌드 타임 통합 방식의 장단점 분석

빌드 타임 통합은 각 마이크로프론트엔드를 npm 패키지(NPM Package) 또는 모노레포 도구(Monorepo Tool)(예: Nx, Turborepo)를 통해 의존성으로 관리하고, 최종 빌드 시 하나의 번들로 합치는 방식임. 이 방식은 코드 일관성(Code Consistency) 확보와 초기 로딩 성능(Initial Loading Performance), 타입 안정성(Type Safety) 측면에서 이점을 제공함. 하지만 모든 애플리케이션이 동일한 라이브러리 버전을 사용해야 하는 제약이 있고, 결국 전체 빌드 시간 단축에는 한계가 있다는 단점이 존재함. 따라서 작은 규모의 팀이나 초기 로딩 속도가 매우 중요한 경우에 적합할 수 있음.

런타임 통합 방식: Module Federation의 작동 원리

런타임 통합은 각 마이크로프론트엔드를 독립적으로 배포하고, 사용자가 접속 시 브라우저에서 동적으로 로드 및 조립하는 방식임. 특히 Webpack 5의 Module Federation은 호스트(Host)와 리모트(Remote) 애플리케이션 개념을 통해 이를 구현함. 이 방식은 팀별 기술 스택 선택의 자유도(Freedom of Tech Stack Choice)를 높이고, 코드 충돌(Code Collision) 및 장애 격리(Fault Isolation)에 유리함. 예를 들어, 특정 기능의 장애가 다른 부분에 영향을 미치지 않아 서비스 안정성을 높일 수 있음. 또한, 병렬 개발(Parallel Development) 및 빠른 기능 출시(Rapid Feature Release)에 용이함.

런타임 통합 시 라이브러리 버전 충돌 해결 방안: 싱글톤 패턴

런타임 통합 환경에서는 호스트와 리모트 애플리케이션이 서로 다른 버전의 라이브러리(예: React 17 vs 18)를 사용할 경우 라이브러리 버전 충돌(Library Version Conflict)이 발생할 수 있음. 이는 전역 상태 관리나 React Hook 등에서 예기치 않은 문제를 야기할 수 있음. 이러한 문제를 해결하기 위해 싱글톤(Singleton) 패턴을 적용하여 여러 애플리케이션 간에 단 하나의 라이브러리 버전만 공유하도록 강제할 수 있음. 이를 통해 런타임 시점에 단일 버전만 로드하여 충돌을 방지하고 일관성을 유지할 수 있음.

통합 위치별 아키텍처: SSR, CSR, 엣지 컴퓨팅

통합 위치는 서버 사이드 렌더링(SSR), 클라이언트 사이드 렌더링(CSR), 엣지 컴퓨팅(Edge Computing)으로 나눌 수 있음. SSR은 서버에서 앱을 조립하여 초기 로딩과 SEO에 유리하지만 서버 부하가 증가할 수 있음. CSR은 브라우저에서 동적으로 로드하여 인터랙티브한 UX를 제공하지만 초기 로딩과 SEO에 불리함. Module Federation은 CSR 기반 런타임 통합의 대표적인 예시임. 엣지 컴퓨팅은 Cloudflare Workers와 같은 플랫폼을 통해 사용자에게 가까운 엣지 네트워크에서 앱을 조합하여 전 세계적으로 빠른 응답 속도를 제공하지만, 인프라 구축 및 비용 부담이 따를 수 있음.

마이크로프론트엔드 도입 시 고려사항 및 한계점

마이크로프론트엔드는 대규모 프론트엔드 애플리케이션 관리팀 분리에 효과적인 아키텍처이지만, 새로운 복잡성(New Complexity)이 추가되고 높은 기술적 이해도(High Technical Understanding)를 요구함. 코드 중복(Code Duplication), 일관적인 UX 유지의 어려움(Difficulty in Maintaining Consistent UX), 리소스 증가(Increased Resource Consumption) 등의 잠재적 문제점을 고려해야 함. 따라서 단순히 유행을 따르기보다, 현재 프로젝트의 문제점과 해결하고자 하는 목표, 그리고 팀의 역량 및 규모를 종합적으로 판단하여 신중하게 도입 결정을 내려야 함.

프론트엔드계의 MSA, MFE에 대해 알아보자