대규모 코드베이스에서 AI 개발 도구를 제대로 활용하는 방법

0

복잡한 프로덕션 코드베이스에서 AI 코딩 도구가 기대만큼 성과를 내지 못한다는 이야기, 개발자라면 한 번쯤 들어봤을 겁니다. 하지만 정말 AI 도구 자체의 한계일까요? 아니면 우리가 아직 제대로 활용하는 방법을 찾지 못한 것일까요?

최근 발표된 연구 결과들을 살펴보면, AI 코딩 도구의 현실적 한계가 분명히 드러납니다. 스탠포드 연구진이 10만 명의 개발자 커밋을 분석한 결과, AI 도구가 생성한 코드의 상당 부분이 이전에 AI가 만든 미흡한 코드를 다시 손보는 재작업으로 이어지고 있었습니다. 특히 대규모 코드베이스와 복잡한 작업에서는 오히려 개발자 생산성을 떨어뜨리는 역효과까지 관찰되었죠.

AI 코딩의 현실적 벽

브라운필드의 함정

신규 프로젝트나 작은 변경사항에는 효과적이던 AI 코딩 에이전트가 기존의 대규모 코드베이스(브라운필드)에서는 왜 힘을 못 쓸까요? 가장 큰 문제는 컨텍스트 관리입니다.

AI는 본질적으로 무상태 함수입니다. 이전 대화를 기억하지 못하고, 오직 현재 입력된 컨텍스트에만 의존해 결과를 만들어냅니다. 복잡한 코드베이스에서는 파일 검색, 코드 흐름 추적, 수정 내역, 테스트 로그 등이 순식간에 컨텍스트 윈도우를 가득 채워버리죠.

결과적으로 AI는 정보 과부하 상태에서 부정확하거나 불완전한 답변을 내놓게 됩니다. 최악의 경우 잘못된 정보 > 누락된 정보 > 과도한 노이즈 순으로 문제가 확산되면서, 개발자는 AI가 만든 코드를 다시 고치느라 더 많은 시간을 소모하게 됩니다.

컨텍스트 엔지니어링의 핵심: 빈번한 의도적 압축

그렇다면 해결책은 무엇일까요? “빈번한 의도적 압축(Frequent Intentional Compaction)”이라는 접근법이 주목받고 있습니다. 이는 개발 과정 전반에 걸쳐 AI에게 제공되는 컨텍스트를 구조화하고 관리하는 방법론입니다.

3단계 워크플로우: 연구-계획-구현

1. Research(연구) 단계

관련 파일과 코드 흐름, 문제의 원인 가설을 체계적으로 조사합니다. 필요하다면 서브에이전트를 활용해 신선한 컨텍스트에서 범위 탐색과 요약을 수행하죠. 이 과정에서 핵심은 요약 리서치 문서를 산출하는 것입니다.

2. Plan(계획) 단계

연구 결과를 바탕으로 수정 대상 파일, 변경 방식, 검증 및 테스트 절차를 상세히 서술한 구현 계획을 작성합니다. 이 계획서는 나중에 코드리뷰보다 훨씬 높은 레버리지를 가진 검토 지점이 됩니다.

3. Implement(구현) 단계

계획을 단계별로 집행하면서, 각 단계 검증 후 진행 상황을 계획 문서에 압축해 기록합니다. 복잡한 작업의 경우 단계별로 컨텍스트를 재정렬하는 과정을 거치죠.

컨텍스트 윈도우 최적화 전략

핵심은 컨텍스트 윈도우를 항상 40-60% 수준으로 유지하는 것입니다. 이를 위해 다음과 같은 요소들을 지속적으로 압축해야 합니다:

  • 파일 검색 로그
  • 코드 흐름 추적 결과
  • 수정 내역
  • 테스트/빌드 로그
  • 대용량 JSON 데이터

각 단계의 산출물을 구조화된 아티팩트로 남겨 다음 턴의 입력 품질을 보장하는 것이 중요합니다. 예를 들어, 진행 요약, 목표와 접근 방식, 완료된 단계, 현재 실패 지점을 기록한 progress 문서를 생성하는 식이죠.

