AI & Tools

[바이브 코더 #7] 요금 폭탄 안 맞는 법, AI API·DB·호스팅 과금 구조와 5분 안전장치

"자고 일어났더니 클라우드 요금이 수백만 원 나왔어요." 바이브 코딩 커뮤니티에 심심찮게 올라오는, 보는 사람까지 아찔해지는 글입니다. 취미로 만든 앱이 한 달 치 월급을 청구서로 돌려주는 상황이죠. 무서운 건, 이게 특별히 부주의한 사람만 겪는 사고가 아니라는 점입니다. 과금…

이석우iOS Developer5분 읽기
[바이브 코더 #7] 요금 폭탄 안 맞는 법, AI API·DB·호스팅 과금 구조와 5분 안전장치 대표 이미지
BILL SHOCK SET LIMITS IN 5 MINUTES 텍스트와 함께 폭발하는 청구서를 SPENDING LIMIT 차단기 레버와 BUDGET ALERT 종으로 막는 히어로 이미지
폭탄 해체에 필요한 건 전문 지식이 아니라 5분짜리 설정입니다

“자고 일어났더니 클라우드 요금이 수백만 원 나왔어요.” 바이브 코딩 커뮤니티에 심심찮게 올라오는, 보는 사람까지 아찔해지는 글입니다. 취미로 만든 앱이 한 달 치 월급을 청구서로 돌려주는 상황이죠. 무서운 건, 이게 특별히 부주의한 사람만 겪는 사고가 아니라는 점입니다. 과금 구조를 모르면 누구에게나 일어날 수 있습니다.

다행히 요금 폭탄은 원인이 몇 가지로 정해져 있어서, 안전장치를 미리 설치하면 대부분 원천 차단됩니다. 설치에 걸리는 시간은 서비스당 5분입니다. 이번 편에서는 청구서가 어디서 나오는지, 폭탄은 어떤 경로로 터지는지, 그리고 그 5분짜리 안전장치 설정법을 다룹니다.

청구서의 3대 출처

바이브 코딩으로 만든 앱의 요금은 대부분 세 곳에서 나옵니다.

1. AI API — 토큰 단위로 계산됩니다. OpenAI 같은 AI 서비스는 토큰이라는 단위로 과금합니다. 토큰은 대략 “글자 조각”이라고 생각하면 됩니다. 여기서 놓치기 쉬운 게 있는데, 내가 보내는 질문(입력)과 AI가 주는 답변(출력)이 양쪽 모두 과금된다는 것, 그리고 성능 좋은 모델일수록 토큰 단가가 몇 배씩 뛴다는 점입니다. 긴 문서를 통째로 넣고 돌리는 기능, 대화 전체를 매번 다시 보내는 챗봇은 생각보다 빠르게 요금이 쌓입니다.

2. DB — 저장 용량과 읽기·쓰기 횟수입니다. 창고(DB)는 쌓아둔 짐의 양(저장 용량)과 창고 문을 여닫은 횟수(읽기·쓰기)로 요금을 매깁니다. 용량은 서서히 늘지만, 읽기·쓰기 횟수는 코드가 잘못되면 순식간에 폭발할 수 있습니다.

3. 호스팅 — 트래픽과 실행 시간입니다. 서버(Vercel 등)는 방문자에게 내보낸 데이터의 양과 백엔드 코드가 실제로 일한 시간으로 요금을 매깁니다. 원본 크기 그대로 올려둔 대용량 이미지, 오래 걸리는 작업이 여기서 요금을 키웁니다.

폭탄이 터지는 3가지 경로

경로 1: 키 도난. 2편에서 다룬 그 사고입니다. 노출된 API 키를 봇이 주워가서 내 법인카드로 마음껏 긁는 것. 가장 파괴력이 크고, 가장 흔합니다.

경로 2: 내 코드의 무한 반복. 외부 도둑 없이 자폭하는 경우입니다. AI가 짠 코드에 “화면이 새로고침될 때마다 DB를 다시 읽고, 그 읽기가 다시 새로고침을 일으키는” 식의 회로가 숨어 있으면, 사용자 한 명이 앉아만 있어도 초당 수십 번씩 DB와 AI를 호출합니다. 앱은 멀쩡해 보이는데 대시보드의 호출 횟수만 미친 듯이 올라가는 게 특징이죠. 배포 전에 AI에게 “반복적으로 API나 DB를 호출하는 코드가 있는지 검사해줘”라고 시키는 것이 예방책입니다.

경로 3: 예상 밖의 트래픽. 앱이 갑자기 흥하거나(좋은 문제), 봇이 몰려오거나(나쁜 문제). 어느 쪽이든 무방비면 청구서가 커집니다.

키 도난 무한 루프 예상 밖 트래픽 세 경로가 AI API DB 호스팅 청구로 이어지고 지출 한도와 예산 알림으로 방어하는 구조 다이어그램
폭탄의 세 경로가 어디로 흘러 청구서가 되는지, 방어선은 어디인지 한눈에

5분짜리 안전장치: 한도와 알림

여기가 이번 편의 핵심입니다. 세 출처 모두, 대시보드에 지출 한도(spending limit)와 예산 알림(budget alert) 기능이 있습니다. 지금 계정마다 들어가서 딱 두 가지만 설정하면 됩니다.

  • 월 지출 한도: “이 금액을 넘으면 서비스를 멈춰라.” 취미 프로젝트라면 감당 가능한 금액(예: 1만~5만 원)으로 낮게 잡습니다. 한도에 걸리면 앱이 멈추지만, 취미 앱이 하루 멈추는 것과 수백만 원 청구서 중 무엇이 나은지는 굳이 따질 것도 없죠.
  • 예산 알림: “이 금액에 도달하면 이메일을 보내라.” 한도의 50% 지점쯤으로 잡아두면, 폭탄이 자라는 중간에 알아챌 수 있습니다.

서비스별 메뉴 이름은 조금씩 다르지만 보통 Billing, Usage, Budget, Spending limit 같은 이름입니다. 찾기 어려우면 AI에게 “OpenAI에서 월 지출 한도 설정하는 메뉴 어디야?“라고 물으면 바로 안내해줍니다. 무료 플랜만 쓰는 중이라도 알림은 걸어둘 가치가 있습니다. 무료 한도 소진은 6편에서 봤듯 “어제는 됐는데 오늘 안 되는” 조용한 범인이기도 하니까요.

그리고 2편의 원칙이 여기서 다시 한 번 방어선이 됩니다. 키는 백엔드에만. 키가 안 새면 경로 1은 아예 막힙니다.

ONE HIDDEN LOOP CAN DRAIN YOUR WALLET 문구와 함께 INFINITE LOOP 쳇바퀴를 도는 코드가 API CALLS DB READS 통으로 동전을 쏟아내는 일러스트
도둑 없이도 폭탄은 터집니다. 쳇바퀴는 내 코드 안에 있거든요

이미 맞았다면

청구서를 받고 심장이 내려앉았다면, 순서는 이렇습니다.

  1. 출혈부터 멈춥니다. 도난이 의심되면 키를 즉시 폐기·재발급하고(2편), 무한 반복이 의심되면 배포를 일시 중단하거나 문제 기능을 내립니다.
  2. 원인을 확인합니다. 각 서비스 대시보드의 Usage 그래프를 보면 언제부터, 어떤 호출이 폭증했는지 보입니다.
  3. 지원팀에 연락합니다. 특히 첫 사고이고 도난·실수가 원인이면, 사정을 설명했을 때 요금을 감면해주는 사례가 실제로 적지 않습니다. 밑져야 본전이니 반드시 문의하세요.
  4. 재발 방지 장치를 겁니다. 위의 한도와 알림을 이번에는 꼭 설정합니다.

정리

  • 요금은 AI API(토큰), DB(용량·읽기·쓰기), 호스팅(트래픽·실행 시간) 세 곳에서 나옵니다.
  • 폭탄 경로는 키 도난, 코드의 무한 반복, 예상 밖 트래픽 세 가지입니다.
  • 최선의 방어는 서비스당 5분짜리 설정입니다. 월 지출 한도 + 예산 알림.
  • 배포 전에 AI에게 “반복 호출 코드 검사”를 시키고, 키는 백엔드에만 둡니다.
  • 이미 맞았다면 출혈 중지 → 원인 확인 → 지원팀 문의 → 안전장치 설치 순서입니다.

다음 편이 시리즈 마지막입니다. 사용자를 받기 전에 확인해야 할 보안 최소 체크리스트, 그리고 1편부터 이어온 지도를 한 장으로 정리합니다.

이어서 읽기