GitHub Copilot vs Cursor vs Codeium: 2주간 직접 써본 솔직한 비교 (2026년 3월 기준)


월 초에 사이드 프로젝트를 새로 시작했다. Next.js 14 + TypeScript + Prisma 스택으로 소규모 SaaS를 만드는 프로젝트였는데, 마침 회사에서 AI 어시스턴트 라이선스 갱신 시즌이 겹쳤다. “어차피 새 프로젝트 시작하는 김에 제대로 비교해보자”는 생각에 2주 동안 세 도구를 번갈아 써보기로 했다. GitHub Copilot은 원래 쓰던 거고, Cursor와 Codeium은 이번에 진지하게 파봤다.

결론부터 말하면 — 기대했던 것과 다른 결과가 나왔다.

실험 환경과 내가 중요하게 본 기준

나는 MacBook Pro M3(16GB)에서 VS Code를 쓴다. 팀은 나 포함 4명 — 프론트엔드 2명, 백엔드 2명. 주로 TypeScript와 Python을 다루고, 가끔 Go가 섞인다. AI 어시스턴트를 평가할 때 내가 중요하게 보는 건 세 가지다.

  1. 코드 완성 품질 — 단순 자동완성이 아니라 내 의도를 얼마나 파악하는가
  2. 프로젝트 컨텍스트 이해 — 파일 하나가 아니라 코드베이스 전체를 이해하는가
  3. 실제 속도 향상 — 느껴지는 게 있는가, 아니면 그냥 플라시보인가

가격도 당연히 봤다. 혼자 쓸 때랑 팀으로 쓸 때 비용 구조가 다르니까.

GitHub Copilot: 익숙함이 주는 함정

솔직히 Copilot은 2년 넘게 써왔고, 나름 만족하고 있었다. 그래서 이번 비교에서 의도적으로 더 비판적으로 봤다.

좋은 점부터. 인라인 자동완성은 여전히 자연스럽다. 반복적인 패턴들 — CRUD API 엔드포인트, 타입 정의, 테스트 케이스 뼈대 같은 것들. 손가락이 Tab 키를 누르기도 전에 원하는 코드가 뜨는 느낌이 있다. 이 부분은 진짜다.

문제는 최신 라이브러리를 다룰 때 생겼다. Prisma로 복잡한 쿼리를 짜고 있었는데, Copilot이 계속 버전이 맞지 않는 API를 제안하는 거다. Prisma v6에서 일부 API가 바뀌었는데 구버전 패턴을 고집했다. 처음엔 내가 뭘 잘못 쓴 줄 알고 한참 문서를 뒤졌다. 이런 일이 두 번 있었다.

// Copilot이 제안한 코드 (v5 시절 패턴)
const users = await prisma.user.findMany({
  where: {
    posts: { some: { published: true } },
  },
  select: {
    id: true,
    email: true,
    // password는 수동으로 제외해야 했다
  },
});

// v6에서 실제로 쓴 코드
// omit 필드가 생겼다 — Copilot은 이걸 몰랐다
const users = await prisma.user.findMany({
  where: {
    posts: { some: { published: true } },
  },
  omit: {
    password: true, // v6 신규 기능
  },
});

Copilot Business 플랜(월 $19/사용자)에 GPT-4o 기반 채팅 기능이 있긴 하다. 근데 프로젝트 전체 컨텍스트를 묻는 질문에는 아직 약하다. @workspace 이 프로젝트에서 인증 흐름이 어떻게 되어 있어?라고 물으면 대충 맞는 것 같으면서도 틀린 답이 나온다. 파일 여러 개를 동시에 파악하는 능력이 경쟁 도구들에 비해 뒤처진다는 느낌을 지우기 어려웠다.

One thing I noticed: Copilot의 가장 큰 장점은 역설적으로 VS Code 네이티브라는 점이다. 새로운 학습 곡선이 없다. 그냥 설치하고 쓴다. 팀원 중에 새 도구 적응을 싫어하는 사람이 있다면 이게 의외로 중요한 요소가 된다.

