Top 18 마이크로 프론트 엔드 Best 59 Answer

You are looking for information, articles, knowledge about the topic nail salons open on sunday near me 마이크로 프론트 엔드 on Google, you do not find the information you need! Here are the best content compiled and compiled by the https://toplist.Experience-Porthcawl.com team, along with other related topics such as: 마이크로 프론트 엔드 토스 마이크로프론트엔드, 마이크로 프론트 엔드 장점, MSA Frontend, 마이크로 프론트엔드 단점, vue 마이크로프론트엔드, 프론트엔드 아키텍처, Toss Frontend, 마이크로서비스


토스ㅣSLASH 21 – Micro-frontend React, 점진적으로 도입하기
토스ㅣSLASH 21 – Micro-frontend React, 점진적으로 도입하기


Mobile Convergence :: [Micro Frontend] 마이크로 프론트앤드 – 개념

  • Article author: mobicon.tistory.com
  • Reviews from users: 22264 ⭐ Ratings
  • Top rated: 4.2 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about Mobile Convergence :: [Micro Frontend] 마이크로 프론트앤드 – 개념 마이크로 프론트앤드는 마이크로 서비스처럼 전체 화면을 작동할 수 있는 단위로 나누어 개발한 후 서로 조립하는 방식이다. …
  • Most searched keywords: Whether you are looking for Mobile Convergence :: [Micro Frontend] 마이크로 프론트앤드 – 개념 마이크로 프론트앤드는 마이크로 서비스처럼 전체 화면을 작동할 수 있는 단위로 나누어 개발한 후 서로 조립하는 방식이다. 마이크로 프론트앤드는 마이크로 서비스처럼 전체 화면을 작동할 수 있는 단위로 나누어 개발한 후 서로 조립하는 방식이다. 여기서 작동 단위에 사용된 프론트앤드 프레임워크로 Angular 이든, React 또는 Vue 또..
  • Table of Contents:
[Micro Frontend] 마이크로 프론트앤드 – 개념

Micro Frontend 개념

Micro Frontend 통합 방법

참조

Mobile Convergence :: [Micro Frontend] 마이크로 프론트앤드 - 개념
Mobile Convergence :: [Micro Frontend] 마이크로 프론트앤드 – 개념

Read More

Micro Frontends, 글로 배워보자구요.

  • Article author: blog.wanzargen.me
  • Reviews from users: 23000 ⭐ Ratings
  • Top rated: 3.9 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about Micro Frontends, 글로 배워보자구요. Updating …
  • Most searched keywords: Whether you are looking for Micro Frontends, 글로 배워보자구요. Updating 마이크로 프론트앤드는 마이크로 서비스의 개념을 프론트엔드 세계로 확장한 개념이다. 마이크로 서비스처럼 전체 화면을 작동할 수 있는 단위로 나누어 개발한 후 서로 조립하는 방식이다. Main Concept 기술 독..
  • Table of Contents:

티스토리 뷰

장점

단점

서버 사이드 템플릿 통합

빌드타임 통합

iframe을 통한 런타임 통합

Javascript를 통한 런타임 통합

Web Components를 통한 런타임 통합

Micro Frontends, 글로 배워보자구요.
Micro Frontends, 글로 배워보자구요.

Read More

마이크로 서비스 웹 개발 마이크로 프론트엔드 | 넥스트이노베이션 공식 블로그

  • Article author: blog.nextinnovation.kr
  • Reviews from users: 847 ⭐ Ratings
  • Top rated: 4.4 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 마이크로 서비스 웹 개발 마이크로 프론트엔드 | 넥스트이노베이션 공식 블로그 Updating …
  • Most searched keywords: Whether you are looking for 마이크로 서비스 웹 개발 마이크로 프론트엔드 | 넥스트이노베이션 공식 블로그 Updating 마이크로 서비스가 적용된 프론트엔드 아키텍처, 마이크로 프론트엔드
  • Table of Contents:
마이크로 서비스 웹 개발 마이크로 프론트엔드 | 넥스트이노베이션 공식 블로그
마이크로 서비스 웹 개발 마이크로 프론트엔드 | 넥스트이노베이션 공식 블로그

Read More

[MEDIUM DAILY DIGEST] 마이크로 프론트엔드 MICRO FRONTEND

  • Article author: yumyumcoding.tistory.com
  • Reviews from users: 30848 ⭐ Ratings
  • Top rated: 4.5 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [MEDIUM DAILY DIGEST] 마이크로 프론트엔드 MICRO FRONTEND Updating …
  • Most searched keywords: Whether you are looking for [MEDIUM DAILY DIGEST] 마이크로 프론트엔드 MICRO FRONTEND Updating 들어가기전.. 오늘 아침에도 메일함에는 미디엄 데일리 다이제스트 메일이 와있었다. 볼만한 기사를 띄우고 하나하나 읽은 다음 어떤 걸 정리해볼까 고민했는데 마침 졸업과제로 마이크로서비스에 대한 것을 하고..
  • Table of Contents:

요약

마이크로 프론트엔드(Micro Front-End)란

마이크로 프론트엔드를 언제 사용해야할까

왜 마이크로 프론트엔드 아키텍쳐를 사용할까

장점

단점

결과

티스토리툴바

[MEDIUM DAILY DIGEST] 마이크로 프론트엔드 MICRO FRONTEND
[MEDIUM DAILY DIGEST] 마이크로 프론트엔드 MICRO FRONTEND

Read More

Lattice로 마이크로 프론트엔드를 구축하는 법 | 요즘IT

  • Article author: yozm.wishket.com
  • Reviews from users: 9923 ⭐ Ratings
  • Top rated: 3.6 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about Lattice로 마이크로 프론트엔드를 구축하는 법 | 요즘IT 이번 글은 과열되고 있는 OTT 서비스 시장의 영원한 강자 ‘넷플릭스(Netflix)’가 작성한 ‘Lattice로 마이크로 프론트엔드를 구축하는 법’을 번역 … …
  • Most searched keywords: Whether you are looking for Lattice로 마이크로 프론트엔드를 구축하는 법 | 요즘IT 이번 글은 과열되고 있는 OTT 서비스 시장의 영원한 강자 ‘넷플릭스(Netflix)’가 작성한 ‘Lattice로 마이크로 프론트엔드를 구축하는 법’을 번역 … 이번 글은 과열되고 있는 OTT 서비스 시장의 영원한 강자 ‘넷플릭스(Netflix)’가 작성한 ‘Lattice로 마이크로 프론트엔드를 구축하는 법’을 번역했습니다. 넷플릭스는 어떻게 일하는 방식을 바꾸고자 하는지 궁금하시다면 아래의 글을 통해 알아보겠습니다.넷플릭스,프론트엔드,리액트,Lattice,프레임워크
  • Table of Contents:
Lattice로 마이크로 프론트엔드를 구축하는 법 | 요즘IT
Lattice로 마이크로 프론트엔드를 구축하는 법 | 요즘IT

