Angular에서 React로 프로젝트 마이그레이션 결정

배경

2년간 유지보수하던 Angular 1.x 프로젝트의 성능 이슈가 한계에 도달했다. 컴포넌트가 200개가 넘어가면서 digest cycle이 눈에 띄게 느려졌고, Two-way binding의 복잡도가 디버깅을 어렵게 만들었다.

Angular 2+로 마이그레이션하는 방안도 검토했지만, 러닝커브와 번들 크기 문제로 React를 선택했다.

의사결정 과정

번들 크기

  • Angular 1.x: 약 160KB (minified)
  • Angular 4: 약 450KB
  • React 16 + React-DOM: 약 110KB

프로젝트 특성상 모바일 사용자가 많아 번들 크기가 중요했다.

생태계

React의 npm 생태계가 Angular보다 활발했다. 특히 UI 라이브러리 선택지가 많았고, 커뮤니티 규모도 컸다.

채용

최근 6개월간 면접 본 지원자 중 React 경험자가 Angular 경험자보다 3배 많았다. 팀 확장을 고려하면 React가 유리했다.

마이그레이션 전략

점진적 마이그레이션을 위해 ngReact를 사용하기로 했다. Angular directive 안에 React 컴포넌트를 렌더링하는 방식이다.

angular.module('app').directive('reactComponent', function(reactDirective) {
  return reactDirective(MyReactComponent);
});

새로운 기능은 React로 개발하고, 기존 Angular 코드는 리팩토링 일정에 맞춰 점진적으로 교체할 계획이다.

우려사항

  • 팀원들의 React 학습 기간 필요
  • 두 프레임워크 혼재로 인한 복잡도 증가
  • 상태 관리 라이브러리 선택 (Redux vs MobX)

일단 3개월 내 주요 페이지 2~3개를 React로 전환하고 성과를 측정해볼 예정이다.