대규모 코드베이스로 LLM 확장하기

1 month ago 12

  • 대규모 코드베이스에서 LLM을 효과적으로 활용하기 위해서는 ‘가이드(guide)’와 ‘감독(oversight)’에 대한 투자가 핵심
  • 가이드는 문맥과 환경을 제공해 LLM이 더 나은 선택을 하도록 돕고, 감독은 결과를 검증하고 방향을 제시하는 역할을 수행함
  • 프롬프트 라이브러리를 구축해 코드베이스의 규칙, 문서, 모범 사례를 LLM이 이해할 수 있도록 하는 것이 중요함
  • 기술 부채 관리와 코드 구조의 단순성, 모듈화, 일관성이 LLM의 코드 이해력과 생산성 향상에 직접적으로 연결됨
  • 자동화된 감독과 검증 체계를 통해 LLM이 안전하고 일관된 코드를 생성하도록 보조하는 것이 장기적 확장성의 핵심임

LLM 확장을 위한 핵심 개념

  • LLM을 대규모 코드베이스에 적용하는 방법은 아직 정립되지 않았으나, 가이드와 감독에 대한 투자가 가장 효과적인 접근으로 제시됨
  • 가이드(Guidance) 는 LLM이 올바른 선택을 하도록 돕는 문맥과 환경을 의미하며, 감독(Oversight) 은 생성된 결과를 검증하고 방향을 조정하는 역할을 담당함

가이드에 대한 투자

  • LLM이 한 번의 시도로 고품질 코드를 생성하는 ‘원샷(one-shotting)’ 을 달성하려면, 명확한 가이드가 필요함
    • 반대로, 결과가 부적절해 수동 수정이 필요한 경우는 재작업(rework) 으로 비효율적임
  • LLM은 코드 내의 모든 선택(변수명, 함수 구조, 기술 스택 등)을 생성하므로, 프롬프트가 비즈니스 요구만 담고 나머지는 추론 가능하거나 인코딩된 상태가 이상적임

프롬프트 라이브러리 구축

  • 프롬프트 라이브러리는 코드베이스의 문서, 모범 사례, 구조적 맵 등을 포함한 LLM용 문맥 집합임
    • LLM의 출력이 빗나갈 때마다 “무엇을 명확히 해야 했는가”를 검토하고 이를 라이브러리에 추가
    • 포괄성과 간결성의 균형이 중요함
  • 예시에서는 @prompts/How_To_Write_Views.md, @prompts/The_API_File.md 등 문서를 LLM에 제공해 기능 개발을 안내함
  • 프롬프트가 충분히 구체적이어야 하지만, 생성된 코드의 모든 줄을 검토해야 함

환경과 코드 품질

  • 기술 부채(technical debt) 가 많은 코드베이스는 LLM 활용 효율을 저하시킴
    • Meta의 사례에서 기술 부채로 인해 자동화 목표 달성이 어려웠다고 언급됨
  • 깨끗한 코드, 모듈화, 명확한 네이밍, 단순한 구조가 LLM의 이해도와 정확도를 높임
  • Django 예시에서는 각 앱의 진입점을 _api.py 파일로 두어 LLM이 필요한 기능을 빠르게 찾을 수 있도록 구조화
    • 예: visit_api.handoff_to_doctor(user) 형태로 외부 접근을 단일화
    • _api 패턴을 프롬프트 라이브러리에 명시해 LLM이 올바른 위치를 참조하도록 유도

감독에 대한 투자

  • LLM 자동화는 엔지니어를 대체하기보다 팀을 강화하는 방향으로 접근해야 함
  • 감독은 팀, 정렬(alignment), 워크플로우에 대한 투자로 이어짐
    • 팀 차원에서는 설계 역량 향상이 중요하며, 이는 아키텍처 품질로 연결됨
  • 디자인 역량 강화 방법으로는 책·블로그·코드 읽기, 마스터워크 복제, 직접 구현 연습 등이 제시됨
    • 예: TLDraw, SerenityOS Jakt 등의 코드 분석을 통해 설계 감각을 확장

자동화된 감독

  • 일부 설계 검증은 프로그램적으로 자동화 가능함
    • 예: 타입 오류나 규칙 위반을 환경에서 즉시 피드백
  • ‘안전성(safety)’ 은 추상화를 보호하는 것임
    • Pierce의 정의에 따르면, 안전한 언어는 프로그래머가 의도치 않게 추상화를 깨뜨리지 않도록 보장함
  • 예시: Django 앱 간 내부 파일 직접 접근을 금지하는 규칙을 AST 기반 검사 스크립트로 자동화
    • from visit import logic.internal_file 형태의 불법 접근을 탐지

검증(Verification)

  • 설계와 구현 외에도 검증 단계(코드 리뷰, QA) 가 품질 확보에 필수적임
  • 작업량이 증가할수록 검토 속도가 병목이 되므로, 다음과 같은 개선 방안이 제시됨
    • 개발 환경 없이도 QA 수행 가능하도록 진입 장벽 완화
    • 테스트 데이터 생성 등 테스트 작성이 간단한 환경 구축
    • 반복되는 PR 피드백을 문서화해 LLM이 일부 리뷰를 자동 수행하도록 지원
    • 보안 규칙을 프레임워크 기본값으로 내장

결론 및 추가 관찰

  • LLM은 새로운(greenfield) 프로젝트에서 특히 잘 작동함
    • 기존 맥락이 없고 일관성 요구가 낮기 때문
  • 프로젝트가 커질수록 일관성과 모듈화가 생산성을 좌우함
    • 검증된 구성요소를 재사용하는 모듈형 구조가 효율적 개발의 핵심임

Read Entire Article