Navan, 한 달 걸리던 마이그레이션을 코드베이스 동결 없이 일주일로 단축
Navan의 최근 마이그레이션은 8개 애플리케이션과 15개 라이브러리를 아우르는 작업이었지만, 개발을 멈추지 않고 약 일주일 만에 마무리되었습니다.
Navan의 가장 최근 마이그레이션은 8개 애플리케이션과 15개 라이브러리를 아우르는 작업이었지만, 개발을 멈추지 않고 약 일주일 만에 마무리되었습니다. 2년 전에는 비슷한 규모의 마이그레이션에 한 달 넘게 걸렸고, 병합 한 번이 잘못되어 master 브랜치가 하루 동안 잠기기도 했습니다. 이런 차이를 만든 것은 Cursor의 클라우드 Agent입니다. 엔지니어 한 명이 혼자 작업을 떠안는 대신, Navan은 마이그레이션 계획을 한 번만 세운 뒤 self-hosted 머신에서 8개 애플리케이션에 병렬로 실행할 수 있었습니다.
8개 앱 마이그레이션, 한 달이 아닌 일주일 만에 완료
2년 전, Navan의 코드베이스를 새 Spring 버전으로 옮기는 데 Sr. 스태프 소프트웨어 엔지니어 Rahul Popuri는 한 달 넘게 걸렸습니다. 그 기간에는 불완전한 푸시와 되돌리기로 인해 master 브랜치가 하루 동안 잠기기도 했습니다. 잠금이 풀린 뒤에도 혼란은 이어졌습니다. 다른 엔지니어들은 며칠이 지나서도 밀린 변경 사항을 반영하느라 애를 먹었습니다. 하지만 더 큰 비용은 잠금 그 자체가 아니었습니다. 엔지니어 한 명이 기능을 배포하거나 버그를 수정하는 대신 한 달을 통째로 마이그레이션에 쏟았다는 점이었습니다.
Navan의 가장 최근 마이그레이션인 Spring Boot 4 전환은 약 일주일 만에 끝났고, 진행 중인 개발에 주는 영향도 더 적었습니다. Rahul은 Cursor로 업그레이드 계획을 미리 세운 뒤, 각 컴포넌트를 Navan의 self-hosted 머신에서 실행되는 클라우드 Agent에 위임했습니다. 덕분에 8개 애플리케이션과 15개 라이브러리를 하나씩 차례로 옮기는 대신 동시에 전환할 수 있었습니다. 에이전트는 Navan의 내부 도구 및 지원 인프라를 사용했고, 같은 머신에서 브라우저를 띄워 각 흐름을 직접 클릭해 보며 변경 사항을 확인했습니다.
예전에는 병합 하나만 잘못되어도 작업 흐름 전체가 멈춰 버렸습니다. 이번에는 진행 중인 개발에 미치는 영향을 최소화하면서 8개 앱을 한꺼번에 전환할 수 있었습니다.
Rahul은 업무 하나가 실행되는 것을 지켜보는 데 그치지 않았습니다. 서로 다른 애플리케이션을 동시에 업그레이드하는 여러 에이전트를 함께 모니터링했습니다. 그는 이 정도 규모의 병렬 작업은 불과 몇 달 전만 해도 불가능했을 것이라고 말합니다.
실제 워크로드를 실행하는 클라우드 Agent
Rahul은 거의 모든 작업을 Cursor의 클라우드 Agent로 옮겼습니다. GitHub 작업은 Cursor가 관리하는 인프라에서 실행되고, Snowflake와 Slack용 내부 MCPs는 Navan이 직접 운영하는 self-hosted 머신에서 실행됩니다. 이 머신에서는 에이전트가 브라우저를 띄워 자신이 만든 변경 사항을 직접 확인할 수도 있습니다. 이 환경 위에서 자동화, 스킬, 메모리가 돌아가기 때문에, 누가 지켜보지 않아도 eval 루프와 마이그레이션이 비동기로 계속 진행됩니다.
이 패턴은 이후 엔지니어 한 명을 훌쩍 넘어 확산되었습니다. 현재 Navan에서는 약 200명이 Cursor의 클라우드 Agent를 활발히 사용하고 있으며, 이는 2026년 4월 대비 10배 늘어난 수치입니다.
Cursor를 도입하기 전에도 Navan의 엔지니어들은 기존 코딩 에이전트를 중심으로 제대로 된 인프라를 구축해 두었습니다. 하지만 그 에이전트를 쓰려면 누군가 데스크톱 한 대 앞에서 세션을 내내 열어 두어야 했고, 그 때문에 Navan에 필요한 병렬·비동기 작업은 불가능했습니다.
제품 팀에서도 같은 효과가 나타납니다
제품 쪽에서는 경비 및 결제 담당 스태프 소프트웨어 엔지니어인 Elton Yang이 간단한 설명만으로 경비 및 결제 워크플로용 새 에이전트를 만듭니다. Cursor가 팀의 기존 설계 패턴을 따라 에이전트의 프롬프트까지 직접 작성해 주기 때문에, 초기 프롬프트를 손으로 쓰느라 몇 시간을 들이지 않고도 당일에 바로 테스트를 시작할 수 있습니다.
이제는 에이전트 프롬프트를 직접 작성할 필요조차 없어요. Cursor가 기존 설계를 따라 당일에 에이전트가 동작하게 만들어 줍니다.
이러한 변화로 작은 팀이 감당할 수 있는 범위가 달라졌습니다. Navan의 AI 에이전트 전담 팀에서 많은 엔지니어가 다른 곳으로 옮긴 뒤, 이전에는 엔지니어 2~3명이 여러 스프린트에 걸쳐 진행하던 기능 작업을 엔지니어 한 명이 넘겨받았습니다. 가장 대표적인 예시는 수동 은행 계좌 연결입니다. 이 엔지니어는 Angular 폼을 React로 다시 만들고 이를 연결할 백엔드를 구축했으며, 작업상 필요할 때는 백엔드 전담에서 풀스택으로 영역을 넓혔습니다. 덕분에 혼자 맡은 작업이 단순 유지 관리로 전락하지 않고 새로운 기능 개발에 계속 집중할 수 있었습니다.
Cursor는 동료의 빈자리를 메우는 방식도 바꿨습니다. 동료가 휴가를 간 사이 Elton이 잘 모르는 코드베이스 두 개를 맡아야 했을 때, Cursor가 조사를 대신 맡아 Elton이 파일 하나 열기도 전에 로그와 데이터베이스 레코드를 가져와 이슈를 정리해 주었습니다.
두 코드베이스 모두 잘 알지 못했어요. 그래서 '이게 이슈야, 해결하는 걸 도와줘'라고 했죠. 그러자 로그와 데이터베이스를 가져와서는 마치 제가 그 repo에서 몇 달은 지낸 사람처럼 하나하나 설명해 주더라고요.
이 덕분에 두 코드베이스에 적응하는 데 드는 약 이틀의 시간을 아꼈고, 사전 지식 없이 처음부터 익혀야 하는 부담도 덜 수 있었습니다.
검토는 여전히 사람의 몫입니다. Elton은 에이전트를 만능 해결사가 아니라 페어 프로그래머로 대합니다. 에이전트가 실행되는 동안 추론 과정을 지켜보다가 잘못된 가정이 보이면 즉시 바로잡습니다. 생성된 코드는 다른 코드와 마찬가지로 사람과 AI 리뷰, 테스트, 스테이징 과정을 거치며, 복잡한 변경 사항은 프로덕션 배포 전에 스테이징에서 검증합니다. 작업을 계획하고 실행하는 것은 에이전트지만, 판단을 내리고 최종 병합을 책임지는 것은 엔지니어입니다.
예전에는 팀 전체가 매달리고 코드베이스를 잠가야 했던 마이그레이션이나 병렬 작업을 진행하고 있다면, 문의하기를 통해 Cursor 체험을 시작해 보세요.