코딩 에이전트를 위한 내부 플랫폼 ‘노바’ 소개
# Nova: Dropbox의 코딩 에이전트를 위한 플랫폼
코딩 에이전트는 소프트웨어 개발에서 점점 중요한 역할을 차지하고 있습니다. 가장 눈에 띄는 활용 사례는 개발자가 코드를 더 빠르게 작성하도록 돕는 것입니다. 하지만 코드는 소프트웨어를 구축하고 운영하는 전체 과정 중 한 부분에 불과합니다.
Dropbox와 같은 대규모 환경에서는 에이전트가 다음도 수행해야 합니다:
- [대규모 모노레포](https://dropbox.tech/infrastructure/reducing-our-monorepo-size-to-improve-developer-velocity) 내에서 작업하기
- Dropbox 전체 엔지니어링 환경에서 코드 변경을 검증하기
- 엔지니어링 라이프사이클 전반에 걸친 컨텍스트를 활용하기 (우리의 포스트 **[Dash가 컨텍스트 엔지니어링을 활용해 더 똑똑한 AI를 만드는 방법](https://dropbox.tech/machine-learning/how-dash-uses-context-engineering-for-smarter-ai)** 참고)
개발자는 단순히 코드를 작성하는 것에 그치지 않고, 마이그레이션을 관리하고, CI를 언블록하며, 실패를 조사하고, 반복적인 운영 작업을 수행합니다. 이러한 작업도 중요하지만 반복적이고 방해가 되기 쉬워 엔지니어가 더 깊은 제품 및 인프라 작업에 집중하기 어렵게 만듭니다.
## Nova를 만든 이유
엔지니어의 작업 중 더 큰 비중을 에이전트가 도와줄 수 있는 미래를 대비하기 위해, 우리는 **Nova**라는 내부 서비스를 구축했습니다. Nova는 클라우드에서 코딩 에이전트를 실행할 수 있게 해줍니다. Nova를 통해 엔지니어는:
- 여러 코딩 세션을 병렬로 실행할 수 있음
- 내부 시스템이 자동화 워크플로의 일부로 AI 에이전트를 활용하도록 할 수 있음
플랫폼 접근 방식을 채택함으로써 각 사용 사례마다 별도 구현을 만들 필요 없이 내부 워크플로 전반에 에이전트를 적용할 수 있어, AI가 엔지니어링 작업을 지원하는 방식을 빠르게 실험할 수 있습니다.
## 이번 글에서 다룰 내용
이번 포스트에서는 다음을 다룹니다:
1. **왜 Nova를 만들었는가** – 통합 플랫폼을 만들게 된 동기.
2. **왜 플랫폼 접근이 필요한가** – 단일 목적 솔루션에 비해 얻는 이점.
3. **배운 교훈** – 소프트웨어 개발 라이프사이클 전반에 Nova를 사용하면서 얻은 인사이트.
---

**Dash**는 여러분의 컨텍스트, 팀, 작업을 파악해 팀이 조직을 유지하고, 지식을 쉽게 찾고 공유하며, 프로젝트를 안전하게 관리하도록 도와줍니다—모두 한 곳에서. 그리고 곧 Dash가 Dropbox에 찾아옵니다.
[자세히 알아보기 →](https://dash.dropbox.com/?utm=blogs)
파편화된 워크플로 문제 해결
소프트웨어 개발 라이프사이클에는 엔지니어링 판단이 필수적인 단계가 많이 존재하지만, 실제 작업은 반복적이고 시간이 많이 소요될 수 있습니다. 실패 디버깅, 의존성 업데이트, 테스트 커버리지 향상, 불안정한 테스트 수정과 같은 작업은 매우 중요하지만, 개발자를 더 의미 있는 작업에서 멀어지게 만들곤 합니다.
이러한 워크플로는 코딩 에이전트를 통한 AI 지원에 적합하지만, 모두 동일한 상호작용 모델을 필요로 하지는 않습니다:
| 상호작용 모델 | 이상적인 사용 사례 |
|---|---|
| 표준 인터랙티브 채팅 | 빠른 즉석 질의, 코드 리뷰, 작은 리팩토링 |
| 비동기 autonomous 실행 | 장시간 실행 작업(예: 대규모 의존성 업그레이드, 테스트 스위트 분석)으로, 에이전트가 유용한 결과를 발견했을 때만 결과를 표시 |
두 모드를 일관되게 지원하려면 단일 목적 도구만으로는 부족합니다.
왜 기존 상용 도구가 Dropbox에 맞지 않을까
- 모노레포 규모 – 우리의 대규모 모노레포는 방대하고 서로 긴밀히 연결돼 있습니다.
- Bazel 중심 워크플로 – 우리는 빌드와 테스트에 Bazel을 사용하며, 캐시와 원격 실행을 활용합니다.
- 온프레미스 인프라 – 빠른 빌드와 테스트는 내부 하드웨어와 맞춤형 검증 파이프라인에 의존합니다.
타사 코딩 에이전트 도구는 로컬 반복 작업에는 잘 맞지만, 다음과 자연스럽게 통합되지 못합니다:
- 우리의 레포지토리 구조
- Bazel 기반 빌드·테스트 시스템
- Dropbox 전용 검증 파이프라인 및 온프레미스 리소스
따라서 우리는 기존 시스템 내에서 작동할 수 있는 에이전트가 필요했으며, 별도 AI 전용 워크플로를 강요할 수는 없었습니다.
통합 플랫폼 구축
위 제약으로 인해 우리는 공유 플랫폼을 만들기로 했습니다—각 워크플로마다 고립된 솔루션을 만드는 대신. 이 플랫폼은 다음을 만족해야 했습니다:
- 인터랙티브 개발 지원(채팅형 도움)
- 백그라운드 작업 실행(비동기, 장시간 작업)
- 내부 서비스 제공(예: 자동 코드 리뷰, 의존성 자동 업데이트)
- 실행, 검증, 컨텍스트 처리를 모든 사용 사례에 걸쳐 일관되게 유지
그 결과가 바로 Nova이며, Dropbox 고유 인프라 전반에 AI‑지원 개발을 통합하도록 설계되었습니다.
Nova로 개발 효율성 향상
Nova는 CI 실패에 대한 엔지니어의 대응을 돕는 단일 문제에서 시작되었습니다. 명확한 출발점이 전체 플랫폼 설계에 큰 영향을 주었습니다.
Nova 세션 작동 방식
- 격리된 환경 – 각 세션은 특정 커밋 시점의 Dropbox 코드베이스 스냅샷을 대상으로 실행됩니다.
- 작업 정의 – 호출자는 작업과 (선택적으로) 검증 명령을 제공합니다.
- 검증 루프 – 에이전트가 변경을 제안하면 검증 명령이 실행됩니다.
- 검증에 실패하면(예: 테스트가 깨짐) Nova는 결과를 에이전트에 다시 전달하고 실패를 해결하도록 요청합니다.
- 결과가 유지되는 동안 세션은 계속됩니다.
패턴: 제안 → 검증 → 반복.
플랫폼 확장
- 단일 인터페이스 뒤에 여러 코딩 에이전트 배치
- 엔지니어가 이미 사용하는 도구와 통합
- 인터랙티브 세션을 위한 웹 UI(다른 클라우드 기반 코딩 에이전트와 유사)
- 로컬 에이전트, 스크립트, 내부 서비스에서 병렬 작업을 시작할 수 있는 CLI 및 API
- 헬퍼를 제공해 팀이 AI 기반 단계만 추가하면 되도록 함, 주변 인프라를 재구축할 필요 없음
- 관측성 및 피드백 – 프롬프트 평가, 텔레메트리, 수집 메커니즘이 내장돼 있어 엔지니어가 에이전트 성능을 측정할 수 있음
단순 편집을 넘어
Nova가 다양한 워크플로에 적용되면서, 많은 작업이 파일 편집만으로는 해결되지 않음을 발견했습니다:
- 증거 수집, 로그 읽기, 실패 조사 등
- 여러 단계에 걸친 컨텍스트 유지
이를 지원하기 위해 Nova는 스킬, 플러그인, MCP 통합을 제공하며, 관측성 시스템에 대한 접근도 포함합니다.
코드 퍼블리시 전략
우리는 에이전트 외부에서 퍼블리시를 수행하고, 각 세션을 단일 브랜치에 제한하도록 설계했습니다. 이 디자인 덕분에:
- 활성 브랜치와 보류 중인 변경 사항을 예측 가능하게 파악
- 자동화가 단순해짐(예: 테스트 실행,
main에 리베이스) - 에이전트가 세션 내에서 다수의 브랜치를 만들고 관리하는 복잡성을 회피
Nova 요청 예시 (pseudo‑JSON)
{
"repo_commit": "",
"task": "이 CI 실패를 조사하고 해결 방안을 제안해 주세요",
"validation_commands": [
"bazel test //path/to:test_target",
"bazel test //path/to/related:all"
],
"continue_on_validation_failure": true,
"max_iterations": 5,
"push_branch": "ai/nova/ci-fix"
}
세션을 구동하는 핵심 필드를 보여주는 예시 Nova 요청.
플랫폼 활용 사례
Nova를 출시한 이후, 우리는 엔지니어링 워크플로 전반에 걸쳐 이를 적용해 왔습니다—짧은 개발자 주도 코딩 세션부터 장기적인 복구·마이그레이션 작업까지. 아래 사례들은 AI 코딩 에이전트가 인터랙티브한 일상 개발과 보다 지속적인 운영 워크플로 모두