Read More

SLASH 21

  • Article author: toss.im
  • Reviews from users: 26431 ⭐ Ratings
  • Top rated: 3.7 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about SLASH 21 Day 2. Session. Micro-frontend React, 점진적으로 도입하기. 거대한 모놀리식 Django 프로젝트에 현대적인 프론트엔드 인프라를 구축한 사례를 공유합니다. …
  • Most searched keywords: Whether you are looking for SLASH 21 Day 2. Session. Micro-frontend React, 점진적으로 도입하기. 거대한 모놀리식 Django 프로젝트에 현대적인 프론트엔드 인프라를 구축한 사례를 공유합니다. 토스 개발자 컨퍼런스 SLASH, 토스의 기술과 경험을 소개합니다.
  • Table of Contents:
SLASH 21
SLASH 21

Read More

(설계)Micro Frontend

  • Article author: dhdnjswo5000.tistory.com
  • Reviews from users: 32095 ⭐ Ratings
  • Top rated: 4.6 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about (설계)Micro Frontend 마이크로 프론트엔드란? 특정 기준으로 프론트엔드를 나누는 개발방식으로 프론트앱에 여러 기능과 섹션이 존재하여 통합해서 관리하기 힘들때 사용. …
  • Most searched keywords: Whether you are looking for (설계)Micro Frontend 마이크로 프론트엔드란? 특정 기준으로 프론트엔드를 나누는 개발방식으로 프론트앱에 여러 기능과 섹션이 존재하여 통합해서 관리하기 힘들때 사용. 흥부와놀자 님의 블로그입니다.
  • Table of Contents:
(설계)Micro Frontend
(설계)Micro Frontend

Read More

micro-frontend

  • Article author: velog.io
  • Reviews from users: 32034 ⭐ Ratings
  • Top rated: 4.1 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about micro-frontend 마이크로 프론트 엔드란 백엔드에서 사용하고 있는 마이크로 서비스 아키텍쳐 처럼 프론트엔드에서 관리하는 서비스를 분리해서 개발, … …
  • Most searched keywords: Whether you are looking for micro-frontend 마이크로 프론트 엔드란 백엔드에서 사용하고 있는 마이크로 서비스 아키텍쳐 처럼 프론트엔드에서 관리하는 서비스를 분리해서 개발, … 마이크로 프론트엔드마이크로 서비스 아키텍쳐의 시작마이크로 프론트 엔드의 통합 패턴정리마이크로 프론트 엔드란 백엔드에서 사용하고 있는 마이크로 서비스 아키텍쳐 처럼 프론트엔드에서 관리하는 서비스를 분리해서 개발, 관리하는 패턴을 말한다.마이크로 서비스 아키텍쳐가 왜 부상
  • Table of Contents:

마이크로 프론트 엔드

마이크로 서비스 패턴의 시작

마이크로 프론트 엔드의 통합 패턴

정리

micro-frontend
micro-frontend

Read More

예제가 있는 마이크로 프론트엔드 – SignalFix.net

  • Article author: signalfix.net
  • Reviews from users: 16259 ⭐ Ratings
  • Top rated: 4.8 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 예제가 있는 마이크로 프론트엔드 – SignalFix.net Updating …
  • Most searched keywords: Whether you are looking for 예제가 있는 마이크로 프론트엔드 – SignalFix.net Updating
  • Table of Contents:

마이크로 프론트엔드란 무엇입니까

샘플 애플리케이션

건축물

통합 접근 방식 마이크로 프런트 엔드

빌드 시간 통합

서버 측 통합

indexhtml

어떤 통합 접근 방식을 사용할 것인가

UI 구성 요소 라이브러리

마이크로 프론트엔드 간의 통신

결론 마이크로 프론트엔드

예제가 있는 마이크로 프론트엔드 - SignalFix.net
예제가 있는 마이크로 프론트엔드 – SignalFix.net

Read More

리액트를 사용하여 마이크로프론트엔드 개발하는 방법: 단계적인 가이드

  • Article author: blog.daum.net
  • Reviews from users: 16942 ⭐ Ratings
  • Top rated: 4.9 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 리액트를 사용하여 마이크로프론트엔드 개발하는 방법: 단계적인 가이드 Updating …
  • Most searched keywords: Whether you are looking for 리액트를 사용하여 마이크로프론트엔드 개발하는 방법: 단계적인 가이드 Updating https://blog.bitsrc.io/how-to-develop-microfrontends-using-react-step-by-step-guide-47ebb479cacd How to Develop Microfrontends Using React: Step by Step Guide A practical guide for Microfrontends us..
  • Table of Contents:

리액트를 사용하여 마이크로프론트엔드 개발하는 방법 단계적인 가이드

마이크로프론트엔드들 조립을 위한 전략들

리액트를 사용하여 마이크로 프론트엔드 개발하기

1단계 리액트를 사용하여 기저 프로젝트 구조 만들기

2단계 마이크로 프론트엔드로 전환하기

3단계 고양이와 강아지 마이크로 프론트엔드 앱들을 수정하기

복습

리액트를 사용하여 마이크로프론트엔드 개발하는 방법: 단계적인 가이드
리액트를 사용하여 마이크로프론트엔드 개발하는 방법: 단계적인 가이드

Read More


See more articles in the same category here: 51+ tips for you.

Micro Frontends, 글로 배워보자구요.

반응형

마이크로 프론트앤드는 마이크로 서비스의 개념을 프론트엔드 세계로 확장한 개념이다.

마이크로 서비스처럼 전체 화면을 작동할 수 있는 단위로 나누어 개발한 후 서로 조립하는 방식이다.

Main Concept

기술 독립성

각 작동 단위들은 기술적으로 독립적일 수 있어야 한다.

각 작동 단위에 사용된 프론트앤드 기술(React, Vue, Vanilla JS 등)에 상관 없이 조합이 가능해야 한다.

컨텍스트 독립성

각 작동 단위들이 같은 프레임워크를 사용하더라도, 컨텍스트를 공유해선 안된다.

독립적인 애플리케이션을 자체적으로 구축해야 하고, 상태 공유나 전역 변수에 의존해서는 안된다.

네임스페이스를 활용한 분리

각 작동 단위의 격리가 불가능한 경우, 네이밍 컨벤션에 따라 prefix 등으로 네임스페이스를 활용한다.

CSS, 로컬 스토리지, 이벤트, 쿠키에 네임스페이스를 부여하여 충돌을 방지하고 명확히 분리한다.

통신 시스템에 기본 브라우저 기능 활용

작동 단위 간의 통신을 위한 시스템을 자체 구축하는 것보다, 브라우저 이벤트를 사용한다.

만약 정말로 작동 단위 간 커스텀 API가 필요한 경우, 가능한 한 간단하게 유지한다.

탄력적인 웹 디자인 구축

자바스크립트에서 에러가 나거나 실행할 수 없더라도, 기능은 사용 가능해야 한다.

