BOSS 3
10만 LOC 이상 플랫폼 리팩터링 — 심초음파 웹 SaMD
2025.08 ~ 현재 · 기여율 40%
- Vitest
- knip
- characterization test
- reducer 분할
문제 정의
측정·뷰어·패널 로직이 2,000~3,000줄 규모의 컴포넌트 4개에 뒤섞인 상태였습니다. 작은 수정의 영향 범위를 예측하기 어려운 데다 기존 동작을 기록한 테스트도 부족해, 리팩터링 중 발생한 회귀를 구분할 기준부터 마련해야 했습니다.
해결 과정
- 01
리팩터링 전 typecheck·lint·테스트·번들 크기를 기준값으로 기록하고, reducer 43개 액션을 다루는 특성화 테스트 127개를 먼저 작성했습니다.
- 02
레거시 9개 파일 1,890줄은 knip 분석과 gzip 번들 비교로 실제 미사용 여부를 확인한 뒤 제거했습니다.
- 03
컴포넌트 내부 로직은 원본 코드와 byte 단위로 대조하며 훅으로 옮기고, 외부 의존성은 주입할 수 있게 분리했습니다.
- 04
어노테이션 컨텍스트는 6개 기능 영역으로, reducer는 4개 모듈로 나눠 변경 범위를 좁혔습니다.
검증 결과
9,521 → 6,537줄초대형 컴포넌트 4개를 훅 추출로 분해. 죽은 코드 9파일 1,890줄은 별도 삭제
동작 불변특성화 테스트 50파일을 리팩터링 전에 신규 작성. 회귀 1건은 원본 대조 과정에서 발견·정정
byte-identical테스트 통과 후에도 원본 출력과 byte 단위로 비교하는 검증 기준 적용