AI Briefing

카카오 FE, 의존관계 불안정성 지표로 리팩토링 포인트 발굴

·2021.01.12 00:00

핵심 내용

Angular 모듈의 FanIn/FanOut 기반 불안정성 수치(I)로 설계 의도 이탈 코드 식별

1 / 15

자세히 보기

카카오 FE플랫폼팀이 Angular 기반 '오픈빌더' 프로젝트에서 의존관계 그래프와 **불안정성 지표(Instability, I)**를 활용해 구조적 리팩토링 포인트를 찾는 방법을 소개했다. 여러 개발자의 손길을 거치며 설계 의도와 다른 코드가 생성될 수 있는 문제를 해결하기 위해, 모듈 간 의존 방향이 올바른지 수치화하여 검증하는 방식을 적용했다.

불안정성 지표(I)를 통한 구조 분석

로버트 C. 마틴의 '클린 아키텍처'에 기반한 불안정성 지표 I는 특정 모듈의 FanIn(들어오는 의존성)과 FanOut(나가는 의존성)을 측정해 0에서 1 사이의 값으로 산출한다. I 값이 0에 가까울수록 많은 모듈이 사용하는 '안정적'인 상태이며, 1에 가까울수록 다른 모듈을 많이 사용하는 '불안정'한 상태다. 이상적인 설계는 불안정한 모듈이 안정적인 모듈을 사용하는 방향으로 의존성이 형성되는 것이다.

실제 프로젝트 적용 및 문제 발견

오픈빌더의 의존관계 그래프를 분석한 결과, 공통 라이브러리인 SharedModule은 낮은 I 값을, 엔트리 포인트인 AppModule은 I 값 1을 기록하며 설계 의도와 일치했다. 그러나 일부 모듈에서는 안정적인 SharedModule이 불안정한 모듈을 재수출(re-export)하는 등 역방향 의존성이 발견되었다.

발견된 주요 문제 모듈은 다음과 같다:

  • StandaloneTestModule: 더 이상 사용되지 않는 테스트 전용 모듈로, FanIn이 0인 고립된 상태
  • TutorialGuideModule: SharedModule이 불필요하게 재수출하여 역방향 의존성을 유발
  • BotTestDialogModule: TutorialGuideModule과 동일하게 SharedModule과의 관계를 끊거나 역전시켜야 하는 대상

확장 가능성

이러한 분석 방법은 단순 리팩토링을 넘어 모듈 변경 시 전체 시스템에 미치는 영향을 수치화하거나, 불안정성 수치를 기준으로 테스트 커버리지 우선순위를 설정하는 데 활용될 수 있다. 또한 FanOut과 FanIn의 절댓값에 가중치를 두어 더 정밀한 불안정성 지표를 계산하는 방안도 제시되었다.

이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.

AI 처리 방식을 확인하거나, 요약 오류와 출처 표기 문제, 삭제 요청을 문의 · 건의로 알려주세요.