[ 一日30分 인생승리의 학습법] [Micro Frontend] 마이크로 프론트앤드 - 개념

마이크로 프론트앤드는 마이크로 서비스처럼 전체 화면을 작동할 수 있는 단위로 나누어 개발한 후 서로 조립하는 방식이다. 여기서 작동 단위에 사용된 프론트앤드 프레임워크로 Angular 이든, React 또는 Vue 또는 Vanilla 자바스크립트에 상관하지 않고 조합 가능한 방법을 제공한다. 본글에서는 마이크로 프론트앤드 개발 방법중 Angular 프레임워크를 사용하면서 Web Components를 사용한 통합 방법에 대핸 알아보자.

 

 

마이크로 프론트앤드 기반 독립된 팀별 애플리케이션 개발

 

 

 

Micro Frontend 개념

마이크로 프론앤드 개념으로 개발을 하는 잇점은 대규모 엔터프라이즈 애플리케이션을 개발한다고 가정할 때, 각 팀별 또는 업무단위에 대해 Backend + Frontend 개발 후 통합하는 이슈를 줄일 수 있다. 

  • 작고, 응집력 있고 유지보수성을 가지는 코드베이스를 가질 수 있다. (Simple, decoupled codebase)
  • 분리배포가 용이하고, 자율적인 팀 조직운영이 수월해진다. (Independent deployment, Autonomous teams)
  • 프론트앤드 개발을 점진적 업그레이드 또는 재작성이 수월해진다. (Incremental upgrades)

