Amplitude, Cursor로 프로덕션 코드 배포량 3배 확대
Amplitude는 Cursor를 사용해 최소한의 개발자 개입만으로 아이디어를 프로덕션까지 이어지는 자율적인 개발 파이프라인을 구축했습니다.
Amplitude의 엔지니어링 팀은 최소한의 개발자 개입만으로 아이디어를 프로덕션까지 가져갈 수 있는 완전 자율적인 개발 파이프라인을 구축하고자 했습니다. Cursor를 통해 Amplitude는 이제 고객 피드백부터 옵저버빌리티 도구, 코드 리뷰에 이르기까지 소프트웨어 수명 주기 전반의 컨텍스트를 받아 에이전트가 실행하도록 넘기는 시스템을 갖추게 되었습니다.
이제 고객이 Slack에서 버그나 기능 요청을 보고하면, 클라우드 Agent가 자동으로 조사를 시작하고 티켓을 생성한 뒤 수정 코드까지 작성합니다. Cursor 자동화는 백그라운드에서 계속 실행되며, 레거시 코드를 마이그레이션하고 새로 생성되거나 업데이트된 모든 PR의 위험 수준을 분류합니다. Bugbot은 1차 리뷰 역할을 하며 저위험 변경 사항은 자동으로 병합하고, 고위험 PR은 적절한 리뷰어에게 전달합니다.
대부분의 AI 코딩 도구는 더 많은 코드를 만들어 줍니다. Cursor는 더 유용한 프로덕션 소프트웨어를 만들어 줍니다. 작업을 효과적으로 병렬화하고, 스스로 변경 사항을 테스트하며, 기능을 아이디어 단계에서 프로덕션까지 가져갈 수 있는 에이전트를 실행할 수 있다는 점이 차이를 만듭니다.
로컬 전용 에이전트는 병렬화와 자율성을 제한합니다
코딩 에이전트 도입 초기, Amplitude는 스태프 소프트웨어 엔지니어인 Adam Lohner의 표현대로 엔지니어링 생산성이 정체된 것처럼 보이는 ‘가짜 정체 구간’에 부딪혔습니다.
개발 속도를 진정으로 끌어올리는 건 에이전트가 단지 많은 코드를 만들어내는 것이 아니라, 실제로 유용한 프로덕션 소프트웨어를 만들어낼 때입니다. 이를 위해서는 에이전트의 병렬성과 자율성이 훨씬 더 높아야 했지만, 로컬 개발자 워크스테이션에 제한된 에이전트로는 그게 불가능했습니다.
로컬 에이전트는 동일한 제한된 리소스를 두고 경쟁하기 때문에 금방 충돌이 발생합니다. 에이전트를 두세 개만 동시에 실행해도 성능이 저하될 수 있습니다. Amplitude의 코드베이스는 규모가 커서, RAM이 큰 고사양 하드웨어에서도 로컬 개발자 머신이 메모리 한계에 부딪히고 있었습니다.
로컬 에이전트는 또한 엔지니어와 같은 수준의 완전한 개발 환경에 접근할 수 없습니다. 이런 환경이 없으면 에이전트는 자신의 작업을 테스트하거나 검증할 수 없습니다. 그래서 개발자는 여전히 환경을 설정하고, 엔드 투 엔드 테스트를 실행하고, 무엇이든 배포하기 전에 변경 사항을 수동으로 검증해야 합니다.
클라우드는 에이전트를 로컬 한계 너머로 확장합니다
더 나은 병렬성과 자율성을 위해 Amplitude는 Cursor의 클라우드 Agent를 도입했습니다. 특히 다음과 같은 기능이 눈에 띄었습니다:
- 대규모 병렬 실행: 클라우드 Agent는 격리된 확장형 VM에서 실행되므로, 로컬 병렬 처리 규모를 제한하던 리소스 제약이 사라집니다.
- 완전한 개발 환경: 클라우드 Agent는 전체 개발 환경에 접근할 수 있어 엔지니어처럼 직접 작업을 테스트하고, 검증하고, 반복 개선할 수 있습니다.
- 장시간 실행: Amplitude는 짧고 동기적인 작업 대신, 클라우드 Agent가 처음부터 끝까지 처리할 수 있는 더 깊고 더 야심찬 작업을 맡기고 있습니다.
- 상시 실행 에이전트: Cursor 자동화를 사용하면 Amplitude는 수동 프롬프트 없이도 트리거나 반복 일정에 맞춰 실행되는 클라우드 Agent를 설정할 수 있습니다.
Cursor에서는 여러 클라우드 Agent를 동시에 실행하고 있고, 각각이 저희의 전체 도구 스택에 완전히 접근할 수 있습니다. 로컬 리소스 제약에 막히지 않고, 계속 세세하게 관리하지 않아도 되는 에이전트를 바로 띄울 수 있게 되면서 업무 방식이 획기적으로 달라졌습니다.
이제 Amplitude의 엔지니어들은 작업 유형에 따라 클라우드와 로컬 에이전트를 오가며 사용합니다. 새로운 아이디어는 대개 클라우드에서 시작되며, 그곳에서는 Cursor의 하네스 덕분에 에이전트가 오랜 시간 독립적으로 작업할 수 있습니다. 많은 엔지니어가 기능 아이디어를 논의하는 Slack 스레드에서 바로 Cursor를 실행합니다.
개발자들은 더 통제된 반복 작업에 집중하거나 세부 사항을 더 면밀히 살펴봐야 할 때 에이전트를 로컬로 가져옵니다. Cursor는 클라우드와 로컬 전반을 아우르는 통합 워크스페이스 역할을 합니다.
Cursor는 서로 다른 병렬 에이전트를 모두 조율하기에 가장 뛰어난 인터페이스를 제공합니다. 큰 흐름을 보다가도 필요할 때는 diff나 파일 같은 세부 정보까지 깊이 들어갈 수 있습니다.
클라우드 Agent를 도입한 이후, Amplitude의 주간 프로덕션 커밋 수는 3배 증가했습니다. 이제 Cursor는 커밋 수 기준으로 Amplitude 코드베이스의 상위 3대 기여자 중 하나가 되었고, 매주 1,000회가 넘는 에이전트 실행이 프롬프트나 개발자 개입 없이 시작되고 있습니다.
클라우드는 소프트웨어를 만드는 곳이고, 로컬은 저희가 테스트하고 반복 개선하는 곳입니다. 이 둘 사이를 매끄럽게 전환할 수 있도록 지원하는 Cursor는 Amplitude의 제품 개발 속도를 끌어올린 핵심이었습니다.
Slack에서 티켓으로, 티켓에서 PR로
Amplitude에는 필드 팀이 고객의 버그 보고와 기능 요청을 전달하는 전용 Slack 채널이 있습니다. Cursor 이전에는 전담 팀 구성원이 이 채널을 모니터링하고, 이슈를 분류하고, 티켓을 추적해 처리하고, 백로그의 작업을 배정했습니다.
이후 Pauly는 이 전체 업무 흐름을 에이전트에 맡기기 위해 Cursor 자동화를 만들었습니다. Slack에 새 메시지가 도착하면 클라우드 Agent가 Linear를 확인해 해당 이슈에 대한 티켓이 이미 있는지 살펴봅니다. 이미 있다면 에이전트가 새로운 고객 정보를 추가합니다. 없다면 에이전트가 코드베이스를 살펴보고, 새 티켓을 열고, 해결책을 구현한 PR을 엽니다.
Cursor 자동화는 고객과 엔지니어 사이의 간극을 없애는 데 도움을 주고 있습니다. 고객 요구에 더 빠르게, 더 나은 해결책으로 대응할 수 있게 됐습니다.
이 템플릿으로 Slack 보고를 PR로 전환하는 자동화 만들기를 시작할 수 있습니다.
자동화된 레거시 리팩터링
Amplitude의 프런트엔드 코드베이스에는 수년간 축적된 상충하는 패턴이 있었고, 여기에는 레거시 CSS 컴포넌트, 오래된 React 레이아웃, 일관성 없는 스타일링 규칙이 포함되어 있었습니다.
서로 충돌하는 레거시 패턴이 너무 많아서 에이전트가 앞으로 나아갈 올바른 방향을 파악하기 어렵습니다. 결국 쓰레기를 넣으면 쓰레기가 나오는 문제죠.
이 문제를 해결하기 위해 Lohner는 매시간 실행되며 레거시 마이그레이션을 조금씩 진행하는 cron 기반 Cursor 자동화 세트를 만들었습니다. 한 자동화는 CSS 파일을 스캔해 Tailwind 클래스로 바로 대체할 수 있는 스타일을 찾아 치환하고, 기존 파일을 삭제한 뒤 PR을 열고 Slack 알림을 보냅니다. 또 다른 자동화는 Amplitude에 있는 20,000개 이상의 레거시 React 레이아웃 컴포넌트를 순차적으로 처리하면서 이를 Tailwind의 기본 대응 컴포넌트로 교체합니다.
이런 마이그레이션을 클라우드에서 자동화로 실행하면 다른 작업을 방해하거나 개발자 시간을 들이지 않고도 백그라운드에서 지속적으로 진행할 수 있습니다.
에이전트 주도 코드 리뷰
Amplitude의 엔지니어링 속도를 늦추는 또 다른 병목은 수동 코드 리뷰였습니다. Amplitude는 제품 신뢰성을 높이고 개발자의 업무 중단을 줄일 수 있는 에이전트 우선 리뷰 프로세스를 원했습니다.
Amplitude는 Bugbot을 전용 에이전트 리뷰 계층으로 도입했습니다. Amplitude의 코드베이스 규모와 복잡성상 사람이 놓치기 쉬운 문제를 Bugbot이 잡아내는 모습을 보면서, 개발자들 사이에서 도입이 자연스럽게 확산되었습니다.
Bugbot은 정말 찾기 어려운 버그를 꾸준히 잡아내고, 문제에 대한 탄탄한 수정안도 제안합니다.
Lohner는 또한 모든 PR의 위험도를 판단하는 Cursor 자동화도 만들었습니다. 위험도가 낮은 변경은 병합 단계로 바로 넘어갈 수 있고, 이때 Bugbot이 개발자 개입 없이 문제를 검토하고 자동 수정합니다. 더 복잡한 로직 변경이 포함된 고위험 PR은 적합한 엔지니어에게 자동으로 전달됩니다. 대략 저위험 PR의 60~70%는 추가 개발 작업 없이 병합됩니다. 이 템플릿을 사용해 Slack 보고서를 PR로 전환하는 자동화 구축을 시작할 수 있습니다.
Bugbot은 실제로 프로덕션을 위협하는 버그를 자주 잡아낸다는 실적을 쌓으며, 우리 코드 리뷰 프로세스의 핵심 요소가 되었습니다.
다음으로 Amplitude는 개발 수명 주기 후반부인 CI/CD 파이프라인, 빌드 검증, 배포까지 자동화를 확대하는 데 집중하고 있습니다. 목표는 검토가 끝난 PR부터 프로덕션 배포까지 개발자 개입 없이 에이전트가 소프트웨어를 처리하도록 하는 것입니다.
Cursor로 자율적인 개발 파이프라인을 구축하는 데 관심이 있다면, 팀에 문의하기에서 Cursor 평가판을 시작해 보세요.