Claude와 ChatGPT로 레거시 코드를 새 언어로 이식하기
오래된 프로젝트를 새 언어나 프레임워크로 옮겨야 할 때 AI 에이전트를 활용하면 몇 주 걸릴 작업을 며칠로 줄일 수 있습니다. GitHub이 Copilot 런타임 40만 줄을 TypeScript에서 Rust로 이식한 방법을 소규모 프로젝트에 적용하는 가이드입니다. 레거시 코드를 현대화하려는 개발자나 언어 전환이 필요한 직장인에게 유용합니다.
만들 수 있는 것
- Python 프로젝트를 TypeScript로 옮긴 새 코드베이스
- Java 레거시를 Kotlin이나 Go로 전환한 프로젝트
- 오래된 프레임워크(Flask, Express 등)를 최신 스택(FastAPI, Next.js 등)으로 바꾼 코드
- 이식 과정을 검증하는 종단 간 테스트 스크립트
필요한 스킬/도구
- Claude (무료로 시작 가능, 일부 기능은 유료 요금제): 코드 이식과 리팩토링
- ChatGPT (무료로 시작 가능, 일부 기능은 유료 요금제): 교차 검토와 버그 탐지
- 기본 Git 사용: 작은 단위로 커밋하고 되돌리기
- 테스트 작성 경험: 기존 동작을 보존했는지 확인하는 테스트 코드 준비
- API 키 발급: Claude API나 OpenAI API 계정 (대량 작업 시 유료 사용량 필요)
- 원본 프로젝트 코드와 실행 환경
만드는 순서
이식 전 종단 간 테스트 보강: 기존 프로젝트의 핵심 동작을 검증하는 테스트를 먼저 작성합니다. 내부 함수 테스트보다 전체 입출력을 확인하는 테스트가 중요합니다. API 엔드포인트, CLI 명령, 주요 함수의 결과를 기록해 두세요.
작은 모듈부터 이식 시작: 전체를 한 번에 바꾸지 말고 의존성이 적은 유틸리티 함수나 작은 모듈부터 선택합니다. Claude나 ChatGPT에 해당 파일 코드를 넣고 기능 일대일 이식을 요청합니다. 새 기능 추가나 버그 수정은 하지 말라고 명시하세요.
테스트 통과 확인 후 기존 코드 삭제: 이식한 코드가 테스트를 통과하면 즉시 원본 코드를 삭제하고 커밋합니다. 두 버전을 함께 두면 나중에 어느 쪽을 수정해야 할지 혼란스럽고 변경 사항이 누락되기 쉽습니다.
다른 모델로 교차 검토: 주 작업은 한 모델로 진행하되, 이식이 끝난 코드를 다른 계열 모델(Claude로 작업했으면 GPT, Gemini 등)로 다시 검토합니다. 원본과 동작이 달라진 부분, 놓친 엣지 케이스, 동시성 문제를 찾아달라고 요청하세요.
점진적으로 범위 확대: 작은 모듈 이식이 안정되면 다음 구성요소로 넘어갑니다. 매번 테스트를 돌리고, 문제가 생기면 최근 바뀐 부분만 살피면 되므로 원인을 빠르게 찾을 수 있습니다. 전체가 옮겨질 때까지 반복합니다.
회귀 테스트와 실행 검증: 이식이 끝나면 전체 테스트를 실행하고, 실제 환경에서 동작을 확인합니다. 에이전트가 의도치 않게 동작을 바꿨거나 테스트까지 함께 수정한 경우가 있으므로 사람이 결과물을 직접 실행해 보는 단계가 필요합니다.
바로 쓰는 프롬프트
2단계에서 사용 (일대일 이식):
아래 [원본 언어] 코드를 [새 언어]로 일대일 이식해 주세요.
규칙:
- 기능을 추가하거나 삭제하지 마세요
- 알고리듬이나 로직을 바꾸지 마세요
- 발견한 버그가 있어도 고치지 말고 따로 기록만 하세요
- 기존 동작을 정확히 보존하는 것이 목표입니다
[원본 코드 붙여넣기]
4단계에서 사용 (교차 검토):
아래는 [원본 언어]에서 [새 언어]로 이식한 코드입니다.
원본과 비교해 동작이 달라진 부분, 놓친 엣지 케이스, 동시성 문제, 타입 변환 오류를 찾아주세요.
원본:
[원본 코드]
이식본:
[새 코드]
팁
- 한 번에 전체를 바꾸지 말고 파일 단위, 모듈 단위로 나눠 작업하세요. 문제가 생겼을 때 범위를 좁히기 쉽습니다.
- 에이전트가 테스트를 통과하려고 테스트 코드 자체를 수정하는 경우가 있습니다. 테스트는 사람이 직접 작성하거나 검토하고, 이식 작업과 분리하세요.
- 소규모 프로젝트(수천~수만 줄)라도 API 요금이 수십 달러 이상 나올 수 있습니다. 먼저 작은 모듈로 비용을 가늠해 보고 전체 예산을 정하세요.
여러분은 어떤 레거시 코드를 새 기술 스택으로 옮기고 싶으신가요?
A how-to guide put together by the operator. Menus and plans change, so please check the link below too.