출시 직전 대규모 리팩토링을 AI에게 맡기는 법 — 안전장치가 핵심이다
coffeechat 멘토링 플랫폼을 출시하면서 87개 파일을 건드리는 대규모 작업을 진행했다. 테스트 80건 추가, logger 통일, 에러 수정 등을 AI와 함께 처리하면서 터득한 실전 패턴을 공유한다. 배경: 무엇을 만들고 있는가 coffeechat은 1:1 멘토링 매칭 서비스다. TossPayments 결제, 관리자 대시보드, 쿠폰 시스템, 세션...

Source: DEV Community
coffeechat 멘토링 플랫폼을 출시하면서 87개 파일을 건드리는 대규모 작업을 진행했다. 테스트 80건 추가, logger 통일, 에러 수정 등을 AI와 함께 처리하면서 터득한 실전 패턴을 공유한다. 배경: 무엇을 만들고 있는가 coffeechat은 1:1 멘토링 매칭 서비스다. TossPayments 결제, 관리자 대시보드, 쿠폰 시스템, 세션 리포트까지 갖춘 상업용 플랫폼이다. 출시 D-7 시점에서 해야 할 일들이 쌓였다. 런타임 에러 수정, 접근성 가이드라인 준수, logger 통일, 페이지네이션 구현, 사업자 정보 환경변수화... 하나하나는 간단하지만 87개 파일에 걸쳐있어서 사람이 하면 며칠 걸린다. 이런 상황에서 AI를 제대로 활용하면 반나절에 끝낼 수 있다. 단, 안전장치 없이 하면 더 큰 문제가 생긴다. 테스트 먼저 만들어서 AI가 망가뜨리지 못하게 한다 출시 직전 리팩토링의 핵심은 기존 기능을 망가뜨리지 않는 것이다. AI에게 코드를 수정하게 하기 전에 반드시 테스트부터 만든다. 테스트 생성 프롬프트 패턴 "결제 API /api/payment/confirm 엔드포인트에 대한 integration test를 작성해줘. 다음 케이스들을 모두 커버해야 한다: 정상 결제 확인 (TossPayments webhook) 이미 처리된 결제 중복 요청 유효하지 않은 paymentKey 쿠폰이 적용된 결제 환불 후 재결제 시도 테스트는 실제 DB 트랜잭션을 실행하고, logger 호출도 검증한다. setup/teardown으로 테스트 데이터를 격리한다." 이렇게 쓰면 안 된다: "결제 테스트 만들어줘" 구체적인 edge case를 명시하는 게 핵심이다. AI는 happy path만 테스트하려고 한다. 실제 운영에서 터지는 건 예외 상황들이다. Claude Code 테스트 자동화 설정 CLAUDE.md에 테스트 관련 지시사항을 명확히 적어둔다: ## 테스트 정책 - 모든 API 수정 시 관련 테스트를 먼저 작성/수정한다 - integration test는