바이브코딩·AI

바이브코딩·AI ·

바이브코딩 서비스, 버셀 말고 내 서버에 올리기 — DB · 도메인 · 월 비용

회원 · 데이터베이스 · 파일 업로드가 있는 서비스는 화면만 있는 사이트처럼 올리기 어려워요. 서버 한 대에 무엇이 들어가는지, 도메인 연결과 매달 드는 돈, 계정을 누구 이름으로 만들지까지 정리했어요.

바이브코딩 강의에서 가장 많이 받는 질문 중 하나가 배포예요. "다 만들었는데 이제 어떻게 세상에 내놓죠?"

검색하면 Vercel · Cloudflare 에 올리는 방법이 많이 나와요. 화면만 있는 사이트라면 그걸로 충분해요.

그런데 회원가입 · 데이터베이스 · 파일 업로드 · 예약 발송이 붙으면 달라져요. 데이터를 어디에 둘지, 매달 얼마를 낼지, 계정을 누구 이름으로 할지까지 정해야 해요.

이 글은 그런 서비스를 내 서버 한 대에 올리는 이야기예요.

배포하면 정확히 무엇이 일어나나요

내 노트북에서 돌리는 서비스는 내 컴퓨터에서만 열려요. 다른 사람이 쓰려면 24시간 켜진 컴퓨터와 고정된 주소가 필요해요.

  • 서버 — 인터넷에 연결된 컴퓨터를 빌려 내 코드를 돌려요.
  • 도메인 — 숫자로 된 서버 주소(IP)에 붙이는 이름표예요.
  • 배포 — 코드를 서버에 올려 실행하고 도메인을 연결하는 일이에요.

앱스토어에 올리는 것도 배포라고 불러요. 그 이야기는 모바일 앱, 어떤 방식으로 만들까에 정리했어요.

서버리스와 내 서버는 무엇이 다른가요

서버리스 (Vercel 등) 서버 한 대 (DigitalOcean 등)
시작 저장소를 연결하면 바로 올라가요 처음 설정이 한 번 필요해요
요금 사용량에 따라 바뀌어요 서버 크기만큼 고정이에요
데이터베이스 · 파일 다른 서비스를 붙이고 따로 내요 같은 서버, 같은 계정 안에 둬요
트래픽이 갑자기 늘면 자동으로 늘고 청구서도 늘어요 느려지면 서버를 한 단계 올려요

에이전시를 할 때 고객사를 여러 방식으로 배포해 봤어요. 초기 스타트업에는 고정 요금이 훨씬 편했어요.

서버리스로 시작한 한 고객사는 트래픽이 갑자기 늘자 청구서가 예상의 다섯 배 넘게 나왔어요. Vercel 과 Supabase 에 매달 1천만 원 넘게 내던 고객사도 있었어요.

서버리스가 나쁜 건 아니에요. 규모가 크고 트래픽을 예측할 수 있다면 자동 확장이 큰 장점이에요. 화면만 있는 랜딩 페이지도 서버리스가 편해요.

서버 한 대에 무엇이 다 들어가나요

예전에는 앱 서버 · 데이터베이스 서버 · Redis 서버를 따로 뒀어요. 레일즈 8 은 SQLite 를 실서버에서도 쓰고, 캐시 · 백그라운드 작업 · 실시간 기능도 데이터베이스 위에서 돌려요. 그래서 서버 한 대면 돼요.

헤이제임스가 고객사 서비스를 올릴 때는 이렇게 나눠요.

필요한 것 어디에 두나요
서버 안 — 도커 컨테이너
데이터베이스 서버 안 — SQLite 파일
오래 걸리는 작업 (메일 · AI 호출 · 예약 발송) 서버 안 — Solid Queue
캐시 · 실시간 알림 서버 안 — Solid Cache · Solid Cable
사용자가 올린 파일 · 이미지 서버 밖 — 파일 저장소 (DigitalOcean Spaces)
서버 통째 백업 DigitalOcean 일일 백업

데이터베이스가 파일이라 백업과 확인도 단순해요. 이 사이트(heyjames.ai)도 레일즈 8 · SQLite · Solid Queue · Kamal 로 돌아가요.

