B Builder로그
Builderlog ·미니앱 출시기 ⑧ ·2026.06.26 ·2 분 읽기

무료인 줄 알았는데 청구서가 왔다

#무료플랜#인프라비용#API요금#사이드프로젝트#클라우드비용

앱 출시하고 나서 가장 뿌듯한 순간 중 하나가 “이거 공짜로 돌아가고 있어”라고 혼자 흐뭇해하는 그 순간인데요. 저도 그랬거든요. 지난달까지는요.

흐뭇함이 오래가지 않았어요

편의점 1+1 행사 앱, 꽤 조용히 굴러가고 있었어요. DAU도 세 자릿수 초반이었고, 무료 플랜으로 묶어놓은 서비스가 세 개쯤 됐어요. 알림 API 하나, 이미지 최적화 CDN 하나, 그리고 DB 호스팅 하나.

문제는 어느 커뮤니티에 제 앱이 슬쩍 언급되면서 생겼어요. 하루 만에 트래픽이 평소의 6~7배쯤 튀었거든요. 급격한 성장이라기보다 그냥 스파이크. 이틀 지나니 원래대로 돌아왔어요.

그런데 그 이틀이 문제였어요.

스파이크에서 청구서까지

01 평소 DAU 세 자릿수 초반 · 무료 플랜 3개
02 커뮤니티에 언급 이틀간 트래픽 6~7배
03 무료 한도 초과 API 호출 · CDN GB · DB 연결
04 자동 과금 무료 구간을 넘어 청구
05 청구서 적은 금액 — 그래서 더 무섭다
무료 플랜은 조건이 아니라 구간 — 평소가 아니라 '최악의 하루'에 맞춰야 한다.

무료 플랜은 ‘구간’이지 ‘조건’이 아니더라고요

청구서를 받고 나서야 제대로 읽었어요, 각 서비스 요금 페이지를. 무료 플랜의 구조가 생각보다 다양했거든요.

  • 알림 API는 월 호출 수 기준이었는데, 스파이크 이틀에 한 달 치 무료 한도를 거의 다 써버렸어요.
  • CDN은 대역폭 GB 기준이었어요. 이미지가 많은 앱이라 평소에도 빠듯했는데, 트래픽 튀던 날 그냥 넘어버렸어요.
  • DB 호스팅은 연결 수 한도가 있었어요. 이건 청구는 안 됐고 그냥 에러가 났어요. 어떻게 보면 이게 더 나았을 수도.

무료 플랜의 한도는 ‘평소 트래픽’이 아니라 ‘최악의 하루’에 맞춰야 한다는 걸 그제야 알았어요.

금액이 크진 않았는데, 그게 또 묘하게 더 찜찜했어요

총 청구 금액이 커서 충격받은 게 아니었어요. 오히려 생각보다 적은 금액이 찍혀 있었는데, 그게 더 무서웠어요. 이 정도 스파이크에 이 정도면, 진짜 바이럴이라도 한 번 됐으면 어떻게 됐을까 싶어서요.

그때부터 각 서비스마다 지출 알림이랑 하드 캡 설정을 뒤졌어요. 지원하는 곳도 있고 아닌 곳도 있었는데, 아닌 곳은 그냥 플랜을 갈아탔어요. 조금 더 내더라도 한도가 명확한 쪽이 낫더라고요.

예산 상한선이 없는 ‘무료’는 사실 무료가 아닐 수 있어요.

지금 제가 하는 것

무료 플랜 세 개를 다 그대로 쓰고 있어요. 대신 바뀐 게 있다면, 각 서비스 대시보드에 사용량 80% 도달 알림을 달아뒀어요. 가능한 곳은 월 초에 카운터를 확인하는 걸 루틴으로 넣었고요.

귀찮긴 한데, 이게 안 되어 있으면 또 비슷한 날에 또 같은 표정으로 청구서를 받게 될 것 같아서요.

무료 플랜을 잘 쓰는 건 한도를 아는 것보다 한도를 모니터링하는 습관에 더 가깝더라고요.

한 줄로 정리하면

무료 구간의 함정은 요금표가 아니라 내 트래픽 패턴과 한도가 어긋나는 그 순간에 있었어요.

다음 편에서는 이 사건 이후에 인프라 구조를 조금 바꿔봤는데, 바꾸면서 또 다른 게 부서진 이야기를 해볼게요.