'Cursor'는 최근 코딩 업계에서 큰 화제가 되고 AI기반 코딩 프로그램이에요.
작년 9월에 OpenAI로부터 엔젤 투자를 받은 후, 2024년 8월에 6,000만 달러 (약 810억 원) 규모의 시리즈 A 투자를 받을 정도로 세기의 주목을 받고 있어요.
오늘은 Cursor를 개발한 창업팀과의 인터뷰 팟캐스트를 소개해드리고자 해요. Cursor 팀이 보는 AI와 프로그래밍의 미래에 대한 시각이 흥미로웠어요. 이 팟캐스트를 통해 AI가 프로그래밍 세계를 어떻게 변화시키고 있는지, 그리고 앞으로 어떤 방향으로 발전할지에 대한 인사이트를 얻을 수 있었어요.
Q: Cursor는 어떤 제품인가요? 기존의 코드 에디터와는 어떤 점이 다른가요?
A: Cursor는 VSCode를 기반으로 한 코드 에디터에요. 하지만 단순히 VSCode의 확장 프로그램이 아니라, VSCode를 통째로 복사해서 AI지원 코딩 기능을 추가한 완전히 새로운 에디터라고 할 수 있어요.
저희가 VSCode를 통째로 복사한 이유는 AI 기술의 발전 속도가 매우 빠르다고 판단했기 때문이에요. AI 모델의 성능이 계속 향상되면서, 소프트웨어 개발 방식 자체가 크게 변할 것이라고 예상했어요.
기존의 플러그인 형태로는 이런 변화에 빠르게 대응하기 어렵다고 봤어요. 저희는 코드 에디터의 모든 부분을 직접 제어하고 싶었고, 그래야만 가장 유용한 기능들을 만들 수 있다고 생각했죠. Cursor의 목표는 단순히 생산성을 높이는 것을 넘어서, 소프트웨어를 만드는 방식 자체를 근본적으로 변화시키는 거예요.
Q: 코드 에디터가 무엇인가요?
A: 코드 에디터는 소프트웨어를 구축하는 도구예요. 기존의 코드 에디터를 프로그래머를 위한 고급 워드 프로세서라고 생각하시면 됩니다. 일반 워드 프로세서와 다른 점은 코드가 많은 구조를 가지고 있어서, 코드 에디터가 그 구조를 이해하고 다양한 기능을 제공한다는 거예요.
예를 들어, 코드의 시각적 차별화, 코드베이스 내 탐색, 오류 검사 등의 기능을 제공합니다. 이런 기능들이 프로그래머의 작업을 훨씬 효율적으로 만들어주죠. 그리고 우리는 앞으로 10년 동안 코드 에디터가 크게 변화할 것으로 예상하고 있어요. 소프트웨어 구축 방식 자체가 변화할 수 있기 때문이죠.
Q: Cursor의 탄생 배경에 대해 말씀해주시겠어요?
A: Cursor의 탄생 배경은 2020년으로 거슬러 올라가요. 그 해에 OpenAI가 스케일링 법칙에 대한 논문을 발표했어요. 이 논문은 AI 기술의 발전 가능성을 명확히 보여줬죠. 더 많은 컴퓨팅 파워와 데이터만 있다면 AI 모델의 성능을 크게 향상시킬 수 있다는 거였어요.
이후 GitHub Copilot이 등장했고, 우리는 GPT-4의 초기 버전에 접근할 수 있었습니다. 이 경험들을 통해 AI 기반 코딩 도구의 잠재력을 직접 확인할 수 있었어요. 특히 GPT-4의 능력은 우리의 예상을 훨씬 뛰어넘었죠.
이런 발전들을 보면서 우리는 AI가 프로그래밍 전반에 큰 영향을 미칠 것이라고 확신했어요. 단순히 코드 자동 완성 수준을 넘어서, 프로그래밍 방식 자체를 변화시킬 수 있는 잠재력이 보였죠. 그래서 우리는 이런 변화에 맞는 새로운 프로그래밍 환경이 필요하다고 생각했고, 그것이 Cursor의 탄생으로 이어졌습니다.
우리의 비전은 단순히 AI를 기존 도구에 추가하는 것이 아니라, AI와 인간 프로그래머가 효과적으로 협력할 수 있는 완전히 새로운 환경을 만드는 거예요. 이를 통해 프로그래밍의 효율성을 크게 높이고, 동시에 프로그래밍을 더 즐겁고 창의적인 경험으로 만들고자 합니다.
Q: Cursor의 주요 기능을 설명해주실 수 있나요?
A: 저희 주요 기능은 'Tab' 이라는 기능입니다. Tab은 두 가지 역할을 해요.
첫 번째는 프로그래머의 어깨 너머에서 지켜보는 동료처럼 작동하는 거예요. 매우 빠른 속도로 여러분이 다음에 할 일을 예측하고, 앞서 나가서 타이핑해주는 거죠. 이건 단순한 자동 완성 기능을 넘어서는 거예요. 다음 문자나 단어를 예측하는 게 아니라, 여러분이 다음에 할 전체적인 변경사항을 예측하는 거예요. 심지어 여러분이 다음에 어디로 이동할지까지 예측해요. (역자: 다음 작성할 코드를 미리 예측하여 작성해주는 기능을 뜻해요. 커서가 좋은 것은, 내 코딩 스타일과 패턴을 AI가 파악하고 예측 코드를 미리 잘 제시해준다는 것이에요.)
두 번째 역할은 여러분이 AI보다 앞서 나가도록 돕는 거예요. 여러분이 지시사항을 AI에 전달하면, AI가 그에 맞는 코드를 생성해주는 식이죠. 이 두 가지 기능 모두 사용하기 편리하고 똑똑하며 빠르게 작동하도록 많은 노력을 기울였어요.
'Tab' 의 목표는 프로그래머가 취하는 모든 '낮은 엔트로피' 행동을 제거하는 거예요. 여기서 '낮은 엔트로피' 행동이란, 프로그래머의 의도가 이미 결정된 상태에서 단순히 그 의도를 컴퓨터에 전달하기 위해 수행하는 반복적이고 예측 가능한 행동들을 말해요. 예를 들어, 특정 함수를 호출하기 위해 매번 같은 형식의 코드를 타이핑하는 것 같은 행동이죠. ‘Tab’은 이런 행동들을 자동화해서, 프로그래머가 실제로 중요한 의사결정과 창의적인 작업에 집중할 수 있도록 도와주는 거예요.
Q: 'Tab' 기능을 구현하기 위해 어떤 기술적인 도전이 있었나요?
A: 가장 큰 과제 중 하나는 사용자의 다음 커서 위치를 예측하는 것이었어요. 이건 직관적으로 보기에 쉬워 보이지만, 실제로 구현하기는 매우 어려운 문제예요.
이 문제를 해결하기 위해 우리는 작은 모델들을 훈련시켰어요. 이 모델들은 매우 긴 프롬프트(입력)를 받아들이고 비교적 적은 수의 토큰(출력)을 생성해요. 이런 특성 때문에 우리는 'sparse' 모델, 특히 MoE(Mixture of Experts) 모델을 사용했어요. 이 모델은 긴 컨텍스트에서 특히 좋은 성능을 보여줬어요.
또 다른 중요한 기술은 '추측적 편집(speculative edits)'이라고 부르는 거예요. 이건 '추측적 디코딩(speculative decoding)'의 변형인데, 기본 아이디어는 모델이 사용자가 제안을 수락할 것이라고 가정하고 미리 다음 제안을 준비하는 거예요. 이렇게 하면 사용자가 'Tab'을 눌렀을 때 즉시 다음 제안을 볼 수 있어요.
캐싱도 중요한 역할을 해요. 그래서 KV(Key-Value) 캐시 최적화가 필요했어요. 매 키 입력마다 모든 토큰에 대해 모델을 다시 실행하면 지연 시간이 크게 증가하고 GPU에 과도한 부하가 걸리게 돼요. 그래서 우리는 캐싱을 고려해 프롬프트를 설계하고, 요청 간에 KV 캐시를 재사용해요. 이렇게 하면 계산량을 크게 줄일 수 있어요.
Q: Cursor에서 사용하는 AI 모델들은 어떤게 있나요?
A: Cursor에서는 여러 AI 모델을 사용하고 있어요. 구체적으로 말씀드리면:
- 우선 GPT와 Claude 같은 대규모 언어 모델을 사용하고 있어요. 이 모델들은 코드 생성과 이해에 뛰어난 성능을 보여줍니다.
- 그 중에서도 특히 Claude 3.5 Sonnet을 주로 사용하고 있어요. Sonnet은 현재 우리가 사용하는 모델 중 전반적으로 가장 좋은 성능을 보여주고 있죠.
- Claude 3 모델의 다른 패밀리도 사용하고 있어요. 여기에는 Claude 3 Haiku, Claude 3 Opus가 포함돼요. 각각 다른 특징을 가지고 있죠.
- OpenAI의 GPT-4도 사용하고 있어요. GPT-4는 추론 능력이 뛰어나서 복잡한 프로그래밍 문제를 해결하는 데 유용해요.
- 그리고 우리가 직접 개발한 커스텀 모델들도 있어요. 이 모델들은 특정 작업에 특화되어 있어요. 예를 들어, 코드 편집이나 다음 편집 예측 같은 작업에 사용됩니다.
- 또한 우리는 MoE(Mixture of Experts) 모델도 사용하고 있어요. 이 모델은 특히 입력이 많고 출력이 적은 작업에 효과적이에요.
이렇게 다양한 모델을 사용하는 이유는 각 모델마다 장단점이 있기 때문이에요. 어떤 모델은 속도가 빠르고, 어떤 모델은 코드 편집에 뛰어나고, 또 다른 모델은 긴 컨텍스트를 처리하는 데 강해요. 우리는 각 작업의 특성에 맞는 최적의 모델을 선택해서 사용하고 있어요.
그리고 중요한 점은, 우리가 계속해서 새로운 모델을 테스트하고 통합하고 있다는 거예요. AI 기술은 빠르게 발전하고 있으니까요. 우리의 목표는 항상 최신의, 가장 효과적인 AI 기술을 Cursor에 적용하는 거예요.
Q: Cursor의 개발 과정에서 기술적인 문제가 있었나요?
A: 일단 확장성 문제가 있었어요. 사용자 수가 늘어나면서 매초 처리해야 하는 요청 수가 크게 증가했어요. 이에 따라 캐싱, 데이터베이스 등 시스템의 여러 구성 요소들이 한계에 부딪혔죠. 심지어 데이터베이스 테이블에서 정수 오버플로우가 발생하기도 했어요.
그리고 코드베이스 인덱싱 시스템을 구축하는 것도 큰 도전이었어요. 이 시스템은 사용자의 코드베이스를 분석하고, 그에 대한 질문에 답할 수 있게 해주는 건데요. 이 시스템을 효율적으로 만드는 게 정말 어려웠어요.
또한, 비용 효율성도 중요한 문제였어요. 코드를 임베딩하는 작업이 가장 비용이 많이 드는데, 같은 회사의 여러 개발자가 비슷한 코드베이스를 사용하는 경우가 많아요. 이 때 모든 개발자의 코드를 매번 새로 임베딩하면 비용이 너무 많이 들어요. 그래서 우리는 임베딩 결과를 캐시하는 시스템을 만들었어요. 코드 청크의 해시값을 키로 사용해 임베딩을 저장하고, 같은 해시값이 나오면 기존 임베딩을 재사용하는 거죠.
마지막으로 속도 개선도 저희에게 큰 과제였어요. 'Tab' 기능의 경우, 우리는 '추측적 편집(speculative edits)'이라는 기술을 개발했어요. 이는 사용자가 제안을 수락할 것이라고 가정하고 미리 다음 제안을 준비하는 거예요. KV(Key-Value) 캐시를 재사용해 계산량을 줄이는 방법도 사용했어요.
Q: Cursor 팀이 생각하는 프로그래밍의 미래는 어떤 모습인가요?
A: 저희는 프로그래머가 오랫동안 '운전석'에 있는 미래를 그리고 있어요. 이는 프로그래머의 속도와 주도권, 그리고 제어 능력을 강조하는 거예요. 프로그래머가 원하는 모든 것을 수정할 수 있고, 빠르게 반복할 수 있는 능력을 갖추는 거죠.
이는 일부 사람들이 생각하는 미래와는 조금 다를 수 있어요. 많은 사람들이 컴퓨터와 대화하며 소프트웨어를 만드는, 마치 엔지니어링 부서나 엔지니어와 슬랙으로 대화하는 것 같은 미래를 상상하고 있어요. 하지만 우리는 그런 방식에 대해 그다지 흥미를 느끼지 않아요.
그 이유는 두 가지예요. 첫째, 지연 시간 문제가 있어요. 대화 방식은 빠른 반복을 어렵게 만들어요. 둘째, 대화 방식은 많은 제어권을 포기하게 만들어요. 텍스트 박스로 대화할 때는 정말 구체적인 지시를 하기가 어려워요. 결과적으로 많은 중요한 결정들을 AI에게 맡기게 되는 거죠.
저희가 생각하는 엔지니어링의 본질은 코드베이스를 여러 추상화 수준에서 볼 수 있고, 특정 부분을 쉽게 수정할 수 있는 거예요. 예를 들어, 코드베이스를 의사코드 형태로 보면서 그 의사코드를 직접 수정할 수 있어요. 그러면 그 변경사항이 실제 프로그래밍 언어 수준에서 반영되는 거죠.
이렇게 하면 프로그래밍의 핵심은 유지하면서도 생산성을 높일 수 있어요. 프로그래머가 전체 과정을 제어하면서 더 효율적으로 일할 수 있게 되는 거죠. 저희가 중요하게 여기는 건 프로그래머의 제어권과 속도예요. 이런 원칙들이 미래 프로그래밍의 핵심이 될 거라고 봐요.
Q: 프로그래밍이라는 기술 자체는 어떻게 변할까요? 많은 사람들이 프로그래밍을 배우는 것에 대해 불안해하고 있어요.
A: 프로그래밍은 더 높은 수준의 추상화 영역으로 이동할 거예요. 예를 들어, 코드베이스를 다양한 추상화 수준에서 볼 수 있게 될 거예요. 의사를 표현하는 코드 수준에서 작업하고, 그 변경사항이 실제 코드에 자동으로 반영되는 그런 환경이 올 수 있어요.
동시에, 프로그래머와 컴퓨터 사이의 의사소통 대역폭이 크게 높아질 거예요. 단순히 타이핑하는 것보다 훨씬 더 효율적으로 의도를 전달할 수 있게 될 거예요. 이는 프로그래밍 속도를 크게 높일 수 있죠.
하지만 이런 변화 속에서도 프로그래머의 역할은 여전히 중요할 거예요. AI가 많은 부분을 도와줄 테지만, 결국 무엇을 만들지, 어떻게 만들지를 결정하는 건 프로그래머가 될 거예요. 프로그래머의 창의성과 판단력은 여전히 핵심적인 요소가 될 거예요.
그래서 프로그래밍을 배우는 것에 대해 불안해할 필요는 없어요. 오히려 더 흥미롭고 창의적인 일이 될 거예요. 상용구를 작성하는 일은 줄어들고, 더 높은 수준의 문제 해결과 설계에 집중할 수 있게 될 테니까요.
다만, 프로그래밍을 배우는 방식은 변할 수 있어요. AI와 협력하는 방법, 높은 수준의 추상화로 작업하는 방법 등을 배워야 할 거예요. 하지만 이런 변화는 프로그래밍을 더 접근하기 쉽고 재미있게 만들 수 있어요.
결국, 프로그래밍의 본질은 변하지 않을 거예요. 문제를 해결하고, 아이디어를 현실로 만드는 것. 그래서 프로그래밍을 정말 사랑하는 사람들은 앞으로도 계속해서 뛰어난 프로그래머가 될 수 있을 거예요.
(역자 주: 이외 Cursor의 장점인 Composer등도 이야기 하였지만, 이 부분은 다소 적게 이야기되었습니다. 새로운 개발 툴의 미래 Cursor를 경험해보시고, 그 진가를 함께 알면 좋겠습니다.)
솔로프리너의 인디해커 클럽에서, 미래를 준비하는 개발자, 메이커들과 함께해보세요. 현재 Cursor, Replit, V0, Bolt등을 연구하고 있어요.
9-10월에만 약 130명이 추가로 가입하셔서, 현재 200명이 넘는 커뮤니티가 되었어요. 최종 300명까지만 멤버를 받고, 당분간 추가 멤버를 받지 않을 예정이에요.
1인 창업을 꿈꾸시는 분들, 혹은 현재 창업을 하시는 분들은 개편된 웹사이트에 방문하여 서비스를 둘러봐주세요. 8개월간 모신 정말 뛰어난 연사진, 창업가들과 함께 성장하고 있어요.
'솔로프리너'는 트레바리, 넷플연가, 월급쟁이부자들, GPTers와 같은 '커뮤니티형 모임 서비스'의 그 어디엔가 포지션을 위치하고 있습니다. '1인 창업가들의 모임'으로 시작하지만, AI, 자동화, 파이어족 등의 콘텐츠와 스터디 프로그램 제공을 통해 외연확장을 하며 '대한민국 사람들의 독립을 돕는다'는 사명으로 이 서비스를 운영하고자 합니다.
이 과정에 동참하고, 서비스의 성장을 멤버 혹은 커뮤니티 구성원으로써 함께하고 싶으신 분들을 환영합니다. :) 함께 하면 좋겠습니다. '창업'이라는 것을 하나도 몰랐던 저와, 창업을 시작하시는 분들이 어떻게 성장해나가는지 조금이나마 엿보셨으면 좋겠습니다.
👉🏻 웹사이트 바로가기: https://solopreneur.co.kr/
댓글
의견을 남겨주세요