하지만 단점도 존재한다. 

  • 배포 번들 사이즈가 커질 수 있다. (Payload size)
  • 서로간의 개발 환경의 차이로 복잡도가 올라간다. (Environment differences
  • 운영 및 거버넌스도 당연히 복잡해진다. (Operational governance complexity)

Thoughtworks의 Technology Radar에 의하면 Micro Frontend가 현재 적용 가능한(Adapt) 상황이다.

마틴 파울러의 글 (또는 번역글) 에서 잘 설명을 하고 있으니 참조하자.

 

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

 

 

Micro Frontend 통합 방법

 

독립적인 개발 및 배포

 

마이크로 프론앤드 방식으로 개발 후 각 단위 애플리케이션을 어떻게 통합할지 고려해야 한다. 통합할 때는 각 화면을 조합하는 컨테이너 애플리케이션이 있고, 그 하부에 들어가는 단위 애플리케이션이 존재한다. (참조)

  • 서버 템플릿 통합: 각 서버로 html 템플릿을 요청하고, 최종 응답서버에서 각 템플릿을 조합해서 응답을 보냄
    • 서버측에서 최종 화면을 조합한다.
  • 빌드타임 통합: 단위 애플리케이션을 패키지로 배포하고, package.json에 명시한 후 컨테이너 애플리케이션에서 import하여 사용하는 방법
    • 각 애플리케이션에 대한 런타임 대응이 안된다. 
    • 애플리케이션을 릴리즈하고 최종 애플리케이션에서 컴파일해야 한다. 
  • iframe 통합: 전통적인 방식이면서 가장 쉬운 방식이다.
    • 애플리케이션 통합의 유연성 높다.
    • 애플리케이션의 기술 종속성이 없다. 
    • routing, history, deep-link같은 것이 복잡해질 수 있다. 
    • 컨테이너 애플리케이션과 iframe에 들어가는 단위 애플리케이션간의 통신규약도 필요하다. 
    • UX가 iframe안에 갇히기 때문에 어색한 UI 표현을 가질 수 있다. 
  • Javascript를 통한 런타임 통합: iframe과 달리 유연한 통합이 가능하다. 현실적으로 가장 많이 사용하는 방식이다.
    • 컨테이너 애플리케이션을 단위 애플리케이션 번들을 <script> 태그를 통합 다운로드 받고
    • 약속된 초기화 메소드를 호출한다.
    • 클라이언트측에서 (브라우져) 통합한다.
  • Web Components를 통한 통합: HTML 커스텀 엘리먼트를 통한 통합방법, static, runtime 통합 둘 다 가능함.
    • Javascript를 통한 런타임 통합과 유사하지만 "The web component way"를 지향한다.
    • 클라이언트측에서 (브라우져) 통합한다.

Mirco Frontend 통합할 때 몇가지 고려사항

  • UI 스타일 일관성은 UI Component Library를 만들어 대응한다.
    • 한번에 만들지 말고, 중복코드가 발생하는 지점에서 만들고
    • 코드 일관성을 유지하는 팀이 수행한다. 
  • 어플리케이션 통신은 Custom events를 사용한다.
    • 커스텀 이벤트를 위해 PubSubJS를 고려해 보자.
    • 호출시 URL 라우팅에 넘기기
  • 백앤드 호출 API 구성
    • BFF(Backend for Frontend Pattern) 패턴으로 프론트앤드 전용 API를 갖는다. 
    • 별도의 데이터베이스를 가질 수도 있다.
    • 로그인은 인증 정보는 통합하는 Container가 소유한다. 

 

프론트앤드와 백앤드의 구조화

 

[출처] https://mobicon.tistory.com/572

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
1158 [ 一日30分 인생승리의 학습법][Web3] 세상을 바꿀 Web 3.0 - Web3.js 예제로 실습하기(2) file 졸리운_곰 2023.10.05 97
1157 [ 一日30分 인생승리의 학습법][Web3] 세상을 바꿀 Web 3.0 - Web3.js 예제로 실습하기(1) file 졸리운_곰 2023.10.05 90
1156 [ 一日30分 인생승리의 학습법][Web3] 세상을 바꿀 Web 3.0 - Web3.js란? file 졸리운_곰 2023.10.05 112
1155 [ 一日30分 인생승리의 학습법][Web3] 세상을 바꿀 Web 3.0 - Web3가 미래라고? file 졸리운_곰 2023.10.05 92
1154 [ 一日30分 인생승리의 학습법] 웹 3(Web3) 란 무엇일까? : 분산 인터넷의 미래 file 졸리운_곰 2023.10.01 120
1153 [ 一日30分 인생승리의 학습법] 블록체인 기술을 활용한 분산형 웹 ‘IPFS’가 뜬다! file 졸리운_곰 2023.10.01 89
1152 [ 一日30分 인생승리의 학습법] Web3란 무엇인가요? file 졸리운_곰 2023.09.28 99
1151 [ 一日30分 인생승리의 학습법] 마이크로 프론트엔드 아키텍처 file 졸리운_곰 2023.09.06 91
» [ 一日30分 인생승리의 학습법] [Micro Frontend] 마이크로 프론트앤드 - 개념 file 졸리운_곰 2023.09.06 102
1149 [ 一日30分 인생승리의 학습법] 마이크로프론트엔드 아키텍쳐 file 졸리운_곰 2023.09.06 114
1148 [ 一日30分 인생승리의 학습법] MinIO의 WebUI 사용법 정리 file 졸리운_곰 2023.09.05 124
1147 [ 一日30分 인생승리의 학습법] Qiskit Hackathon Korea Project 논문 정리 졸리운_곰 2023.08.18 105
1146 [ 一日30分 인생승리의 학습법] [Windows] FreeProxy를 이용한 HTTP Proxy 구성 file 졸리운_곰 2023.08.15 94
1145 [ 一日30分 인생승리의 학습법] SPSS는 버리자! 강력한 무료 통계툴 JASP & Jamovi (통계툴 리뷰) 졸리운_곰 2023.08.06 107
1144 [ 一日30分 인생승리의 학습법] [Git] Github 오픈소스 기여해보기 file 졸리운_곰 2023.08.02 79
1143 [ 一日30分 인생승리의 학습법] Server ran out of threads to serve requests. Consider raising the ThreadsPerChild setting 졸리운_곰 2023.07.27 105
1142 [ 一日30分 인생승리의 학습법] Apache 웹서버 동작 방식과 처리 Thread 부족에 따른 증상 확인 file 졸리운_곰 2023.07.27 91
1141 [ 一日30分 인생승리의 학습법] OpenAI Davinci 모델 Fine-tuning 하기 - (1) file 졸리운_곰 2023.07.09 121
1140 [ 一日30分 인생승리의 학습법] [ git 기본 ] 브랜치 전환하기 file 졸리운_곰 2023.07.06 104
1139 [ 一日30分 인생승리의 학습법] [ git 기본 ] git pull 시 특정 branch 를 pull 해오기 졸리운_곰 2023.07.06 111
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED