Vercel Hobby 플랜은 기본이 "AI 학습 옵트인"입니다
온프레미스로 돌아가던 서비스를 Vercel + Supabase로 옮겨보는 중이었습니다.
Supabase 설정을 다 끝내고 이제 Vercel에 Import만 하면 되는 단계에서,
문득 예전에 어디선가 본 이야기가 떠올랐습니다.
"Vercel이 무료 플랜 코드로 AI 학습한다고 하지 않았나?"
기억에 의존해서 넘길 문제가 아니라 약관을 직접 확인했습니다. 사실이었습니다.
플랜별로 기본값이 다릅니다
2026년 3월 약관 개정으로 정리된 내용입니다.
| 플랜 | 기본값 |
|---|---|
| Hobby (무료) · Trial Pro | 학습에 옵트인 - 기본으로 켜져 있음 |
| Pro (유료) | 옵트아웃 - 기본으로 꺼져 있음 |
| Enterprise | 학습에 사용하지 않음 |
돈을 내면 꺼져 있고, 무료면 켜져 있습니다. 흔한 구조이긴 하지만
"무료 호스팅"만 생각하고 들어가면 놓치기 쉬운 부분입니다.
무엇이 들어가고 무엇이 빠지나요
학습 데이터에 포함되는 것
- 코드
- 에이전트 채팅
- 빌드·배포 텔레메트리 (빌드 에러 포함)
- 집계 트래픽 통계
제외되는 것
- 계정 정보 (이름, 이메일, 청구지 주소)
- 환경변수, API 키 등 민감 정보는 익명화 처리 후 사용
여기서 오해하기 쉬운 지점이 있습니다.
"환경변수는 안전하다"와 "코드는 안전하다"는 완전히 다른 이야기입니다.
DB 접속 문자열이나 API 키가 빠진다는 건 다행이지만,
정작 사업 자산인 건 대개 코드 쪽입니다. 저처럼 고객사에 반복 적용할
스타터킷이나 내부 템플릿을 담고 있는 저장소라면 더욱 그렇습니다.
마감일이 이미 지났습니다
이 부분이 가장 중요합니다.
- 옵트아웃 마감: 2026년 3월 31일 23:59:59 PST
- 마감 전에 옵트아웃했다면 → 데이터가 학습에 아예 쓰이지 않음
- 마감 후에 옵트아웃하면 → 이후 공유만 중단, 소급되지 않음
즉 지금 시점에서 옵트아웃은 "앞으로 주지 않겠다"는 의미이지
"지금까지 준 것을 회수하겠다"는 뜻이 아닙니다.
이미 Hobby 플랜으로 배포해둔 프로젝트가 있으시다면, 그건 되돌릴 수 없습니다.
그래도 지금이라도 끄시는 게 맞습니다. 앞으로의 배포는 막을 수 있으니까요.
그래서 순서를 바꿨습니다
저는 아직 코드를 한 줄도 올리지 않은 상태였습니다. 그게 유일한 행운이었습니다.
Import부터 하고 나중에 설정을 찾았다면 이미 빌드가 몇 번 돌아간 뒤였을 것입니다.
그래서 순서를 이렇게 잡았습니다.
- Vercel 계정 / 팀 생성 - GitHub 연결까지만
- Team Settings → Data Preferences 에서 옵트아웃 ← 먼저
- 그다음에 프로젝트 Import + Deploy
코드가 업로드되기 전에 이미 꺼져 있으니, 학습 파이프라인에 들어갈 것 자체가 없습니다.
반대 순서로 하면 그 사이에 돌아간 빌드가 애매해집니다.
설정 위치: 대시보드 → Team Settings → Data Preferences
(프로젝트 설정이 아니라 팀 설정입니다. 프로젝트 단위 설정도 있으니 둘 다 확인하시는 게 좋습니다.)
GitHub App 권한도 함께 좁힙니다
Vercel에서 저장소를 연결할 때 두 가지 선택지가 나옵니다.
- All repositories - 편합니다. 그리고 필요 이상입니다.
- Only select repositories - 올릴 저장소 하나만 고릅니다.
프로젝트로 만들지 않은 저장소까지 학습에 쓴다는 근거는 없습니다.
다만 필요 없는 권한을 주지 않는 것은 그것과 별개의 원칙입니다.
비공개 저장소가 여럿 있는 계정이라면 특히 그렇습니다.
Vercel이 나쁘다는 이야기는 아닙니다
균형을 위해 적어둡니다.
- 약관에 명시돼 있고, 개정 시 공지도 했습니다
- 옵트아웃 수단을 셀프서비스로 제공합니다
- 환경변수·API 키·계정 정보는 제외합니다
- 유료 플랜은 기본이 꺼짐입니다
숨긴 것이 아니라 읽지 않으면 모르는 구조입니다.
그리고 무료 서비스에서 이건 예외가 아니라 점점 기본값이 되어가고 있습니다.
Vercel만 확인할 일이 아니라, 새 플랫폼에 코드를 올릴 때마다 한 번씩 볼 일입니다.
판단 기준
정책을 알고 나면 결정은 목적에 따라 갈립니다.
개인 실험 · 학습 목적
옵트아웃하고 쓰시면 됩니다. 잠깐 띄웠다 지우는 용도라면 과하게 걱정할 일은 아닙니다.
고객 서비스 · 사업 자산
유료 플랜(기본 옵트아웃)을 쓰시거나, 자체 인프라를 유지하는 편이 낫습니다.
"무료로 시작해서 나중에 옮기지" 는 생각보다 비용이 큰 선택일 수 있습니다.
소급이 안 되기 때문입니다.
어느 쪽이든
약관은 바뀝니다. 지금 확인한 내용도 다음 개정에서 달라질 수 있습니다.
플랫폼을 바꾸거나 플랜을 옮기실 때 한 번씩 다시 보시길 권합니다.
남는 교훈
기술 검증은 꼼꼼히 하면서 약관은 읽지 않는 경우가 많습니다.
저도 Supabase 커넥션 풀러 모드를 파고들고, 트랜잭션이 실제로 도는지
로컬에서 붙여서 확인까지 해놓고, 정작 "이 코드가 어디로 가는가"는
배포 직전에야 떠올렸습니다.
인프라 결정에서 약관은 기술 스펙의 일부입니다.
어느 리전에 배포되는지, 커넥션을 몇 개 열 수 있는지 확인하는 것과
내 코드가 학습에 쓰이는지 확인하는 것은 같은 층위의 검토 항목입니다.
체크리스트에 한 줄 추가했습니다.
새 플랫폼에 코드를 올리기 전에, 무료 플랜의 데이터 사용 조항을 읽는다.
참고
- Updates to Terms of Service - Vercel Changelog (2026년 3월)
- Vercel AI Product Terms
- Vercel Terms of Service
본문의 정책 내용은 2026년 7월 기준으로 확인한 것입니다. 약관은 개정될 수 있으니
실제 적용 전에 원문을 확인하시길 권해드립니다.
관련 글
온프레미스로 돌던 서비스를 Vercel + Supabase 로 옮기고 워커를 분리하기까지,
같은 작업에서 나온 기록입니다.
- Supabase에 붙었더니 ENOTFOUND: 직결, 풀러(Supavisor), 그리고 IPv6
직결 주소가 IPv6 전용이라 붙지 않는 문제와, 커넥션 풀러의 두 가지 모드. - Cloudflare Tunnel로 Vercel을 연결하면 안 되는 이유
DEPLOYMENT_NOT_FOUND 를 응답 헤더로 추적한 기록과 도메인 연결 방식 선택. - 서버리스 환경의 백그라운드 작업 분리: Upstash QStash + Redis 적용
큐 드라이버 경계 설계, 워커 엔드포인트 서명 검증, 멱등성. - 큐 드라이버를 memory에서 Upstash로 전환하기: 준비와 점검
전환 전 상태를 동작으로 확인하는 법과 각 환경변수의 역할.
함께 읽기
- 큐 드라이버를 memory에서 Upstash로 전환하기: 준비와 점검앞선 글에서 백그라운드 작업을 분리하는 코드를 만들었습니다.
- Cloudflare Tunnel로 Vercel을 연결하면 안 되는 이유Vercel 배포는 성공했습니다. 프로젝트명.vercel.app 으로 접속하면 잘 뜹니다.
- 블로그를 서브도메인에서 하위 경로로 옮긴 이유, 그리고 CSP가 애드센스를 막고 있었습니다회사 사이트와 기술 블로그를 따로 운영하는 구성은 흔합니다. 회사는 duolabs.co.kr, 블로그는 blog.duolabs.co.kr.
- 운영에서만 AI 답변이 한 번에 나온다면, nginx가 스트림을 삼키고 있습니다챗봇 답변을 한 글자씩 흘려보내는 것은 기술적 과시가 아닙니다. 사람이 기다릴 수 있게 만드는 장치입니다. 같은 5초라도 빈 화면을 보는 5초와 글자가 차오르는 5초는 완전히 다른 시간입니다.
- 요금제를 올려도 아키텍처는 살 수 없다무료 티어에서 걸린 문제들을 Pro 요금제로 올리면 몇 개가 사라질까. 세어보니 용량 문제는 전부 지워졌는데 블로커는 오히려 하나 늘었다. 돈으로 사는 것과 못 사는 것의 경계에 대한 기록.