the next software stack needs more than code generation
개요
AI 기반 개발 속도가 빨라짐에 따라 코드 작성 자체의 병목 현상은 해소되었으나, 코드 변경의 이유, 요구사항, 검증 과정을 추적하는 데 심각한 어려움이 발생하고 있습니다.
주요 내용
* 코드 작성 병목의 해소: API 핸들러, 유닛 테스트, 마이그레이션 코드 생성이 AI에 의해 빠르게 처리되면서, 더 이상 코드 타이핑 자체가 속도 제한 요소가 아닙니다.
* AI 개발의 속도 함정: AI 보조 개발은 "프롬프트, 브랜치, 코드, 리뷰, 병합" 루프를 따르지만, 사용량이 증가하면 변경 사항의 출처가 불분명해지고, 기능 플래그나 환경 변수가 관리되지 않는 상태가 발생합니다.
* "사이코시스 코더"의 등장: AI가 코드를 생성하면 단순히 차이가 없어 보인다는 이유로 리뷰 없이 승인하는 개발자들이 늘어나고 있으며, 이는 "통과 가능한" 쓰레기를 양산합니다.
* AI 코드 변경 간의 충돌: Agent A가 PricingEngine::price()를 수정하고 Agent B가 User에서 join_date를 제거하고 UserMetadata를 도입하는 경우, 각각의 변경은 유효하고 Git으로 충돌 없이 병합되지만, 실제 운영 시 Pricing 로직에 문제가 발생하여 데이터 불일치를 초래합니다.
* Idempotency (멱등성) 문제: AI 에이전트가 실패 후 재시도할 때, Git의 표준 흐름에서는 중복 커밋, "더러운" 작업 디렉토리, HEAD 상태 꼬임 등이 발생하며, Git은 이러한 동시성 높은 멱등성 작업을 위해 설계되지 않았습니다.
* 파일 중심의 한계: Git은 텍스트 변경 사항은 보여주지만, 변경의 이유나 트리거된 요구사항은 보여주지 않아 의도를 파악하기 어렵습니다. AI는 파일이 아닌 관계(예: 할인 규칙과 사용자 속성 간의 관계)에 기반하여 작동합니다.
* "Intent" 기반의 차세대 소프트웨어 스택: 코드 변경의 이유(Intent)를 핵심 객체로 다루는 새로운 스택이 구축되고 있으며, 이는 Git의 역할을 보완합니다.
* aivcs: 요구사항, 수정된 심볼, 테스트/벤치마크 등의 증거를 포함하는 "Episode" 단위로 변경을 그룹화하는 버전 관리 핵심입니다.
* trstr: Spec-grounded 파싱 레이어로, 에이전트가 심볼을 수정할 때 해당 심볼의 의미를 정확히 파악합니다.
* sqry: 심볼 수준의 인덱싱을 통해 관계 그래프를 구축하여 변경의 의미론적 범위를 파악하고, 병합 전에 잠재적 오류를 감지합니다.
* wsmux: 코드 그래프에 대한 CRDT 기반의 동시성 레이어로, 여러 에이전트의 동시 편집을 충돌 없이 수렴시킵니다. 저장소 레이어는 멱등성을 보장하여 재시도가 중복 작업을 발생시키지 않습니다.
시사점
AI 개발 속도 증가로 인해 발생한 코드 변경의 추적 및 관리 문제를 해결하기 위해, 파일 중심의 Git을 넘어 변경의 이유와 의도를 중심으로 관리하는 새로운 버전 관리 및 소프트웨어 스택이 필요합니다.
댓글
GitHub Discussions