범용 렌더링(Universal Rendering)과 점진적 향상(Progressive Enhancement)을 통해 성능을 향상시킬 수 있다.

Universal Rendering

Progressive Enhancement

장점

작고, 응집력 있고 유지보수에 용이한 코드베이스를 가질 수 있다. 따라서 디커플링이라는 소프트웨어 개발 목표를 달성한다.

각 마이크로 프런트 엔드는 고유한 기술 및 프레임 워크를 선택할 수 있다. 독립적으로 구현, 테스트, 업그레이드, 업데이트 및 배포 할 수 있어, 팀에 유연성을 제공한다.

프론트앤드 개발을 점진적 업그레이드 또는 재작성이 수월해진다.

마이크로 프런트 엔드는 수직 팀을 장려한다. 수직 팀에는 일반적으로 기능 소유자, UX 디자이너, 제품 관리자, 백엔드 개발자, 프런트 엔드 개발자 및 품질 보증 엔지니어가 포함된다.

단점

마이크로 프런트 엔드는 분리되거나 느슨하게 결합 된 구성 요소를 위해 설계되었다. 그들 사이에 너무 많은 종속성을 넣으려고하면 디버깅 악몽이 발생할 수 있다.

마이크로 프런트 엔드를 가능하게하는 파이프라인으로 인해 복잡도가 증가한다. 외부로드 문제를 해결하려면 기술적 전문 지식이 필요하며 디버깅 프로세스에는 시간이 많이 걸린다. 또한 SSO (Single Sign-On), 글로벌 CSS 등과 관련된 문제에 직면 할 수 있다.

각 마이크로 프런트 엔드에는 중복 된 코드 또는 기능이 있을 수 있다. 예를 들어, React 라이브러리는 각 마이크로 프런트 엔드에 포함될 수 있어, 번들 크기와 메모리 소비를 증가시킨다.

런타임 시 마이크로 프런트 엔드를 동적 또는 지연로드하는 데 추가 시간이 걸린다.

사용자 인터페이스는 여러 팀에서 설계되었으므로 UX 설계는 마이크로 프런트 엔드에서 일관되지 않을 수 있다.

반응형

Micro Frontend 통합 방법

독립적인 개발 및 배포

마이크로 앱들을 개발 후, 어떻게 통합할지 고려해야 한다.

여러 방식이 있는데, 공통적으로 존재하는 아키텍처가 있다.

일반적으로 마이크로 애플리케이션들이 있고(작동 단위), 그것들을 구성하는 단일 컨테이너 애플리케이션이 있다.

단일 컨테이너 애플리케이션은 다음과 같은 것들을 한다.

공통 페이지 요소를 렌더링한다.

인증 및 탐색과 같은 공통적으로 고려되어야 하는 문제들을 해결한다.

다양한 마이크로 앱들을 페이지에 모으고, 각 앱들에게 언제 어디서 렌더링할지 알려준다.

서버 사이드 템플릿 통합

각 서버로 html 템플릿을 요청하고, 최종 응답서버에서 각 템플릿을 조합해서 응답을 보낸다. 서버측에서 최종 화면을 조합한다. (SSR 에 적용)

코드로 살펴보자.

아래와 같이 범용적인 페이지 요소들을 포함하는 index.html 파일을 만든다. 이 파일에는 HTML fragment 파일들이 서버사이드에서 포함되어진다(넣어진다).

Feed me

🍽 Feed me

Nginx를 사용하여 아래 파일을 제공하고, 요청되는 URL이 $PAGE 변수에 대입되도록 구성한다.

