Microfrontends the right way
- 마이크로 프론트엔드는 독립적인 배포와 팀 자율성 같은 이점에도 불구하고, 실제로는 프로젝트 복잡성을 크게 증가시키고 백엔드 마이크로서비스와 유사한 조정 문제를 야기하며, 프론트엔드 툴링은 더 열악합니다. 🤯
- 마이크로 프론트엔드의 핵심 문제는 기술적인 해결책이 아니라 인간의 상호작용, 협업, 그리고 소통에 관한 것임에도 불구하고 종종 간과됩니다. 🤝
- 가장 간단한 구현 방법인 iframe은 강력한 격리, 종속성 충돌 방지, 명확한 앱 경계를 제공하지만, 스타일링과
postMessage를 통한 통신에 어려움이 있습니다. 🖼️
- Web Components는 프레임워크에 구애받지 않는 커스텀 요소를 제공하며, Shadow DOM으로 CSS 격리를 보장하고 커스텀 이벤트를 통해 통신하며, 빌드 도구가 필요 없는 브라우저 네이티브 솔루션입니다. 🧩
- single-spa와 같은 프레임워크는 여러 프레임워크와 독립적인 배포를 지원하지만, 브라우저 내부에 분산 시스템을 생성하여 복잡한 조정 문제, 다중 빌드 파이프라인, 팀 간 갈등을 초래할 수 있습니다. 🕸️
- Webpack 5의 Module Federation은 각 앱을 호스트와 리모트로 전환하여 런타임에 코드 청크를 동적으로 로드하고 종속성을 지연시키는 효과적인 아키텍처를 제공합니다. 📦
- 최신 브라우저의 네이티브 ES 모듈 지원은 번들러 없이도 원격 컴포넌트를 로드할 수 있는 가능성을 열어주며, 미래에는 번들러가 필요 없을 수도 있음을 시사합니다. 🚀
- 발표자는 Astro의 아일랜드 아키텍처와 UI 통합이 필요할 때만 로드되는 작고 독립적인 UI 조각을 구축하는 데 매우 효과적이며, 마이크로 프론트엔드 전용 도구보다 뛰어나다고 선호합니다. 🏝️