Windsurf의 Cascade 모드로 전체 프로젝트 리팩토링 자동화하기
문제 상황
레거시 프로젝트의 API 클라이언트를 axios에서 fetch 기반으로 마이그레이션해야 했다. 30개가 넘는 파일에 흩어진 API 호출 코드를 일일이 수정하는 것은 비효율적이었다.
Cascade 모드 활용
Windsurf의 Cascade 모드는 여러 파일에 걸친 변경 작업을 자동으로 추적한다. 프롬프트에 의도를 명확히 전달하면 관련 파일을 분석하고 일관된 패턴으로 수정을 제안한다.
// 기존 코드
import axios from 'axios';
const fetchUser = async (id: string) => {
const response = await axios.get(`/api/users/${id}`);
return response.data;
};
// Cascade가 제안한 수정
const fetchUser = async (id: string) => {
const response = await fetch(`/api/users/${id}`);
if (!response.ok) throw new Error('Failed to fetch user');
return response.json();
};
작업 과정
- "axios를 fetch로 마이그레이션하되, 에러 핸들링과 타입은 유지해줘"라고 요청
- Cascade가 프로젝트 구조를 분석하고 변경 계획을 제시
- 파일별로 diff를 확인하며 승인
- 테스트 코드도 함께 수정 제안받음
효과
수동으로 하면 반나절 걸릴 작업을 1시간 만에 완료했다. 특히 에러 핸들링 로직을 일관되게 적용한 점이 좋았다. 다만 복잡한 인터셉터 로직은 수동 검토가 필요했다.
주의사항
- 변경 범위가 클수록 신중한 리뷰 필요
- 테스트 커버리지가 있어야 안전
- 한 번에 너무 많은 파일을 변경하면 컨텍스트를 놓칠 수 있음
AI 도구가 단순 반복 작업을 크게 줄여줬지만, 최종 판단은 여전히 개발자의 몫이다.