server { listen 8080; server_name localhost; root /usr/share/nginx/html; index index.html; ssi on; # Redirect / to /browse rewrite ^/$ http://localhost:8080/browse redirect; # Decide which HTML fragment to insert based on the URL location /browse { set $PAGE ‘browse’; } location /order { set $PAGE ‘order’; } location /profile { set $PAGE ‘profile’ } # All locations should render through index.html error_page 404 /index.html; }

위와 같은 방식은 상당히 표준적인 서버측 구성 방식이다.

여기엔 어떻게 여러 개의 HTML 파일들이 웹 서버에 배치되는지는 나와있지 않지만, 각 파일들은 다른 페이지들을 고려하거나 다른 페이지들에게 영향을 미치지 않는다고 가정한다. 또한, 각각이 독립적인 배포 파이프라인을 가진다고 가정한다.

독립성을 높이기 위해, 각 마이크로 앱들을 렌더링하고 서비스하는 별도의 서버가 있을 수 있으며, 한 서버는 한 마이크로 앱에 요청을 한다. 또한 응답 캐싱을 통해 지연 시간에 영향을 주지 않고 작업을 수행하도록 할 수 있다.

각 서버는 독립적으로 빌드 및 배포할 수 있음

빌드타임 통합

마이크로 프론트엔드를 패키지로 배포하고, 컨테이너 앱이 그것들을 라이브러리 종속성(library dependencies)으로 포함하도록 하는 것이다.

코드로 살펴보면, 아래와 같은 package.json이 작성될 수 있다.

{ “name”: “@feed-me/container”, “version”: “1.0.0”, “description”: “A food delivery web app”, “dependencies”: { “@feed-me/browse-restaurants”: “^1.2.3”, “@feed-me/order-food”: “^4.5.6”, “@feed-me/user-profile”: “^7.8.9” } }

이 방식은 배포 가능한 단일 Javascript 번들을 생성한다. 그리고 다양한 공통 종속성을 제거할 수 있다.

하지만 이 접근 방식은 각각의 마이크로 앱에 변경사항이 있을 때마다, 그 변경사항을 반영한 단일 번들을 만들기 위해 다시 컴파일하고 릴리즈해야 한다.

애플리케이션을 개별 코드베이스로 나누는 많은 문제들을 해결해놓고, 다시 릴리즈 단계에서 커플링하는 방식은 제외하자. 마이크로 프론트엔드를 빌드타임이 아닌 런타임에 통합하는 방법을 찾아야 한다.

iframe을 통한 런타임 통합

전통적인 방식이면서 가장 쉬운 방식이다.

iframe을 사용하면 각 마이크로 페이지들을 독립적인 하위 페이지로 쉽게 만들 수 있다. 스타일과 글로벌 변수가 서로 간섭하지 않는다는 측면에서 상당한 수준의 고립성을 제공한다.

Feed me!

Welcome to Feed me!

새로운 기술이 아니라서 흥미롭지 않을 수 있지만, 마이크로 프론트엔드의 이점을 상기해본다면, 애플리케이션 분할과 팀을 구조화하는 데에 신경쓴다면, 이 방식이 가장 적합하다.

Iframe 방식을 선택하는 것을 꺼리는 경우가 종종 있는데, 사실 그런 데에는 타당한 이유가 있다. 이 방식을 통한 분리는 쉽지만, 다른 옵션들보다 유연성이 떨어지는 경향이 있다.

이 방식은 어플리케이션의 서로 다른 부분들을 통합 구축하는 것이 어렵다. 따라서 라우팅, 히스토리, deep linking이 더욱 복잡해지고, 반응형 페이지 개발에도 추가적인 어려움들이 따른다.

UX가 iframe안에 갇히기 때문에 어색한 UI 표현을 가질 수 있다.

Javascript를 통한 런타임 통합

iframe과 달리 유연한 통합이 가능하다. 현실적으로 가장 많이 사용하는 방식이다.

각 마이크로 앱들은

위 예시는 굉장히 기초적인 예시지만, 그래도 기본적인 기술을 보여준다.

빌드타임 통합과는 달리, 각 번들.js 파일들을 독립적으로 배치할 수 있고, iframe 통합과는 달리, 원하는대로 마이크로 앱들 간의 통합이 가능하도록 유연성을 제공한다. 필요한 경우에만 번들을 다운로드하거나, 마이크로 앱이 렌더링될 때 데이터를 주고받는 등 다양한 방법으로 코드를 확장할 수 있기 때문이다.

이처럼, 이 접근 방식은 유연성과 독립적 구현 가능성이 결합되어 자주 채택된다.

Full Examples

Web Components를 통한 런타임 통합

이 방식은 자바스크립트를 통한 런타임 통합 방식에서 한 가지만 변형이 있는 방식이다.

각 마이크로 앱이 호출할 컨테이너의 전역 함수를 정의하여, 상위에서 하위 앱들의 전역 함수를 호출하는 방식이 아니다.

대신, 컨테이너 앱에서 인스턴스화할 HTML Custom Element를 정의하는 방식 이다.

Feed me!

Welcome to Feed me!

최종 결과는 이전 방식과 매우 유사하다.

주요 차이점은 '웹 컴포넌트 방식'을 선택한다는 것이다.

웹 컴포넌트 스펙을 좋아하고, 브라우저가 제공하는 기능을 사용하는 것을 좋아한다면 이 옵션이 적합하다.

컨테이너 앱과 마이크로 앱들 사이에 고유한 인터페이스를 정의하여 사용하려면, 이전 방식이 적합하다.

Mirco Frontend 통합 고려사항

스타일링 BEM과 같은 엄격한 네이밍 규칙 사용 SASS와 같은 전처리기를 통해 상위 선택자 추가 등을 통해 독립성 유지 모든 스타일을 CSS-in-JS 방식으로 처리 Shadow DOM: 메인 document DOM 으로부터 독립적으로 렌더링 되는 캡슐화된 Shadow DOM 트리를 엘리먼트에 추가하고, 연관된 기능을 제어하기 위한 JavaScript API 의 집합. 이 방법으로 엘리먼트의 기능을 프라이빗하게 유지할 수 있어, 다큐먼트의 다른 부분과의 충돌에 대한 걱정 없이 스크립트와 스타일을 작성할 수 있다.

component library 공유 마이크로 앱들 간의 시각적 일관성을 유지하기 위해 재사용 가능한 UI 컴포넌트 라이브러리를 개발하여 공유한다. 코드 재사용성과 시각적 일관성을 유지할 수 있다. 너무 일찍 만드는 것은 좋지 않다. 실제로 사용하기 전에 컴포넌트의 API가 무엇이어야 하는지 추측하기는 쉽지 않다. 그러므로 많은 변동이 발생하게 되므로, 초기에는 일부 중복이 발생하더라도 각 팀이(각 마이크로 앱 내에서) 코드베이스에서 필요에 따라 자체 컴포넌트를 만들어두는 것이 좋다. 패턴이 자연스럽게 나타나도록 허용하고, 컴포넌트의 API가 명확해지면 그 때 만드는 것을 권장한다.

애플리케이션 간 커뮤니케이션 가능한 적은 소통을 하는 것이 좋다. Custom events를 사용하면 마이크로 앱들이 간접적으로 통신할 수 있다. 이는 직접 결합을 최소화하는 좋은 방법이지만, 마이크로 앱들 간 약속을 정하고 구현해야 하므로 더 어려울 수 있다. 콜백과 데이터를 아래쪽으로 전달하는 React 모델로 약속을 명확하게 정하는 것도 좋은 솔루션이다. URL 표시 줄을 통신 메커니즘으로 사용하는 것도 좋은 방법이다. 어떤 방식을 선택하든, 서로 메시지 또는 이벤트를 전송하여 통신하는 것이 좋으며, 공유 상태를 갖는 것은 좋은 선택지가 아니다. 마이크로 서비스에서 데이터베이스를 공유하는 것이 좋지 않은 것처럼, 데이터 구조와 도메인 모델을 공유하자마자 엄청난 양의 결합이 생기게 되고, 변경에 많은 제약이 따르기 때문이다. vuex는 일반적으로 하나의 응용 프로그램에 대해 단일 전역 공유 저장소를 기본으로 한다. 그러나 각 마이크로 앱들이 자체 저장소를 갖는 것이 더 합리적이다.

백엔드 통신 BFF(Backend for Frontend Pattern) 패턴으로 프론트앤드 전용 API를 갖는다. 각 마이크로 앱들은 해당 프론트 엔드의 요구사항만 충족하는 목적을 가진 백엔드만을 가진다. 별도의 데이터베이스를 가질 수도 있다. 로그인 인증 정보는 통합하는 Container가 소유한다. 초기화 시 인증을 통해 얻은 토큰을 각 마이크로 프론트엔드에 주입되며, 마이크로 프론트엔드는 서버에 대한 요청과 함께 토큰을 보내고, 해당 마이크로 앱의 백엔드에서는 필요한 모든 유효성 검사를 수행하는 방식으로 구성할 수 있다.

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

통합 테스팅

모놀리틱과 마이크로 방식은 테스팅에서 모두 동일하지만 한 가지 명확한 차이는, 다양한 마이크로 프론트엔드와 컨테이너 애플리케이션의 통합 테스트이다. 이 작업은 기능 테스트나 e2e 테스트 도구(selenium, cypress 등)를 사용하여 수행할 수 있으나, 그렇게 멀리 갈 것 까진 없다.

통합 기능 테스트는 low level에서 다룰 수 없는 테스트만 다루면 된다. low level 에서는 비지니스 로직, 렌더링 로직 정도를 커버하는 수준의 단위 테스트를 수행하고, 통합 기능 테스트에서는 각 페이지들이 잘 조합되었는지만 확인하면 된다. 예를 들면, 특정 URL 에 완전히 통합된 애플리케이션이 로드되었는지 확인하기 위해, 마이크로 프론트엔드의 하드코딩 된 특정 텍스트가 페이지에 존재하는지를 assert 하는 것이 될 수 있다.

References

반응형

[MEDIUM DAILY DIGEST] 마이크로 프론트엔드 MICRO FRONTEND

이미지 출처: https://tomsoderlund.medium.com/micro-frontends-a-microservice-approach-to-front-end-web-development-f325ebdadc16

들어가기전..

오늘 아침에도 메일함에는 미디엄 데일리 다이제스트 메일이 와있었다. 볼만한 기사를 띄우고 하나하나 읽은 다음 어떤 걸 정리해볼까 고민했는데 마침 졸업과제로 마이크로서비스에 대한 것을 하고있기도 하고, 예전에 일했던 곳에서 bit(bit.dev https://bit.dev)를 도입하려고 공부했던 적이 있었기 때문에 마이크로 프론트엔드에 대한 포스팅을 공부하고 또 정리하려고 한다. 졸업과제 프론트엔드를 개발하면서 드롭다운이나 버튼 같은 컴포넌트들을 나만의 라이브러리로 만들어보고 싶다는 생각을 했었는데 마이크로 프론트엔드에 대해서 좀 더 잘 알고 bit를 활용한다면 충분히 가능하지 않을까 생각한다. 메일에 온 글을 정리해서 포스팅하려고 했지만 찾아보니 더 좋은 글이 있는 것 같아서 그 글을 포스팅하려고 한다.

이 글은 아래 링크의 글을 번역 및 정리한 글입니다.

https://medium.com/rocket-mortgage-technology-blog/micro-front-end-architectures-9875ca1b8b05

요약

웹이 계속해서 복잡해지면서, 프론트엔드 개발자들은 마이크로서비스 아키텍쳐가 나오기 전에 백엔드 개발자들이 겪었던 고통을 똑같이 경험하고 있다.

: 많은 도메인 바운더리에 걸쳐서 퍼져있는 큰 모놀리식 코드들과 높은 결합도, 나쁜 확장성, 느린 기능 개발, 머지 충돌의 어려움과 고도로 조직화된 개발 등..

이 기사에서는 마이크로 프론트엔드(micro front-end)라 불리는 프론트엔드 소프트웨어 아키텍쳐의 현대적인 접근을 다룰 것이다. 그리고 마이크로 프론트엔드의 코어 컨셉과, 장점, 단점에 대해서 배울 것이다.

마이크로 프론트엔드(Micro Front-End)란?

몇년 전, 하나의 모놀리식 백엔드가 여러 팀과 확장된 많은 도메인에서 작업을 하는 것은 흔한 일이었다. 이러한 단일성으로 인해, 더 집약적인 엔드포인트를 다른 덜 집약적인 것들로부터 독립적으로 확장하는 것이 불가능했다. 하나의 코드베이스에서 많은 팀이 일하기 때문에 머지 충돌에 어려움을 겪는 것이 흔한 일이었고, 배포를 성공적으로 하기 위해서는 고도의 조정이 필요했다. 이것은 상당한 시간을 필요로 했고, 느린 기능 개발을 초래했다.

마이크로서비스는 백엔드 서비스를 설계하고 구축하는 것에 대한 생각에 큰 변화를 가져올 수 있다. 하지만 프론트엔드는? 유저 인터페이스(User interfaces : UI) 와 사용자 경험 (User experience : UX) 는 해마다 점점 더 복잡해져왔다. 하지만 많은 사람들은 아직도 그들의 프론트엔드 모놀리식 코드베이스에서 벗어나지 못하고 똑같은 이슈를 겪고있다. 이에 대한 솔루션이 존재하는가?

존재한다! 여기서 마이크로 프론트엔드 아키텍쳐가 정말로 빛을 발할 수 있다. 마이크로 프론트엔드는 여러개의 독립적으로 배포가능한 프론트엔드 어플리케이션을 하나의 응집된 사용자 경험으로 구성하는 아키텍처 스타일이다. 이 용어는 2016년 11월 “ThoughtWorks Technology Radar” 에서 조직들이 필요할때 적용할 수 있는 증명된 기술로서 리스트에 올라 처음 등장하였다.

마이크로 프론트엔드를 언제 사용해야할까?

당신이 여러 개발 팀에서 작업하고 도메인 바운더리를 넘나드는 많은 기능을 포함한 아주 큰 프론트엔드 프로덕트를 만들 때 마이크로 프론트엔드가 적합하다. 마이크로 프론트엔드 아키텍쳐는 여러 업무를 담당하는 팀들이 보다 독립적이고 자율적으로 될 수 있게 돕고, 개발을 빠르게 할 수 있고, 자주 전달이 가능하게 돕는다.

하지만, 마이크로 프론트엔드는 모든 것을 만족시키는 솔루션이 아니다. 한 두팀이 운영하는 하나의 비즈니스 도메인에 포함되는 소규모 프론트엔드 프로덕트에서는 마이크로 프론트엔드가 지나칠 수 있다. 마이크로 프론트엔드 아케텍처를 사용하지 않더라도, 어플리케이션의 기능을 모듈화하여 약결합과 높은 응집성을 가져갈 수 있다. 그리고 나서 마이크로 프론트엔드에 대한 필요가 생기면, 그때 코드 베이스 일부를 마이크로 프론트엔드로 추출하는 것은 어렵지 않을 것이다.

왜 마이크로 프론트엔드 아키텍쳐를 사용할까?

마이크로 프론트엔드는 다른 모든 것들과 마찬가지로 고유한 장단점을 가지고 있다. 마이크로프론트엔드가 당신의 제품에 적합한지 판단하기 위해선 당신의 문제들과 이점들을 잘 따져보는 것이 중요하다.

장점

마이크로 프론트엔드 아키텍쳐의 가장 큰 이점은 어플리케이션과 코드와 관련이 된 것이 아니라 팀의 조직 및 프로세스와 관련된 것이다. 다음은 명시적으로 언급할 만한 10가지 주요 장점들이다.

1. 도메인 바운더리 간의 부적절한 결합을 감소

2. 각 팀의 자율성의 수준을 높임

3. 배포를 수직적으로 나누어서 독립적인 테스팅이 가능함

4. 축소된 범위에 중점을 두어 이해력이 향상

5. 더 작은 코드베이스에서 유지관리성 향상

6. 프레임워크와 dependency들에 대한 교체와 업그레이드를 더 쉽게할 수 있음

7. 레거시 코드베이스를 점진적으로 업데이트하는 능력 향상

8. 주인의식을 높일 수 있음

9. 특정 도메인에서 더 많은 주제에 대한 전문가 양성을 도움

10. 쉽게 식별할 수 있는 문제들에 대한 재사용성 촉진

단점

마이크로 프론트엔드 아키텍쳐를 사용하면 당신의 프로덕트에 추가적인 복잡함과 문제들을 도입하는 것이다. 이 문제들중 일부는 해결이 가능할 것이지만, 다른 일부는 해결할 수 없다. 다음은 가장 중요한 단점 10가지이다.

1. 몇몇 접근은 모던 브라우저에서만 호환됨

2. 하나의 마이크로 프론트엔드에서 다른 프론트엔드로 스타일이 샐 수 있는 가능성이 있음

3. 마이크로 프론트엔드에서 하나의 응집성 있는 사용자 경험을 유지하는 것의 어려움

4. 네트워크 트래픽증가가 성능저하로 이어질 수 있음

5. 시간이 갈수록 페이로드 크기가 증가하여 더 큰 다운로드가 필요

6. 중복된 dependenct가 여러번 로드되어서 낭비가 발생할 수 있음

7. 마이크로 프론트엔드 컴포넌트 간에 통신의 어려움

8. 환경 차이로 인해 "내 컴퓨터에서는 되는데" 문제가 발생할 수 있음

9. 더 많은 레포지토리, 툴, 파이프라인, 서버등의 유지해야할 것이 더 늘어남

10. 팀 간에 동일한 문제를 해결하려고 해서 더 많은 노력이 들 수 있음

(마이크로 프론트엔드 아키텍쳐를 사용하는 예시는 생략하였습니다. 이에 대해 알고 싶으시면 위의 링크를 따라가 원본 글을 확인하시길 바랍니다.)

결과

이 기사가 마이크로 프론트엔드가 무엇인지 더 잘 이해하는데 도움이 되었기를 바란다. 마이크로 프런트엔드 아키텍쳐가 합리적인 경우들에 대해서 더 잘 알고 있어야 하고 또한 마이크로 프론트엔드 패턴이 좋은 이유와 불리한 이유에 대해서도 이해해야 한다. 마지막으로 현재 업계에서 널리 사용되고 있는 최신 통합 옵션에 대해서도 잘 알고 있어야 한다.

이러한 지식을 바탕으로 제품을 위한 아키텍쳐 비전에 대해 더 나은 정보에서 비롯된 결정을 내릴 수 있다. 이 정도를 팀과 조직에 전달하여 이러한 패턴이 당신의 제품에 적합한지 논의하기 바란다.

Lattice로 마이크로 프론트엔드를 구축하는 법

해외 유명 IT 기업은 각자 자신들의 블로그를 운영해 개발 방법과 기업 문화 등을 소개하고 있습니다. 요즘IT는 이러한 IT 기업 블로그의 콘텐츠를 번역해 소개하는 시리즈를 준비했습니다. 이들은 어떻게 사고하고, 어떤 방식으로 일하는 걸까요?

이번 글은 과열되고 있는 OTT 서비스 시장의 영원한 강자 '넷플릭스(Netflix)'가 작성한 ‘How We Build Micro Frontends With Lattice'를 번역했습니다. 넷플릭스는 어떻게 일하는 방식을 바꾸고자 하는지 궁금하시다면 아래의 글을 통해 알아보겠습니다.

넷플릭스가 꾸준히 성장하면서 레버뉴/그로스 엔지니어링[1]의 수요 또한 빠르게 진화하고 있습니다. 우리의 툴도 그만큼 빠르게 진화할 필요성이 생겼고요. 레버뉴/그로스 툴(Revenue and Growth Tools, 이하 RGT) 팀은 레버뉴/그로스 엔지니어링 관련 부서에서 언제든 쉽게 활용할 수 있는 솔루션을 마련하고자, 여러 가능성을 열어 두고 새로운 툴을 만들어 보기로 마음먹었습니다. 그 과정에서 우리는 한 가지 사실을 발견합니다. 다양한 툴에서 공통적으로 사용된 몇몇 디자인 패턴과 시스템 구성요소들로 인해 불필요한 작업이 여러 번 반복되고 있었습니다.

우리는 레버뉴/그로스 엔지니어링 소속 팀들의 동반 성장을 위해서 이 툴들을 통합할 필요가 있었습니다. 마이크로 프론트엔드[2]의 민첩함과 프레임워크[3]의 확장성을 동시에 겸비한 툴이 있다면 더 많은 사람들이 우리 툴을 사용하게 될 거라 생각했죠. 누구나 커스터마이징 할 수 있고, 확장이 쉬운 부분들만 골라서 사용자들의 세부적인 비즈니스 및 기술적인 요구사항을 충족시킬 수 있는 툴을 만들고 싶었습니다. 그 노력의 산물로, RGT팀은 마이크로 프론트엔드 장착형 프레임워크인 Lattice를 탄생시킵니다.

새로운 접근

요즘 웹 애플리케이션들이 다른 디펜던시[4]를 활용해서 UI 구성을 짜는 걸 흔히 볼 수 있는데요. 소스코드 파일을 변환하는 빌드 타임 내에 디펜던시를 번들링[5]하는 기존의 방식은 유연성이 부족한 탓에 사용자들이 자유롭게 활용하기에는 어려움이 많았습니다. 우리는 소스의 수에 구애받지 않으면서도, 다른 애플리케이션에서 그때그때 필요한 외부 디펜던시를 가져와 사용할 수 있는 툴을 만들고 싶었습니다.

그래서 다음과 같이 높은 수준의 목표를 설정하게 되었습니다.

중복 패키지 생성 최소화: 기존의 프론드엔드 코드를 재사용하도록 장려하고 사용자 인터페이스(UI) 기능을 축소시키는 새로운 패키지 생성을 가급적 피합니다. 여러 패키지가 한 기능을 공유하게 되면 애플리케이션 관리는 더욱 어려워질 가능성이 높기에, 우리는 기존에 잘 알려진 자바스크립트 라이브러리 중 하나인 리액트(React) 패러다임을 활용해서 애플리케이션이 핵심 기능을 확장할 수 있는 방법을 모색했습니다.

약한 의존성[6] : 호스트 애플리케이션은 https를 거쳐 넷플릭스에 자체적으로 호스팅 한 원격 번들로 모듈을 참조할 수 있습니다. 이런 번들은 웹팩 모듈 페더레이션 이나 네이티브 자바스크립트 모듈 처럼 이미 채택된 기준을 준수해서 만든 번들로, RGT팀이 아닌 다른 외부 팀도 사용할 수 있습니다.

배열은 완벽하게, 결합은 느슨하게 : 넷플릭스에 사용된 기준 프레임워크와 라이브러리에 완전히 들어맞도록 배열합니다. 플러그인은 불필요한 코드 템플릿 사용을 자제하여 핵심 기능을 실현하는데 초점을 두어야 하고, 자바의 코드인 API wrapper를 사용하는 번거로움 없이 실행할 수 있어야 합니다.

메타데이터 중심 : 애플리케이션 수명주기 상에서 언제든지 자유롭게 주입할 수 있는 배열 형태가 해당 플러그인 모듈을 정의합니다. 프레임워크는 등록과 등록취소가 자유로워야 하고, 플러그인 확장은 필요한 경우에만 적용합니다.

신속한 개발: 불필요한 빌드와 배치를 생략하여 개발 사이클을 줄입니다. 타입 스크립트 선언(TypeScript declarations)을 통해 모든 콘텍스트가 사전에 이용 가능한 플러그인을 개발할 수 있고, 애플리케이션이 정의한 엄격한 인터페이스에 맞춰 디자인하면 플러그인과 호스트를 동시에 개발할 수 있습니다.

이론적 예시

내장 Lattice 플러그인을 활용한 개발자 대시보드 애플리케이션

위의 예시를 한 번 살펴볼까요? 이 애플리케이션은 헤더와 콘텐츠 영역을 렌더링하고 컨트롤해서 사용자에게 명확한 기능성을 보여줍니다. 이 애플리케이션 출시 직후, 우리는 다른 툴에서 볼 수 있는 정보를 이 애플리케이션에도 볼 수 있으면 좋겠다는 피드백을 받았는데요. 새 프레임워크 Lattice에 피드백받은 내용을 반영해 다른 애플리케이션에 있는 기존 기능을 삽입할 수 있게 되었습니다.

Lattice 플러그인 호스트(뒤에서 더 자세히 다룰 예정입니다.)는 외부 플러그인인 워크플로(Workflows)와스피내커(Spinnaker ) 를 참조해서 기존 애플리케이션을 확장할 수 있게 합니다. 위 예시에서는 확장할 수 있는 두 영역, 즉 포탈 컴포넌트와 관련된 애플리케이션 콘텐츠와 설정 가능한 라우팅을 정의할 필요가 있습니다.

렌더링 처리를 위해 Lattice와 두 플러그인 워크플로와 스피내커가 함께 연속적으로 발생하는 이벤트를 아래와 같이 핸들링합니다.

Lattice 내의 디스패치 사이클

첫 번째로, Lattice가 두 플러그인을 비동기적으로 로딩합니다.

그다음으로 애플리케이션을 따라 이벤트가 흘러갈 수 있도록 프레임워크가 이벤트를 디스패치합니다. 마지막으로 위 예시에서처럼 워크플로가 자체적인 루트를 등록하고, 스피내커는 오버레이를 추가합니다.

리액트(React)로 실행하기

위 시나리오대로 흘러가려면, 호스트 애플리케이션은 Lattice 라이브러리를 가지고 있는 상태에서 외부 플러그인을 참조하는새 플러그인 호스트 PluginHost 를 추가해야 하는데요. 이 호스트는 애플리케이션과 로딩할 플러그인에 대한 상세한 정보를 필요로 합니다.

Lattice 플러그인 호스트로 리액트 애플리케이션 향상시키기

위의 예시처럼 우리는 useFetchPluginConfiguration 훅[7]을 사용해 외부 서비스로부터 메타데이터를 가져오는 테스트를 진행했습니다. 관리자는 이 훅을 사용해서 애플리케이션 소스 코드에 구애받지 않고 원하는 대로 마음껏 플러그인을 더하고 뺄 수 있습니다.

Lattice 프레임워크로 정의한 훅을 사용하면 플러그인이 해당 라우팅으로 접근할 수 있게 됩니다. usePluggableState 훅은 디폴트 애플리케이션 루트를 불러와 Lattice 프레임워크로 통과시킵니다. 그리고 이 AppRoutes 식별자[8]에 응답하는 플러그인은 다음과 같이 구체적인 루트를 삽입할 수 있게 됩니다.

Lattice 훅으로 기존 애플리케이션 상태 확장하기

아래에서 볼 수 있듯이 플러그인이 요소만 가지고 있으면 페이지에 어떤 리액트 요소든지 모두 삽입할 수 있습니다. 리액트 요소를 삽입하면 플러그인은이 AppContent 영역 내에서 렌더링 처리를 할 수 있게 됩니다.

Lattice Pluggable로 커스텀 칠드런(Custom Children) 렌더링

최종적인 애플리케이션 스니펫[9]을 아래 예시에서 확인할 수 있습니다.

Lattice 파헤치기

Lattice는 리액트 웹 애플리케이션이 활용하기 좋은 추상화 계층[10]을 제공하는 작은 프레임워크다.

Lattice를 활용해서 개발자들은 핵심 프로덕트에 집중할 수 있게 되었고, 외부 플러그인으로 커스터마이징이 가능한 애플리케이션 영역의 기능을 손쉽게 포함시킬 수 있게 되었습니다. 또 Lattice 훅으로 해당 요소를 확장해서 외부 상태를 사용할 수 있게 되었습니다.

Lattice 플러그인 모듈은 자바스크립트 기능으로, 원격 애플리케이션으로 실행이 가능한 모듈입니다. 이 모듈은 호스트 애플리케이션과 공유된 원격 요소(들) 사이를 끈끈하게 붙여주는 풀 역할을 합니다. 그리고 이 모듈은 애플리케이션 내에서 어떤 요소가 노출되어야 할지, 또 호스트가 제공하는 정보에 기반하여 이 요소를 어떻게 렌더링해야 할지 선언합니다.

Lattice Pluggable은 호스트 애플리케이션이 기준점이 되는 리액트 요소를 통해 마운트 포인트[11]를 노출시킵니다. 플러그인은 자체 콘텐츠로 이 리액트 요소를 처리할 수 있고, 처리를 중지할 수도 있습니다.

Lattice Custom 훅은 상태 리듀서 패턴(state reducer pattern)을 사용해서 상태를 처리합니다. 이 훅은 호스트 애플리케이션이 최초 상태를 유지할 수 있도록 필요시에 상태 수정을 가능하게 하며, 또 플러그인에 자체 데이터를 삽입할 수 있게 합니다.

Lattice 플러그인

호스트 애플리케이션 내의 Lattice 기능

Lattice의 핵심 기능은 바로 프레임워크 외부에서 정의된 웹팩 모듈 페더레이션, 네이티브 ES 모듈이나 프레임워크 외부에서 정의된 커스텀 실행을 통해 비동기적으로 원격 모듈을 로딩할 수 있다는 것인데요. 호스트 애플리케이션은 기본적인 애플리케이션 콘텍스트와 로딩하고자 하는 원격 모듈을 정의하는 배열을 Lattice에 제공합니다. 일단 이렇게 한 번 로딩되면, 이 플러그인에 대한 레퍼런스가 리액트 콘텍스트 사례에 내부적으로 저장됩니다.

Lattice로 연합된 모듈(Federated Module) 기능 노출하기

이제 플러그인 모듈은 완전히 새로운 기능뿐만 아니라 기존의 기능을 변경해서도 호스트 애플리케이션에 제공할 수 있습니다. 플러그인이 여러 애플리케이션에 걸쳐 보편적으로 사용 가능하려면 Lattice에서 사용 가능한 모든 애플리케이션이 기준 식별자를 실행할 수 있어야 하는데요. 대부분의 플러그인이 기존의 애플리케이션 기능을 확장하려 하겠지만 아직까지는 이런 기능성 확장이 보편적이지 않기 때문에 현재로써는 호스트 디자인 관련 지식이 절대적으로 필요합니다.

Lattice는 현재 무엇이 렌더링 처리되고 있는지 알고자 끊임없이 identifier 값(즉, 매직 스트링[12])을 요구합니다. Lattice 플러그인 호스트는 이전에 등록하고 로딩한 적이 있는 모든 플러그인으로 이 식별자를 디스패치합니다. 그러면 플러그인이 응답하고, 최종 반환 값이 컴포넌트 트리[13]에서 렌더링 됩니다. 이 모델을 통해, 플러그인은 해당 이벤트를 확장, 변경하거나, 경우에 따라서는 단순히 무시해 버릴 수도 있습니다. 이 프로세스는 리덕스(Redux)나 익스프레스 미들웨어 기능(Express Middleware functions) 접근법과 유사하다고 보시면 됩니다.

Lattice는 또 기존 애플리케이션 기능성을 확장하는데도 사용됩니다. 이렇게 하려면 플러그인이 반드시 호스트 애플리케이션 수명주기에서 사용되는 호스트 식별자와 데이터 모양을 잘 인지하고 있어야 합니다. 이게 불가능한 것처럼 들릴지 모르겠지만, 우리는 호스트 애플리케이션이 호스트와 플러그인 간에 공유되는 타입 스크립트 선언 프로젝트를 퍼블리싱할 수 있도록 합니다. 간단히 말해 우리가 Lattice를 통해 확장하는 모든 넷플릭스 내부 툴이 DefinitelyTyped 레포지토리를 가지고 있다고 생각하시면 이해하기 쉽습니다.

이렇게 우리는 개발자에게 완벽한 배열과 약한 결합으로 호스트 애플리케이션과 플러그인이 공유할 수 있는 최적의 개발 환경을 제공하고, 여기서 플러그인은 이미 선언한 인터페이스를 고수하며 개별적으로 분산된 형태에서 개발 가능해집니다.

무한한 가능성

애플리케이션 내부의 핵심 기능을 확장하는 데서 출발했지만, 어쩌다 보니 Lattice를 다른 방식으로도 활용할 수 있게 되었는데요. 단순히 if 명령을 쓰는 개념을 넘어, 한 걸음 물러서서 앞서 언급한 로직을 유도하는 도메인이 어떤 것인지 판단하고, 이 로직을 각각의 플러그인으로 어떻게 이동시킬지 생각해보는 단계까지 이르게 되었습니다.

또, 우리는 Lattice로 애플리케이션 안에서 좀 더 섬세한 영역을 쉽게 만들 수 있다는 사실을 알게 되었어요. 예를 들면, Lattice 식별자를 이용해서 개별적인 형태의 구성 요소를 렌더링 할 수 있고, 플러그인이 특정한 UI 요소에 기여하는 디자인을 할 수 있게 되었습니다. 이런 식으로 메타데이터 모델이 받쳐주는 포괄적인 툴을 만들 수 있게 되었고, 새로운 아웃 오브 박스 경험[14]도 구축할 수 있었습니다.

무엇보다도 가장 중요한 건, 서로 다른 플러그인을 실행시키기만 해도 상반되는 요구사항에 아주 쉽고 빠르게 반응할 수 있다는 것입니다.

향후 계획

Lattice는 이제 막 발걸음을 내딛기 시작하여 내부적으로 다른 팀의 반응을 살피고 있는 단계입니다. RGT팀 내부적으로 새로운 제품을 내부적으로 먼저 사용하며 발견한 문제점을 해결하고, 버그를 없애는 과정을 반복하며 Lattice로 마이크로 프론트엔드를 탄탄하게 완성할 수 있게 될 겁니다. Lattice의 성공 여부는 개발자의 경험에 크게 좌지우지됩니다. Lattice 이벤트의 수명주기를 잘 이해할 수 있는 개발자가 Lattice의 기능성을 충분히 입증할 수 있고 배열, 버저닝[15], 엔드 투 엔드 테스트[16]를 진행하며 우수한 퍼포먼스를 보여줄 수 있다면 Lattice는 성공할 가능성이 다분해 보입니다.

[1] 레버뉴/그로스 엔지니어링(Revenue and Growth engineering): 데이터와 소프트웨어 엔지니어링을 기반으로 한 다양한 실험을 통해 제품의 최적화된 사용자 경험(User Experience)을 만들고, 이를 통해 더 많은 사용자가제품을 지속적으로 사용하게 유도해서 수익(Revenue)과 매출 성장(Growth)을 도모하는 기술로, 최근 들어 많은 주목을 받고 있습니다.

[2] 마이크로 프론트엔드(Micro frontend): 전체 화면을 작동할 수 있는 작은 단위로 나누어 개발한 후 서로 조립하는 디자인 방식

[3] 프레임워크(Framework): 소프트웨어 어플리케이션이나 솔루션의 개발을 수월하게 하기 위해 소프트웨어의 구체적 기능들에 해당하는 부분의 설계와 구현을 재사용 가능하도록 협업화 된 형태로 제공하는 소프트웨어 환경

[4] 디펜던시(Dependencies) : 한 소프트웨어를 작동시키기 위해 필요한 라이브러리

[5] 번들링(Bundling) : 기능별 모듈을 한 데 묶어주는 과정

[6] 약한 의존성(Weak dependencies): 인터페이스를 사용해서 의존성을 낮추면 클래스 간 결합도가 약해져 관리와 확장이 편리해집니다.

[7] 훅(Hook) : 코드 내에서 프로그래머가 커스터마이징한 프로그래밍을 삽입할 수 있는 인터페이스

[8] 식별자(identifier): 데이터의 특성을 표시하기 위해 사용하는 기호

[9] 스니펫(Snippet): 재사용 가능한 소스 코드, 기계어, 텍스트의 작은 부분을 일컫는 프로그래밍 용어

[10] 추상화 계층(Abstraction layer): 특정한 집합의 기능의 자세한 부분을 숨기는 한 방법

[11] 마운트 포인트(Mount point): 외부 장치에게 대여해주기 위해 마련된 임의의 디렉토리 공간

[12] 매직 스트링(Magic string) : 외부적으로 드러나지 않고 숨어서 함수에 영향을 주는 입력 값

[13] 컴포넌트 트리(Component tree) : 컴포넌트 간에 데이터와 이벤트를 공유하는 구조

[14] 아웃 오브 박스 경험(Out of box experience): 엔드 유저가 제품을 구매하거나 배송 받고 난 이후의 최초로 박스를 개봉하는 순간의 경험

[15] 버저닝(Versioning) : 일정 기간 동안 수정되기 전의 파일을 보관하는 기능

[16] 엔드 투 엔드 테스트(End to end test): 애플리케이션이 온전히 동작하는 상태에서 사용자의 행동에 따라 애플리케이션의 각 부분이 정해진대로 동작하는지 확인하는 방식

So you have finished reading the 마이크로 프론트 엔드 topic article, if you find this article useful, please share it. Thank you very much. See more: 토스 마이크로프론트엔드, 마이크로 프론트 엔드 장점, MSA Frontend, 마이크로 프론트엔드 단점, vue 마이크로프론트엔드, 프론트엔드 아키텍처, Toss Frontend, 마이크로서비스

Leave a Comment