실용적 결론: 일상적인 코드 작업에서는 충분하다. 근데 최신 라이브러리나 빠르게 변하는 프레임워크를 많이 다루는 프로젝트라면 한계를 꽤 자주 마주친다.

Cursor: IDE를 갈아탄다는 건 이런 거구나

Cursor를 제대로 써본 건 이번이 두 번째다. 첫 번째는 작년에 잠깐 써보다가 “VS Code 확장이랑 설정 다 옮기기 귀찮아서” 포기했다. 이번엔 세팅에 시간을 제대로 투자했다.

처음 이틀은 솔직히 불편했다. VS Code 기반이라고는 해도 UI 세부 사항이 조금씩 달라서 자꾸 엉뚱한 키를 눌렀다. Vim 플러그인 설정도 살짝 달라서 처음에 헤맸다.

사흘째부터 달라졌다.

Cursor의 핵심은 Composer 기능이다. 단순히 코드를 자동완성해주는 게 아니라, “이 컴포넌트에 무한 스크롤 추가해줘, 기존 useFetch 훅이랑 호환되게”라고 말하면 실제로 여러 파일을 동시에 수정한다. 그리고 그 수정이 꽤 똑똑하다.

// 내가 기존에 쓰던 훅 (Cursor에게 컨텍스트로 보여줬다)
function useFetch<T>(url: string, options?: RequestInit) {
  const [data, setData] = useState<T | null>(null);
  const [loading, setLoading] = useState(true);
  const [error, setError] = useState<Error | null>(null);
  // ... 에러 처리, cleanup 로직
  return { data, loading, error };
}

// "무한 스크롤 버전 만들어줘" 했을 때 Cursor가 생성한 훅
// 포인트: 기존 useFetch와 에러 처리 패턴을 맞췄다
function useInfiniteFetch<T>(
  getUrl: (page: number) => string,
  options?: RequestInit
) {
  const [pages, setPages] = useState<T[][]>([]);
  const [page, setPage] = useState(1);
  const [hasMore, setHasMore] = useState(true);
  const [error, setError] = useState<Error | null>(null); // 동일한 패턴 유지
  const [loading, setLoading] = useState(false);

  const loadMore = useCallback(async () => {
    if (!hasMore || loading) return;
    // ...
  }, [page, hasMore, loading]);

  return { pages, loadMore, hasMore, loading, error };
}

기존 코드 스타일을 파악하고 거기에 맞춰 새 코드를 만든다. 이 부분에서 Copilot과 체감 차이가 제일 컸다.

내가 저질렀던 실수를 솔직히 말하자면 — Cursor의 Apply 기능을 너무 믿었다. Cursor가 제안한 변경 사항을 검토 없이 “Accept All” 해버렸다가, 기존 타입 체크 로직이 조용히 사라진 걸 30분 뒤에 발견했다. TypeScript 컴파일은 됐는데 런타임에서 터졌다. 그 이후론 반드시 diff를 눈으로 확인한다. 당연한 말인데 실제로 잘 안 하게 된다 — 이게 함정이다.

가격은 Pro 플랜이 월 $20. 성능 차이를 감안하면 납득 가는 수준이다. 다만 팀 플랜은 별도 요금이라 4명 팀 기준으로 계산하면 비용이 올라간다.

So, Cursor의 가장 큰 단점은 IDE 전환 비용이다. VS Code 확장 호환성이 95% 정도 된다고 하는데, 그 5%가 나한테 중요한 확장일 수 있다. 실제로 내가 쓰던 GitHub Actions 관련 확장이 초반에 이상하게 동작했다. 지금은 거의 해결됐지만 세팅에서 시간을 꽤 잡아먹었다.

실용적 결론: 여러 파일에 걸친 리팩토링이나 복잡한 기능 추가 작업이라면 Cursor의 체감 생산성 향상이 셋 중 가장 크다. 단, IDE 전환 비용을 감수할 의지가 있어야 한다.

Codeium: 사실 이게 제일 의외였다

