레거시 디컴포지션에서 의존성 분석을 먼저 한 경험 서술
레거시 서비스를 분리할 때 가장 먼저 한 것은 어떤 부분이 어디에 의존하고 있는지를 파악하는 것이었습니다. 분리 순서가 틀리면 한쪽을 건드렸을 때 다른 쪽이 망가지기 때문입니다.
팀 프로젝트에서 단일 서비스 안에 여러 기능이 뒤엉킨 코드를 분리하는 작업을 맡았는데, 코드를 보니 로그인·결제·알림 기능이 같은 모듈에 섞여 있고 서로 직접 참조하고 있었습니다. 다이어그램으로 의존 관계를 먼저 그리고, 참조가 가장 적은 모듈부터 분리하는 순서로 접근하였습니다. 실패는 처음에 순서를 생각하지 않고 분리하다가 연쇄 오류가 발생한 것이었는데, 이후 순서를 의존 역방향으로 정하고 나서 안정적이었습니다.
레거시 분리는 작업량보다 어떤 순서로 떼어낼지를 먼저 설계하는 것이 더 중요합니다.