30만 LOC Rust 프로젝트 사례

이론만으로는 설득력이 부족하겠죠. 실제로 BAML이라는 30만 라인의 Rust 코드베이스에서 이 방법론을 적용한 결과를 살펴보겠습니다.

놀라운 생산성 향상

프로젝트에 처음 참여한 개발자가 몇 시간 만에 버그 수정 PR을 제출해 승인받는 성과를 거두었습니다. 더 놀라운 것은 두 개발자가 7시간 만에 취소 기능과 WASM 컴파일 지원이라는 대규모 변경 작업을 완료한 사례입니다. 팀 추정으로는 각각 3-5일이 소요될 작업이었는데, 리서치/계획/구현 파이프라인을 통해 대폭 단축시킬 수 있었죠.

품질 관리의 핵심

하지만 모든 작업이 성공적이었던 것은 아닙니다. Parquet Java에서 Hadoop 의존성 제거 시도는 의존성 트리를 충분히 깊이 파악하지 못해 실패로 끝났습니다. 이는 중요한 교훈을 줍니다: 모든 문제가 프롬프트만으로 해결되는 것은 아니며, 도메인 전문가의 참여가 여전히 필요하다는 점이죠.

사람의 역할: 고레버리지 검토 지점

AI 코딩에서 사람의 개입이 가장 효과적인 지점은 어디일까요? 연구 > 계획 > 코드 순으로 레버리지가 커집니다. 잘못된 연구 한 줄이 수천 줄의 오류 코드로 확산될 수 있기 때문입니다.

코드리뷰의 새로운 패러다임

전통적인 코드리뷰의 핵심은 정신적 정렬(mental alignment) 유지에 있습니다. 하지만 AI가 생성한 대용량 PR을 매번 꼼꼼히 리뷰하는 것은 현실적으로 불가능합니다.

대신 스펙, 계획, 리서치 단계에서의 검토가 훨씬 효율적입니다. 엔지니어는 2천 줄의 코드보다 200줄의 계획 문서를 더 자주, 정확히 읽을 수 있거든요. 낯선 영역의 이슈에 대응할 때도 리서치 프롬프트가 빠른 안내 역할을 수행합니다.

조직 차원의 변화가 핵심

개인의 생산성 향상을 넘어, 조직 전체의 협업 방식 변화가 진짜 경쟁력의 분기점입니다. AI가 코드의 99%를 작성하는 세상에서는 기존의 개발 문화와 프로세스를 전면적으로 재검토해야 합니다.

운영 비용과 현실성

실제 운영 사례를 보면, 3명으로 구성된 팀이 월 약 12,000달러의 Opus 토큰 비용으로 이 방법론을 활용하고 있습니다. 비용 대비 생산성을 고려하면 충분히 경쟁력 있는 수준이죠.

하지만 무엇보다 중요한 것은 팀 차원의 프로세스와 문화 전환입니다. 개발자들이 스펙 중심의 개발에 익숙해지고, AI와 협업하는 새로운 워크플로우를 내재화하는 데는 상당한 시간과 노력이 필요합니다.

미래를 준비하는 개발팀의 선택

AI 코딩 도구의 상용화는 이미 진행형입니다. 중요한 것은 기술 자체가 아니라 그 기술을 어떻게 조직 문화에 녹여낼 것인가입니다.

컨텍스트 엔지니어링은 단순한 기술적 스킬이 아닙니다. 정교한 엔지니어링 수공업에 가깝죠. 팀 전체가 이 새로운 협업 방식을 익히고 내재화하는 것이 향후 경쟁우위의 관건이 될 것입니다.

여러분의 개발팀은 이런 변화에 얼마나 준비되어 있나요? AI와 함께 일하는 새로운 방식을 실험해볼 용기가 있으신가요?

참고 자료: Dexhorthy, “Getting AI to Work in Complex Codebases”

답글 남기기