'언젠가 읽기' 컨텐츠는 논문이나 영문 컨텐츠 등 언젠가 읽으려고 즐겨찾기 하고선
읽지 않고 계속 미룰만한 컨텐츠를 읽고 요약하거나 소개합니다.
웹 애플리케이션 재빌드 없이 웹 컴포넌트 버전을 점진적으로 출시
소개
웹 애플리케이션을 재빌드할 필요 없이 웹 컴포넌트의 새로운 버전을 점진적으로 배포하는 방법에 대해 논의한다. 이 방법은 개발 효율성과 사용자 경험을 향상시키며, 컴포넌트 버전의 롤백과 단계적인 출시를 가능하게 한다.
달성한 목표
-
재빌드 없이 새로운 버전 소비 : 애플리케이션은 컴포넌트 개발 팀이 출시한 새로운 버전을 재빌드 없이 소비할 수 있다. 이는 를 통해 가능하다.
-
빠른 버전 롤백 : 문제가 있는 컴포넌트 버전을 신속하게 롤백하여 다운타임이나 사용자 영향을 최소화할 수 있다.
-
사용자 그룹별 단계적 출시 : 컴포넌트 개발 팀은 를 통해 새로운 버전을 다양한 사용자 그룹에 단계적으로 출시할 수 있다.
전제 조건
-
Webpack Module Federation 사용 : 애플리케이션은 Webpack Module Federation을 사용하여 컴포넌트를 지연 로드해야 한다.
Named Releases란 무엇인가?
Named Releases는 CDN 수준에서 런타임에 덮어씌워질 수 있는 CDN 요청 URL의 별칭이다. 애플리케이션에서 컴포넌트를 요청할 때 특정 버전 번호를 하드코딩하는 대신, "medium-stable"과 같은 별칭을 사용한다. 이를 통해 애플리케이션 코드를 변경하지 않고도 CDN에서 컴포넌트 버전을 업데이트할 수 있다.
예시
:
-
이전 URL: cdn.com/my-component/3.8.201/remoteEntry.js
-
Named Release 적용 후: cdn.com/my-component/medium-stable/remoteEntry.js
CDN에서 "medium-stable"이라는 별칭을 다른 버전으로 업데이트함으로써, 애플리케이션은 재빌드 없이 업데이트를 받을 수 있다.
Named Releases의 장점
-
애플리케이션과 컴포넌트 릴리스의 디커플링 : 애플리케이션은 컴포넌트 팀과 업데이트를 동기화할 필요가 없다.
-
롤백 간소화 : CDN 별칭을 업데이트하는 것만으로 이전 버전으로 롤백이 가능하다.
-
단계적 출시 용이 : 다른 사용자 그룹에 대해 다른 별칭을 사용할 수 있어 단계적 출시가 가능하다.
Phased Rollouts
Phased Rollouts는 새로운 컴포넌트 버전을 사용자 일부분에게 점진적으로 출시하여, 전체 출시 전에 위험을 관리하고 피드백을 수집하는 것이다.
구현 방법
-
CDN 구성 : CDN에서 별칭을 설정하여 특정 컴포넌트 버전에 매핑한다.
-
애플리케이션 요청 : 애플리케이션은 요청 시 별칭을 사용한다.
-
컴포넌트 팀의 작업 : 컴포넌트 팀은 필요에 따라 별칭이 가리키는 버전을 업데이트한다.
결론
Named Releases와 Webpack Module Federation을 사용하면 컴포넌트 버전 관리를 더욱 유연하고 효율적으로 수행할 수 있으며, 배포 워크플로우와 사용자 경험을 개선할 수 있다.
함께 읽으면 좋은 참고 자료
-
"Webpack Module Federation: 마이크로 프론트엔드의 게임 체인저"
-
"CDN과 캐시 무효화 전략 이해하기"
-
"웹 컴포넌트 버전 관리 베스트 프랙티스"