2 minute read

“데이터베이스 붙여 줘.” 이 한마디를 던지면 에이전트는 무엇을 설치할까. SQLite일까, PostgreSQL일까, 아니면 그냥 코드로 때워 버릴까. r/claudecode에 이 궁금증을 118번의 실행으로 답한 사람이 나타났다. 물어본 게 아니다. 실제 코드에 무엀이 남는지를 세었다.

말이 아니라 diff를 쟀다

실험 설계가 꽤 단단하다. 백지 상태의 스타터 저장소 두 개(Next.js+TS, Python+FastAPI)를 준비하고, SDK도 설정 파일도 없이 시작했다. 결과에 영향을 줄 만한 힌트를 전부 걷어낸 것이다. 프롬프트는 “add persistence”, “let users upload files” 같은 식으로 카테고리마다 세 가지 표현을 섞었고, 도구 이름은 한 번도 언급하지 않았다.

실행은 헤드리스 Claude Code에 Sonnet 5.5. 선택이 확정되는 순간, 대개는 의존성 하나가 설치되는 지점에서 멈췄다. 열 개 카테고리를 돌아 총 118번, API 비용은 19달러 남짓 들었다. 쓰겠다고 말한 것과 실제로 쓰는 것 사이의 간극을 원천적으로 피하는 측정법이다.

승자는 확실하고, 나머지는 직접 짠다

숫자부터. 결제는 Stripe가 12/12, 에러 모니터링은 Sentry가 12/12. 한 분야에 압도적인 강자가 서 있으면 에이전트는 거기로 곧장 간다.

나머지는 전혀 다르게 굴러간다. 인증은 12번 전부 JWT와 세션을 손수 구현했다. Auth0 같은 인증 벤더는 단 한 번도 등장하지 않았다. 실험한 사람 본인이 가장 놀랐다는 부분이 바로 여기다. 캐싱도 12/12 자체 구현. 파일 저장은 로컬 디스크 10, S3 2. 이메일은 날것의 SMTP 10, Resend 2. 데이터베이스는 SQLite 9, 직접 띄운 PostgreSQL 3. 배포는 그냥 Docker가 7로 1위였다. 백그라운드 잡은 시도한 경우마다 만들어 썼고, 두 번은 아예 되물으며 멈춰 서기도 했다.

패턴은 명확하다. 그 분야를 대표하는 자리가 하나로 굳어 있으면 물려받고, 그렇지 않으면 남의 코드를 가져오는 대신 짠다. 프롬프트에 이름이 없으면, 그 짧은 명단 밖의 벤더는 처음부터 선택지에 없던 셈이다.

에이전트의 기본값이 곧 시장이다

이 데이터가 불편할 수밖에 없는 쪽이 있다. SaaS 벤더들이다. 지금까지의 마케팅은 개발자의 뇌리 속 자리 싸움이었다. 문서와 SEO, 개발자 경험으로 “이 기능 하면 떠오르는 회사”가 되려고 경쟁해 왔다. 에이전트 시대에는 그 자리를 모델이 학습한 분포가 대신 앉는다. 그리고 모델은 Stripe와 Sentry급의 최상위 몇몇만 편하게 떠올리고, 나머지는 코드로 지워 버린다.

인증의 0벤더 결과는 보는 각도에 따라 무섭다. 직접 짠 인증이 보안 사고의 단골 시작점이라는 건 업계의 오랜 교훈인데, 에이전트의 첫 반응은 정확히 그 반대 방향이었다. 물론 이건 운영과 규제까지 내다본 판단이 아니다. 하나의 모델, 두 개의 스택, 프로덕션 배포가 아니라 첫 직관에 대한 데이터라는 한계를 작성자도 스스로 짚었다. Codex와의 비교가 다음 순서고, 카테고리별 전체 결과와 모든 실행 기록은 whatagentspick.com에서 공개 중이다.

정리

이 실험이 마음에 남는 건 질문이 소박해서다. 다들 에이전트가 얼마나 똑똑해졌는지에만 목을 매는데, 이 사람은 에이전트가 무엇에 익숙한지를 물었다. 그 습관이 앞으로의 시장 지도를 그릴 거라는 것까지 보여 줬다. 다음에 무언가를 붙여 달라고 시키는 순간, 선택지는 이미 상당 부분 정해져 있을지 모른다. 그 사실을 아느냐 모르느냐는, 파는 쪽이든 쓰는 쪽이든 꽤 큰 차이가 된다.