목록 보기
프로젝트 전체에서 사용되는 패키지, 어떻게 마이그레이션 할까?
아키텍처

프로젝트 전체에서 사용되는 패키지, 어떻게 마이그레이션 할까?

토스
토스
2024년 6월 4일

두줄요약

프로젝트 전반의 패키지 마이그레이션 사례를 다뤘습니다. Next는 대체 구현으로 전환했고, Recoil은 AST 기반 스크립트로 Jotai로 옮겼습니다.

문제 상황

  • 프로젝트 규모 증가로 기반 기술이 더 이상 최선이 아니게 된 상태
  • 공통 패키지 수정 시 22개 서비스 전체 재빌드가 필요해 빌드 시간과 메모리 이슈가 발생
  • 지원 종료와 불안정성이 커진 상태관리 패키지로 인한 마이그레이션 필요성 대두

원인 분석

  • frontend-common 공통 코드 변경이 전체 최신화와 동시 빌드를 유발하는 구조
  • Next 12의 Module Federation + SSG 조합이 빌드 속도와 메모리 사용량을 악화
  • Recoil 사용 범위가 넓고 React lifecycle 외부 접근 제약이 있어 점진적 전환이 어려운 구조

해결 방법

  • Next 의존성을 next-polyfill로 대체해 인터페이스를 유지한 채 webpack 기반으로 전환
  • Recoil은 Jotai로 옮기기 위해 ts-morph로 AST를 분석하고 호출부를 기계적으로 치환
  • 대응되지 않는 API는 직접 구현하고, 전체 파일에 대해 ESLint와 타입 에러를 점검

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...