Stanford CS153 강연: Cursor의 CTO Sualeh Asif가 말하는 대규모 인프라의 비밀


1. 강연 소개 및 진행 방식

  • 강연은 Stanford CS153의 다섯 번째 주차 강의로, Cursor의 CTO이자 공동 창업자인 Sualeh Asif가 초청되었다.
  • 강연은 두 부분으로 나뉘어 진행:
    1. Sualeh과 진행자가 사전에 논의한 질문들에 대한 답변.
    2. Discord를 통해 학생들이 실시간으로 제출한 질문에 답변.
  • Sualeh은 "완전히 필터링 없는" 방식으로 질문에 답하겠다고 약속하며, 청중들에게 자유롭게 질문할 것을 권장.

2. Cursor의 현재 스케일

  • Cursor는 지난 1년 동안 100배 이상의 성장을 경험.
  • 하루 1억 개 이상의 모델 호출을 처리하며, 이는 매우 큰 규모의 작업임.
  • 인덱싱 시스템은 하루 약 10억 개의 문서를 처리하며, 회사 설립 이후 수백억 개의 문서를 다룸.
  • 데이터 스토어는 점점 더 커지고 있으며, 현재는 대규모 서비스로 자리 잡음.

"하루 1억 개의 모델 호출을 처리한다는 건 정말 무서운 일입니다. 이건 작은 일이 아니에요."


3. Cursor의 핵심 인프라 구성

Cursor의 인프라는 크게 세 가지로 나뉨:

  1. 인덱싱 시스템:

    • 문서와 코드베이스를 효율적으로 검색하고 이해하기 위한 시스템.
    • 대규모 데이터 세트를 처리하며, 사용자 경험을 최적화하기 위해 자동화된 방식으로 작동.
    • 예: 사용자가 에디터를 열면 자동으로 코드베이스를 인덱싱.
  2. 모델 시스템:

    • 자동완성 모델은 사용자가 키를 입력할 때마다 작동하며, 초당 약 20,000개의 모델 호출을 처리.
    • 전 세계적으로 분산된 GPU 인프라를 활용하여 빠른 응답 속도를 제공.
    • 주요 데이터 센터는 미국 동부, 서부, 런던, 도쿄 등에 위치.
  3. 스트리밍 인프라:

    • 사용자 데이터 저장 및 처리.
    • 실시간 상호작용보다는 Cursor의 성능을 지속적으로 개선하기 위한 백그라운드 작업에 사용.

"자동완성은 사용자가 모델을 사용하고 있다는 느낌조차 들지 않게 만드는 것이 목표입니다. 마치 모든 것이 복사-붙여넣기처럼 자연스럽게 느껴져야 하죠."


4. 인프라 설계와 운영의 도전 과제

  • Cursor는 모놀리식 아키텍처를 사용하며, 이를 통해 배포를 단순화.
  • 그러나 서비스 규모가 커지면서 서버 간의 격리(compartmentalization)가 중요해짐:
    • 예: 실수로 작성된 무한 루프 코드가 전체 서비스를 중단시키는 문제를 방지하기 위해 격리된 환경 구축.

"초기에는 모든 것이 하나의 서버에서 실행되었고, 누군가 무한 루프를 작성하면 전체 서비스가 다운되곤 했습니다. 이제는 이런 일이 발생하지 않도록 서버를 격리하고 있습니다."


5. 대규모 인프라에서의 문제 해결 사례

사례 1: 인덱싱 시스템의 문제
  • 문제 발생:
    • 대규모 코드베이스를 인덱싱하는 과정에서 데이터베이스가 과부하로 다운.
    • 사용된 데이터베이스(Yugabyte)가 복잡한 트랜잭션을 처리하지 못해 성능 저하.
  • 해결 과정:
    • 데이터베이스를 PostgreSQL로 전환.
    • 캐시 시스템(DynamoDB)에서 큰 파일이 캐싱되지 않는 문제를 발견하고 수정.
    • 레이스 컨디션(race condition) 문제를 해결하여 시스템 안정화.

"복잡한 데이터베이스를 선택하지 마세요. 단순하고 검증된 솔루션을 사용하는 것이 훨씬 낫습니다."

사례 2: 데이터베이스 용량 초과
  • 문제 발생:
    • PostgreSQL 데이터베이스가 22TB에 도달하며 성능 저하.
    • PostgreSQL의 업데이트 방식(삭제 후 추가)이 문제를 악화시킴.
  • 해결 과정:
    • 데이터베이스의 외래 키(foreign key)를 제거하여 부하 감소.
    • 데이터를 객체 스토리지(blob storage)로 이전하여 데이터베이스 의존도를 줄임.
    • 새로운 시스템을 실시간으로 구축하여 서비스 복구.

"데이터베이스를 확장하는 가장 좋은 방법은 데이터베이스를 없애는 것입니다."


6. 모델 제공자와의 협력

  • Cursor는 여러 모델 제공자(OpenAI, Anthropic 등)와 협력하며, 이들과의 관계는 매우 중요.
  • 모델 호출 제한(rate limit) 문제를 해결하기 위해 여러 제공자와 협상.
  • 제공자 간의 경쟁을 활용하여 더 많은 리소스를 확보.

"우리는 모델 제공자들에게 더 많은 토큰을 요청하며, 그들은 '더 줄 수 없다'고 말합니다. 그러면 우리는 다시 요청하죠. 이게 매일 반복됩니다."


7. 보안 및 프라이버시

  • Cursor는 사용자의 코드를 안전하게 보호하기 위해 다양한 보안 조치를 적용:
    • 데이터는 사용자 디바이스에 저장된 키로 암호화.
    • 벡터 데이터베이스에 저장된 정보는 암호화되어 있어 해독 불가능.

"사용자의 코드를 안전하게 보호하는 것은 우리의 최우선 과제입니다. 이를 위해 가능한 모든 조치를 취하고 있습니다."


8. 학생 질문 및 답변

  • Q: Cursor는 다른 AI 코딩 도구와 어떻게 차별화되나요?

    • Cursor는 단순한 자동완성을 넘어, 코드 작성의 전체 경험을 혁신하는 데 초점을 맞춤.
    • 경쟁 제품이 정체된 동안 Cursor는 지속적으로 발전.
  • Q: Stanford 학생들에게 할인 제공 계획이 있나요?

    • 공식적인 할인은 없지만, 버그를 찾아보고 보고하면 무료 구독을 제공.

"Cursor는 $20의 가치가 충분히 있습니다. 이건 단순한 햄버거 한 끼 이상의 가치를 제공합니다."

  • Q: AI가 ID를 대체할까요?
    • ID는 여전히 프로그래머가 코드를 작성하는 데 필요한 도구로 남을 것.

9. 결론

  • Cursor는 대규모 인프라를 운영하며 얻은 경험과 교훈을 통해 지속적으로 발전.
  • Sualeh Asif는 AI와 인간의 협업이 미래의 소프트웨어 개발을 더욱 창의적이고 효율적으로 만들 것이라고 강조.

"AI는 단순히 반복 작업을 줄이는 도구가 아닙니다. 우리는 AI와 함께 더 복잡하고 창의적인 시스템을 구축할 수 있습니다."