사용자가 늘면 서버를 한 단계씩 올려요. 여러 대로 나눠야 할 만큼 커지면 그때 PostgreSQL 로 옮겨요. 자세한 이유는 왜 루비온레일즈인가에 있어요.

한 달에 얼마 드나요

고객사 서버를 만들 때 쓰는 기준이에요. 서비스 하나 기준, 2026년 9월 기준이에요.

항목 비용 메모
서버 (DigitalOcean 드로플릿) 월 12달러 메모리 2GiB · CPU 1개 · SSD 50GiB
일일 백업 월 3.6달러 서버 요금의 30% · 7일 보관
파일 · 이미지 저장소 (Spaces) 월 5달러 250GiB 정액
컨테이너 이미지 저장소 무료 서비스가 하나일 때
도메인 보통 연 1~2만 원 이름과 끝자리(.com 등)에 따라 달라요
외부 API (AI · 메일 · 문자) 쓴 만큼 서비스마다 따로 결제해요

서버 · 백업 · 파일 저장소를 합치면 월 21달러 안팎이에요. 부가세는 별도예요.

가장 싼 서버는 피하세요. 도커로 레일즈를 돌리면 메모리를 꽤 써요. 메모리 2GB 이상을 권해요.

배포는 어떻게 하나요

Kamal 을 써요. 레일즈를 만든 37signals 가 만든 배포 도구이고, 레일즈 8 에 기본으로 들어 있어요. 하는 일은 세 가지예요.

  1. 내 앱을 도커 이미지로 묶어요. 어느 서버에서든 똑같이 도는 상자예요.
  2. 이미지를 서버에 내려받아 실행해요.
  3. 새 버전을 올릴 때 서비스를 멈추지 않고 바꿔 끼워요.

설정 파일 config/deploy.yml 에 적을 건 몇 줄이에요. 아래는 예시예요.

service: myapp
image: myaccount/myapp
servers:
  web:
    - 123.45.67.89        # 서버 IP
proxy:
  ssl: true
  host: myapp.co.kr       # 연결할 도메인
registry:
  username: myaccount     # 이미지 저장소 계정
  password:
    - KAMAL_REGISTRY_PASSWORD

명령은 두 개예요.

  • kamal setup — 처음 한 번만 해요. 서버에 도커를 깔고 첫 배포까지 해요. 제 시연에서는 5분쯤 걸렸어요.
  • kamal deploy — 그다음부터 써요. 시연에서 두 번째 배포는 2분쯤 걸렸어요.

ssl: truehost 를 적으면 Let's Encrypt 로 HTTPS 인증서를 자동으로 받아요. 도메인이 이 서버를 가리키고 443 포트가 열려 있어야 해요.

이미지를 Docker Hub 에 올린다면 기본 공개 범위를 Private 으로 바꿔 두세요. 공개로 두면 내 코드가 담긴 이미지를 누구나 받을 수 있어요.

명령어가 부담스럽다면 방법이 하나 더 있어요. GitHub 저장소에 코드를 올리면 GitHub Actions 가 빌드하고 kamal deploy 까지 해요. 서버 접속 키 같은 비밀은 저장소 파일이 아니라 Actions Secrets 에 넣어요. 그러면 클로드 코드에 "배포해 줘"라고만 하면 돼요. 헤이제임스가 고객사에 넘기는 방식이에요.

도메인은 어떻게 연결하나요

  1. 가비아 · GoDaddy 같은 곳에서 도메인을 사요.
  2. 서버를 먼저 만들고 IP 주소를 복사해요.
  3. 도메인 관리 화면의 DNS 메뉴에서 A 레코드를 추가해요.
    • 이름: 루트 도메인(myapp.co.kr)이면 @, 서브 도메인(app.myapp.co.kr)이면 app
    • 값: 서버 IP
  4. deploy.ymlhost 에 같은 도메인을 적고 kamal deploy 를 해요.

DNS 변경이 퍼지는 데 시간이 걸릴 수 있어요. 바로 안 열리면 조금 기다렸다 다시 확인하세요.

계정은 누구 이름으로 만들어야 하나요

가장 자주 놓치는 부분이에요. 서버 · 저장소 · API 계정과 결제 카드는 처음부터 회사 것이어야 해요.

외주 개발자 명의로 만들면 청구가 그 사람에게 가요. 그 사람이 키를 회수하거나 연락이 끊기면 서비스가 멈춰요.