Codeium은 기대를 낮추고 들어갔다. “무료니까 어디까지 되나 보자” 심정이었다. 아니었다.

Codeium(현재 Windsurf Editor로도 나와 있다)의 자동완성은 최신 라이브러리 지식이 Copilot보다 정확했다. Prisma v6 문제가 없었다. prisma.를 타이핑하면 최신 API 패턴이 나왔다. 모델 학습 데이터 컷오프 차이 때문인지 정확한 이유는 모르겠지만, 체감상 확실히 달랐다.

무료 플랜으로도 꽤 많은 기능을 쓸 수 있다. 개인 프로젝트나 사이드 프로젝트 수준이라면 무료로 충분할 수 있다. 팀 플랜은 월 $12/사용자로 셋 중에 가장 저렴하다.

Here is the thing: Codeium의 Cascade(채팅·편집 기능)는 Cursor의 Composer만큼은 아니다. 컨텍스트를 여러 파일에 걸쳐 이해하는 능력이 Cursor에 비해 약간 떨어진다고 느꼈다. “이 API 응답 타입이랑 연관된 모든 컴포넌트 업데이트해줘” 같은 요청은 Cursor가 더 잘 처리했다. 한 파일 범위 작업에서는 충분한데, 프로젝트 전체를 동시에 다루는 작업에서는 차이가 난다.

VS Code 확장으로 설치할 수 있어서 환경 이전 부담이 없다. JetBrains, Neovim 지원도 있다. 팀에 에디터 취향이 각각 다른 사람들이 있다면 이게 의외로 중요한 장점이 된다.

한 가지 아쉬운 점은 — 가끔 자동완성이 뜨는 타이밍이 어색하다. Copilot이나 Cursor에 비해 살짝 늦는 느낌이 들 때가 있다. 밀리초 단위 차이겠지만 타이핑 리듬에 영향을 주는 건 사실이다. 내 네트워크 환경 탓일 수도 있어서 100% 확신하지는 않는다.

실용적 결론: 비용이 제약이라면 Codeium은 진지하게 고려할 만하다. 무료 플랜의 품질이 생각보다 훨씬 높다. 특히 최신 라이브러리 지식 정확도는 Copilot을 앞선다.

결국 내가 실제로 선택한 것

나 개인은 Cursor로 갔다. 복잡한 기능 구현이나 리팩토링에서 체감 차이가 실제로 크다. Composer로 여러 파일을 동시에 다루는 워크플로우에 익숙해지고 나서는 돌아가기가 불편해졌다. 월 $20은 내 시간의 가치를 생각하면 충분히 납득된다.

팀으로는 조금 복잡하다. 우리 팀은 결국 두 그룹으로 나뉘었다. Cursor를 쓰고 싶은 사람들과 에디터 바꾸기 싫은 사람들. 에디터를 바꾸기 싫은 팀원에게는 Codeium을 추천했다. Copilot을 계속 쓰는 팀원도 있는데 — 솔직히 Copilot은 이제 가격 대비 경쟁력이 떨어진다고 생각한다. 비슷한 가격에 Cursor가 낫고, 더 저렴하게 Codeium이 있다.

Copilot이 아직 의미 있는 경우는 GitHub Enterprise를 쓰는 조직이다. 코드가 외부로 전송되지 않는 보안 옵션, GitHub Actions·Issues와의 통합, 조직 단위 관리 기능이 필요하다면 Copilot이 현실적인 선택지다. 스타트업 초기에는 별로 관계없는 얘기지만, 금융·의료처럼 규제가 있는 산업이라면 다를 수 있다.

마지막으로 하나만 — 어떤 도구를 쓰든 AI가 생성한 코드를 검토하는 습관을 버리면 안 된다. 도구가 좋아질수록 코드를 무비판적으로 받아들이고 싶은 유혹도 커진다. 나도 이번에 실수했지만, AI가 자신감 있게 잘못된 코드를 내놓는 경우는 아직도 꽤 있다. 그게 더 위험하다.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top