dropbox

Nova: 코딩 에이전트를 위한 사내 플랫폼을 소개합니다 (새 탭에서 열림)

코딩 에이전트는 코드 작성뿐 아니라 CI 장애 대응, 마이그레이션, 테스트 개선 등 소프트웨어 개발 전반의 반복 업무를 지원할 수 있다. Dropbox는 대규모 모노레포와 Bazel, 사내 인프라에 맞는 실행·검증 환경을 제공하기 위해 개별 도구 대신 클라우드 기반 플랫폼인 Nova를 구축했다. Nova는 대화형 세션과 비동기 자동화 작업을 하나의 인터페이스로 통합하고, 실제 빌드·테스트 결과를 바탕으로 에이전트가 반복적으로 수정하도록 설계됐다.

분산된 개발 업무를 통합하는 플랫폼

  • 개발 과정에는 디버깅, 의존성 업데이트, 테스트 커버리지 개선, flaky test 수정처럼 반복적이지만 중요한 작업이 많다.
  • 작업에 따라 상호작용 방식이 다르다.
    • 개발자가 직접 대화하며 진행하는 대화형 세션
    • 에이전트가 백그라운드에서 실행되고 의미 있는 결과만 전달하는 비동기 작업
  • Dropbox의 대규모 모노레포는 Bazel의 캐시와 원격 실행, 온프레미스 인프라에 의존한다.
  • 일반적인 외부 코딩 에이전트는 로컬 개발에는 적합하지만 Dropbox의 저장소 구조와 빌드·검증 경로를 자연스럽게 지원하지 못한다.
  • 따라서 워크플로마다 별도 AI 도구를 만드는 대신, 실행·검증·컨텍스트 처리를 공통화한 플랫폼을 선택했다.

Nova의 실행 및 검증 방식

  • 각 Nova 세션은 특정 커밋 시점의 Dropbox 코드베이스 스냅샷을 기반으로 격리된 환경에서 실행된다.
  • 호출자는 다음 정보를 전달할 수 있다.
    • 기준 커밋
    • 수행할 작업
    • 작업 후 실행할 검증 명령
    • 검증 실패 시 계속 진행할지 여부
    • 최대 반복 횟수
    • 결과를 게시할 브랜치
  • 기본 흐름은 다음과 같다.
    • 에이전트가 변경 사항 제안
    • Bazel 빌드·테스트 등 실제 검증 수행
    • 실패 결과를 에이전트에 전달
    • 에이전트가 원인을 분석하고 수정
    • 정해진 반복 횟수까지 재검증
  • 단순히 그럴듯한 패치를 생성하는 데 그치지 않고, 실제 Dropbox 개발 환경에서 변경 사항이 유효한지 확인한다.
  • 세션은 하나의 브랜치만 사용하고 코드 게시 작업은 에이전트 외부에서 처리한다.
    • 활성 브랜치와 게시 상태를 예측하기 쉽다.
    • 테스트 실행, 리베이스 등 후속 자동화를 단순하게 유지할 수 있다.
    • 여러 브랜치를 에이전트가 직접 관리할 때 발생하는 기준 브랜치 선택 문제를 피할 수 있다.

다양한 개발 인터페이스와 확장 기능

  • Nova는 여러 코딩 에이전트를 동일한 인터페이스 뒤에서 사용할 수 있도록 확장됐다.
  • 제공 방식은 다음과 같다.
    • 웹 UI 기반 대화형 세션
    • CLI
    • API
    • 로컬 에이전트, 스크립트, 사내 서비스에서 병렬 작업 실행
  • 장기 실행 워크플로에 AI 단계를 추가할 수 있는 헬퍼를 제공한다.
  • 프롬프트 평가, 관측성, 피드백 수집 기능으로 에이전트 성능을 측정하고 개선할 수 있다.
  • 파일 수정 외에도 로그 수집, 장애 조사, 여러 단계에 걸친 컨텍스트 유지가 필요하므로 다음 확장 기능을 포함한다.
    • Skills
    • Plugins
    • MCP 통합
    • 관측성 시스템 접근

CI 장애 대응에서 시작한 적용

  • Nova는 CI 실패에 대한 수정 제안을 자동화하는 문제에서 출발했다.
  • 예시 요청은 특정 커밋에서 CI 실패를 조사하고, 관련 Bazel 테스트를 실행하며, 실패 시 최대 5회까지 수정·재검증하는 형태다.
  • 검증 명령을 호출자가 명시하므로 에이전트가 변경한 코드에 필요한 컴파일·테스트 범위를 구체적으로 지정할 수 있다.
  • 이 방식은 “변경 제안 → 실제 검증 → 실패 원인 반영”이라는 안정적인 자동화 패턴을 만든다.

개발자 주도 세션

  • 엔지니어는 Nova 웹 UI에서 로컬 개발을 중단하지 않고 빠른 수정이나 프로토타입을 진행할 수 있다.
  • Bazel 선택성 도구와 검증 명령을 결합해 변경된 코드와 관련된 컴파일·테스트 대상만 검증할 수 있다.
  • Slack 대화에서 바로 Nova 세션을 시작하고 해당 스레드의 논의 내용을 컨텍스트로 전달할 수 있다.
  • 이를 통해 문제 설명이나 팀 내 논의를 에이전트 프롬프트에 수동으로 다시 작성하는 비용을 줄인다.

Flaky test 자동 수정

  • Nova의 대표적인 운영 자동화 사례는 flaky test remediation이다.
  • Dropbox의 flaky 테스트 탐지 시스템인 Athena와 내부 도구 Deflaker를 결합했다.
  • Deflaker의 흐름은 다음과 같다.
    • 테스트가 성공한 사례와 실패한 사례를 수집
    • 관련 로그를 Nova에 컨텍스트로 전달
    • 에이전트가 가능한 근본 원인을 분석
    • 수정안을 제안
  • 이는 단순 코드 생성보다 로그 분석, 증거 비교, 원인 추론이 중요한 장기 실행형 워크플로에 해당한다.

실용적인 시사점

코딩 에이전트를 도입할 때는 에디터 플러그인 하나를 추가하는 것보다 저장소, 빌드 시스템, 테스트 인프라, 로그와 컨텍스트를 연결하는 플랫폼 설계가 중요하다. 특히 에이전트의 결과를 실제 검증 명령으로 확인하고, 실패 결과를 다시 에이전트에 제공하는 반복 루프와 예측 가능한 브랜치·게시 정책을 갖추는 것이 안정적인 자동화의 핵심이다.