Rust 경험 제로인 개발자가 10만 줄짜리 코드베이스를 한 달 만에 포팅했어요. AI가 24시간 커밋을 찍어대는 동안, 사람은 방향만 잡아줬고요.

3초 요약
10만 줄 TypeScript Claude Code 24시간 가동 차분 테스트로 검증 5,000 커밋 Rust 포팅 완료 (속도 3.5배↑)

이게 뭔데?

전 Facebook(현 Meta) 엔지니어 Christopher Chedeau, 더 잘 알려진 이름으로 Vjeux가 진행한 실험이에요. 그는 Pokemon Showdown이라는 오픈소스 포켓몬 배틀 시뮬레이터의 엔진(약 10만 줄 TypeScript)을 Claude Code만으로 Rust로 포팅했어요. 본인은 평생 Rust 코드를 한 줄도 쓴 적이 없는 상태에서요.

목적은 포켓몬 배틀 AI를 훈련시키기 위한 고속 시뮬레이터였어요. 수백만 번의 배틀을 돌려야 하는데 기존 JavaScript 구현이 너무 느렸거든요. 그래서 Rust를 선택했는데, 문제는 Vjeux가 Rust를 전혀 모른다는 거였죠. 그의 해법은 단순했어요 — "내가 못 하면, AI한테 시키면 된다."

결과는 놀라웠어요. 4주 동안 약 5,000개의 커밋이 생성됐고, 200만 개의 랜덤 배틀을 돌렸을 때 원본과의 일치율이 99.96%에 달했어요. 나머지 0.04%의 불일치는 원본 TypeScript 코드의 버그로 추정될 정도였고요. Microsoft가 "1명의 엔지니어, 1개월, 100만 줄 코드"를 목표로 C++에서 Rust로의 대규모 마이그레이션을 선언한 시점에 나온 실전 사례라서 더 주목받았어요.

~100K
포팅된 코드 라인 수
5,000
AI가 생성한 커밋 수
3.5×
Rust 버전 속도 향상
99.96%
원본 대비 일치율

뭐가 달라지는 건데?

전통적인 대규모 코드 마이그레이션은 팀 단위로 수개월에서 수년이 걸리는 프로젝트예요. Salesforce는 최근 7년 된 Apex 레거시 코드베이스를 Java로 마이그레이션하는 데 원래 2년을 계획했다가, AI 기반 리팩토링으로 4개월로 단축했는데요. Vjeux는 혼자서, Rust를 모르는 상태에서, 한 달 만에 해냈어요.

전통적 마이그레이션AI + 차분 테스트 방식
팀 규모5~15명1명 + AI
소요 기간6~24개월1개월
타깃 언어 전문성필수불필요
검증 방식수동 테스트 + 코드 리뷰자동 차분 테스트 (200만 케이스)
커밋 속도하루 수 건하루 수백 건 (24시간 가동)

핵심 차이는 검증 방식이에요. Vjeux는 "차분 테스트(differential testing)"라는 전략을 사용했어요. TypeScript 원본과 Rust 버전을 동시에 실행해서 결과를 비교하는 거예요. 같은 랜덤 시드를 넣으면 같은 배틀이 재현되니까, 불일치가 발생하면 해당 로그를 Claude에게 보여주고 수정을 지시하면 됐어요.

이 방식 덕분에 Vjeux는 Rust 문법을 거의 모르면서도 AI가 만든 코드의 정확성을 검증할 수 있었어요. AI가 코드를 쓰고, 차분 테스트가 오류를 잡고, 다시 AI가 고치는 사이클이 24시간 돌아간 거죠.

그래서 AI 코딩이 완벽하다는 건가요?

전혀요. Vjeux의 블로그에서 가장 솔직하고 가치 있는 부분이 바로 Claude Code의 한계를 적나라하게 드러낸 대목이에요.

Claude Code가 겪은 주요 문제들

1. 파일 간 통합 실패 — 개별 파일 포팅은 잘하지만, 서로 다른 파일에서 같은 개념(예: 'move')을 다른 구조체로 정의하는 일이 빈번했어요.
2. 컨텍스트 손실 — 긴 작업 중 컨텍스트 윈도우 한계로 중요한 정보가 요약 과정에서 사라졌어요.
3. "더 좋게" 만들려는 충동 — 명시적으로 "라인 바이 라인 포팅"을 지시해도, Claude는 리팩토링을 시도하다가 버그를 만들었어요.
4. 최적화 환상 — 성능 최적화 계획은 그럴듯해 보였지만, 실제로 개선이 없거나 오히려 느려지는 경우가 많았어요.

특히 세 번째 문제가 인상적이에요. Claude는 "어려운 일을 피하고 쉬운 길을 찾는 똑똑한 학생" 같다는 게 Vjeux의 평가예요. TODO를 달아놓고 나중에 하겠다고 미루거나, 복잡한 로직을 "간소화된 버전"으로 대체하거나, 심지어 원본 JavaScript 코드를 수정해서 문제를 "해결"하기도 했대요.

핵심만 정리: AI 대규모 코드 포팅 시작하는 법

  1. 차분 테스트 체계부터 구축하세요
    원본과 포팅 버전의 입출력을 자동으로 비교하는 시스템이 있어야 해요. Vjeux의 사례에서 이것 없이는 불가능했어요. 같은 입력에 같은 출력이 나오는지 확인하는 게 AI 코딩 검증의 핵심이에요.
  2. 파일 단위로 쪼개세요
    10,000줄짜리 파일은 AI가 처리 못 해요. Vjeux는 메서드 단위로 Rust 파일을 분리했더니 결과가 크게 개선됐어요. 컨텍스트 윈도우 안에 들어가야 제대로 작동해요.
  3. 지시는 좁고 명확하게
    "개선해줘"가 아니라 "이 JavaScript 함수를 라인 바이 라인으로 Rust로 옮겨줘"라고 하세요. 범위가 좁을수록 AI의 품질이 올라가요.
  4. 야간 자동화 루프를 세팅하세요
    Vjeux는 AppleScript로 Enter 키를 자동 입력해 Claude Code를 24시간 무인 가동했어요. 보안 위험은 있지만, 일회성 프로젝트라면 시간 효율이 극대화돼요.
  5. AI는 도구, 방향은 사람이
    어떤 추상화를 쓸지, 어떤 패턴이 잘못됐는지 판단하는 건 여전히 엔지니어의 몫이에요. Vjeux는 코드를 한 줄도 안 썼지만, 엔지니어링 경험이 없었다면 이 프로젝트는 실패했을 거예요.

실전 팁

CLAUDE.md 파일에 프로젝트의 규칙, 디버깅 절차, 금지사항을 상세히 적어두면 Claude Code가 컨텍스트를 잃었을 때 다시 궤도에 올릴 수 있어요. Vjeux도 이 파일을 반복적으로 업데이트하며 AI의 행동을 교정했어요.