목록으로
'언젠가 읽기' 컨텐츠는 논문이나 영문 컨텐츠 등 언젠가 읽으려고 즐겨찾기 하고선 읽지 않고 계속 미룰만한 컨텐츠를 읽고 요약하거나 소개합니다.

웹 애플리케이션 재빌드 없이 웹 컴포넌트 버전을 점진적으로 출시

소개

웹 애플리케이션을 재빌드할 필요 없이 웹 컴포넌트의 새로운 버전을 점진적으로 배포하는 방법에 대해 논의한다. 이 방법은 개발 효율성과 사용자 경험을 향상시키며, 컴포넌트 버전의 롤백과 단계적인 출시를 가능하게 한다.

달성한 목표

  • 재빌드 없이 새로운 버전 소비 : 애플리케이션은 컴포넌트 개발 팀이 출시한 새로운 버전을 재빌드 없이 소비할 수 있다. 이는 를 통해 가능하다.
  • 빠른 버전 롤백 : 문제가 있는 컴포넌트 버전을 신속하게 롤백하여 다운타임이나 사용자 영향을 최소화할 수 있다.
  • 사용자 그룹별 단계적 출시 : 컴포넌트 개발 팀은 를 통해 새로운 버전을 다양한 사용자 그룹에 단계적으로 출시할 수 있다.

전제 조건

  • 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과 캐시 무효화 전략 이해하기"
  • "웹 컴포넌트 버전 관리 베스트 프랙티스"

푸딩캠프 뉴스레터를 구독하면 학습과 성장, 기술에 관해 요약된 컨텐츠를 매주 편하게 받아보실 수 있습니다.