계정 챙길 것
DigitalOcean (서버 · 백업 · 파일) 회사 이메일로 가입 · 해외 결제 카드 · 2단계 인증
GitHub (코드) 대표님이나 회사 계정 · 2단계 인증 · 퇴사자는 바로 내보내기
도메인 회사 명의 · 도메인 관리 계정 접근 권한
외부 API (AI · 메일 · 문자 · 결제) 회사 명의로 발급 · 선불형은 자동 충전이나 잔액 알림

몇 가지 더 있어요.

  • DigitalOcean 에 사업자등록번호를 넣어요. Settings → Billing → Tax ID 에 넣으면 사업자 거래로 잡혀 청구서에 부가세가 붙지 않아요. 인보이스는 달러 PDF 라 세금계산서가 아니에요. 경비 처리는 세무사와 확인하세요.
  • 청구 알림을 걸어요. Billing alerts 에 월 50달러쯤 걸어 두면 예상 밖 요금을 바로 알아요.
  • 비밀키는 저장소에 넣지 않아요. 지워도 이력에 남아요. Actions Secrets 에 넣어요.
  • GitHub 계정 보안이 곧 서버 보안이에요. 배포 비밀이 GitHub 에 있으니까요.

저장소를 내 계정으로 넘겨받는 방법은 GitHub 저장소 소유권 이전에 정리했어요.

직접 운영하면 무엇이 부담인가요

솔직하게 적을게요.

  • 처음 설정이 한 번 필요해요. 서버 · 도메인 · 이미지 저장소 계정 · 비밀키를 챙겨야 해요.
  • 백업은 켜야 생겨요. 서버를 만들 때 일일 백업을 같이 설정해요.
  • 서버는 자동으로 커지지 않아요. 느려지면 직접 한 단계 올려요.
  • 국내 서버가 꼭 필요한 경우가 있어요. 공공 · 금융 · 개인정보 국내 보관 요건이 있다면 따로 따져 봐야 해요. 헤이제임스는 DigitalOcean 싱가포르 리전을 써요.

AWS 도 좋은 선택이에요. 다만 옵션이 너무 많아서 처음에는 무엇을 골라야 할지 막막해요. 저도 에이전시 초기에 AWS 를 쓰다가 관리가 복잡해서 DigitalOcean 으로 옮겼어요. 서비스가 커지면 그때 옮겨도 늦지 않아요.

헤이제임스는 어떻게 올리나요

제작 기간에는 헤이제임스 공용 서버에서 검증해요. 운영을 시작할 때 대표님 명의 계정으로 옮겨요.

  1. 대표님 — DigitalOcean 가입 · 카드 등록 · 계정 연결을 해요. 30분쯤이면 돼요.
  2. 헤이제임스 — 그 계정 안에 서버 · 백업 · 파일 저장소를 만들고 배포해요. 반나절쯤 걸려요.
  3. 같이 — 트래픽이 적은 시간에 30분 안팎 점검 시간을 두고 데이터를 옮겨요. 도메인 A 레코드를 새 서버로 바꿔요.
  4. 헤이제임스 — 계정 목록 · 배포 방법 · 복구 방법을 문서로 넘겨요. 헤이제임스 접근은 언제든 끊을 수 있어요.

순서와 준비물은 서버 이전 가이드에 있어요.

4시간 세션에서는 도메인으로 접속되고 결제까지 되는 서비스를 실서버에 올려요. 한 세션에 440만 원(부가세 포함)이에요. 2026년 9월 기준이에요. 소스코드와 저작권 전부, 서버 · 도메인 계정까지 대표님 명의로 넘겨요.

참고한 공식 문서예요. 2026년 9월 기준이에요.

이 글은 유튜브 영상 다섯 편을 정리한 거예요.


쓴 사람 — 제임스
연세대 컴퓨터과학을 전공한 23년차 개발자예요. 개발 에이전시를 운영하며 스타트업 플랫폼 350개를 만들고 직접 배포했어요. React · Next.js · Svelte 를 Vercel 에 올리다 레일즈와 Kamal 로 정착했고, 3,000명에게 개발과 바이브코딩을 가르쳤어요.

바이브코딩·AI 다른 글