바이브코딩·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 에 기본으로 들어 있어요. 하는 일은 세 가지예요.
- 내 앱을 도커 이미지로 묶어요. 어느 서버에서든 똑같이 도는 상자예요.
- 이미지를 서버에 내려받아 실행해요.
- 새 버전을 올릴 때 서비스를 멈추지 않고 바꿔 끼워요.
설정 파일 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: true 와 host 를 적으면 Let's Encrypt 로 HTTPS 인증서를 자동으로 받아요. 도메인이 이 서버를 가리키고 443 포트가 열려 있어야 해요.
이미지를 Docker Hub 에 올린다면 기본 공개 범위를 Private 으로 바꿔 두세요. 공개로 두면 내 코드가 담긴 이미지를 누구나 받을 수 있어요.
명령어가 부담스럽다면 방법이 하나 더 있어요. GitHub 저장소에 코드를 올리면 GitHub Actions 가 빌드하고 kamal deploy 까지 해요. 서버 접속 키 같은 비밀은 저장소 파일이 아니라 Actions Secrets 에 넣어요. 그러면 클로드 코드에 "배포해 줘"라고만 하면 돼요. 헤이제임스가 고객사에 넘기는 방식이에요.
도메인은 어떻게 연결하나요
- 가비아 · GoDaddy 같은 곳에서 도메인을 사요.
- 서버를 먼저 만들고 IP 주소를 복사해요.
- 도메인 관리 화면의 DNS 메뉴에서 A 레코드를 추가해요.
- 이름: 루트 도메인(
myapp.co.kr)이면@, 서브 도메인(app.myapp.co.kr)이면app - 값: 서버 IP
- 이름: 루트 도메인(
deploy.yml의host에 같은 도메인을 적고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 으로 옮겼어요. 서비스가 커지면 그때 옮겨도 늦지 않아요.
헤이제임스는 어떻게 올리나요
제작 기간에는 헤이제임스 공용 서버에서 검증해요. 운영을 시작할 때 대표님 명의 계정으로 옮겨요.
- 대표님 — DigitalOcean 가입 · 카드 등록 · 계정 연결을 해요. 30분쯤이면 돼요.
- 헤이제임스 — 그 계정 안에 서버 · 백업 · 파일 저장소를 만들고 배포해요. 반나절쯤 걸려요.
- 같이 — 트래픽이 적은 시간에 30분 안팎 점검 시간을 두고 데이터를 옮겨요. 도메인 A 레코드를 새 서버로 바꿔요.
- 헤이제임스 — 계정 목록 · 배포 방법 · 복구 방법을 문서로 넘겨요. 헤이제임스 접근은 언제든 끊을 수 있어요.
순서와 준비물은 서버 이전 가이드에 있어요.
4시간 세션에서는 도메인으로 접속되고 결제까지 되는 서비스를 실서버에 올려요. 한 세션에 440만 원(부가세 포함)이에요. 2026년 9월 기준이에요. 소스코드와 저작권 전부, 서버 · 도메인 계정까지 대표님 명의로 넘겨요.
- 배포 말고도 출시 전에 남은 게 있다면 출시 못 하는 나머지 20%를 보세요.
- 지금 서비스가 4시간 분량인지는 셀프 견적에서 확인할 수 있어요. 바로 진행하려면 예약 신청을 남겨 주세요.
- 직접 배우고 싶다면 클로드 코드로 레일즈 풀스택 개발 강의가 있어요.
참고한 공식 문서예요. 2026년 9월 기준이에요.
이 글은 유튜브 영상 다섯 편을 정리한 거예요.
- 만든 앱, 어떻게 세상에 내놓지? 웹과 앱 배포
- 서버 설정 필요 없음! 도커 몰라도 Kamal 이 레일즈 앱을 배포해 줍니다
- 클로드 코드에 멀티 페르소나 에이전트 + 레일즈 MCP 세팅하는 법, Kamal 배포 설명
- Rails 8 이 PostgreSQL 대신 SQLite 를 권하는 진짜 이유
- React, Next.js, Svelte, Supabase 좋다면서 왜 레일즈만 써요?
쓴 사람 — 제임스
연세대 컴퓨터과학을 전공한 23년차 개발자예요. 개발 에이전시를 운영하며 스타트업 플랫폼 350개를 만들고 직접 배포했어요. React · Next.js · Svelte 를 Vercel 에 올리다 레일즈와 Kamal 로 정착했고, 3,000명에게 개발과 바이브코딩을 가르쳤어요.