AI와 함께 웹서비스를 만들다 보면 생각보다 빠르게 결과물이 나옵니다.
아이디어를 설명하고, 화면을 만들고, 기능을 하나씩 추가하다 보면 어느새 제법 그럴듯한 서비스가 완성되죠.
로컬에서 실행해 보고 원하는 기능도 정상적으로 동작한다면 이제 다른 사람들에게 공개하고 싶어집니다.
그런데 여기서 새로운 고민이 시작됩니다.
"내가 만든 서비스를 인터넷에 올리려면 어떻게 해야 하지?"
"웹 호스팅은 어디를 이용해야 할까?"
"데이터베이스나 이미지 저장소도 별도로 필요한 걸까?"
"사용자가 많아지면 서버 비용은 얼마나 나올까?"
바이브코딩으로 서비스를 만드는 과정에서는 AI가 이런 설정까지 도와주기도 합니다. 하지만 실제 서비스를 운영하는 입장이라면 적어도 어떤 서비스를 왜 사용하는지, 어디서 비용이 발생하는지는 알고 있는 편이 좋습니다.
이번 글에서는 웹서비스를 출시할 때 필요한 구성요소부터 각 서비스의 특징, 무료로 운영할 수 있는 범위, 예상 운영비까지 정리해 보겠습니다.
1. 내 서비스를 웹에 올리려면 무엇이 필요할까?
먼저 웹서비스가 어떤 구조로 운영되는지 이해할 필요가 있습니다.
우리가 평소 접속하는 웹사이트는 하나의 서버에서 모든 것을 처리하기도 하지만, 요즘은 기능에 따라 여러 서비스를 조합해서 운영하는 경우도 많습니다.
대표적으로 다음과 같은 구성요소가 있습니다.
구성요소어떤 역할을 할까?웹 호스팅내가 만든 웹사이트와 앱 코드를 인터넷에서 실행하고 제공하는 공간데이터베이스(DB)회원정보, 게시글, 댓글, 설정 등 데이터를 저장하는 공간이미지 호스팅서비스에서 사용하는 이미지와 사용자가 업로드한 파일을 저장하는 공간도메인사용자가 내 서비스에 접속할 때 입력하는 인터넷 주소사용자 인증회원가입, 로그인, 계정 관리 등을 처리하는 기능이메일 서비스이메일 인증, 비밀번호 재설정, 알림 메일 등을 발송하는 서비스모니터링서비스 오류나 장애, 사용량 등을 확인하는 도구
웹서비스를 구성하는 주요 요소
그렇다고 모든 웹서비스에 위의 구성요소가 필요한 것은 아닙니다.
예를 들어 회사 소개 페이지처럼 정해진 내용만 보여주는 사이트라면 웹 호스팅과 도메인만으로도 운영할 수 있습니다.
반면 사용자가 회원가입을 하고 게시글을 작성하는 서비스라면 데이터베이스와 인증 기능이 필요하겠죠.
사용자들이 사진을 업로드할 수 있다면 이미지 저장소도 고려해야 합니다.
여기서 중요한 것은 내 서비스가 실제로 어떤 기능을 제공하는지에 따라 필요한 구성이 달라진다는 점입니다.
처음부터 모든 서비스를 연결할 필요는 없습니다.
예를 들어 회사 소개 페이지처럼 정해진 내용만 보여주는 사이트라면 웹 호스팅과 도메인만으로도 운영할 수 있습니다.
반면 사용자가 회원가입을 하고 게시글을 작성하는 서비스라면 데이터베이스와 인증 기능이 필요하겠죠.
사용자들이 사진을 업로드할 수 있다면 이미지 저장소도 고려해야 합니다.
여기서 중요한 것은 내 서비스가 실제로 어떤 기능을 제공하는지에 따라 필요한 구성이 달라진다는 점입니다.
처음부터 모든 서비스를 연결할 필요는 없습니다.
2. 웹서비스는 실제로 어떻게 작동할까?
간단한 커뮤니티 서비스를 예로 들어보겠습니다.
사용자가 브라우저에 myservice.com을 입력하면 먼저 도메인을 통해 웹서비스가 연결된 서버를 찾습니다.
웹 호스팅 서비스는 사용자에게 필요한 웹페이지를 전달합니다.
그리고 사용자가 로그인하거나 게시글을 조회하면 서버는 데이터베이스에서 필요한 정보를 가져옵니다.
게시글에 이미지가 있다면 이미지 저장소에서 해당 파일도 불러오겠죠.
사용자 접속부터 데이터베이스와 이미지 저장소까지
여기서 알아둘 점은 웹 호스팅, 데이터베이스, 이미지 저장소가 반드시 같은 회사의 서비스일 필요는 없다는 것입니다.
웹 호스팅은 Vercel을 사용하면서 데이터베이스는 Supabase, 이미지 저장소는 Cloudflare R2를 사용할 수도 있습니다.
반대로 Cloudflare의 Workers, D1, R2를 조합해서 여러 기능을 하나의 플랫폼에서 관리할 수도 있습니다.
어떤 방식이 더 좋은지는 개발 환경과 서비스 특성에 따라 달라집니다.
3. 웹 호스팅은 어디를 이용하는 게 좋을까?
웹 호스팅은 내 웹서비스를 사용자들이 접속할 수 있도록 인터넷에 공개하는 역할을 합니다.
예전에는 직접 서버를 구축하거나 호스팅 상품을 구매해 파일을 업로드하는 방식이 익숙했지만, 요즘은 GitHub 저장소를 연결하기만 해도 배포할 수 있는 서비스가 많습니다.
대표적인 서비스 몇 가지를 살펴보겠습니다.
Vercel — Next.js로 개발했다면
Next.js를 사용해서 웹서비스를 만들었다면 가장 먼저 고려해 볼 만한 서비스입니다.
GitHub 저장소를 연결하면 코드가 변경될 때 자동으로 배포할 수 있고, HTTPS 설정이나 배포 미리보기 기능도 편리하게 사용할 수 있습니다.
무료 Hobby 플랜도 제공하지만 주의할 점이 있습니다.
Vercel Hobby 플랜은 개인의 비상업적 사용을 위한 플랜입니다.
수익을 목적으로 운영하는 서비스라면 플랜의 이용 조건을 확인해야 합니다.
유료 Pro 플랜은 월 20달러부터 시작하며, 제공량을 초과하면 추가 사용료가 발생할 수 있습니다.
Cloudflare — 적은 비용으로 시작하고 싶다면
Cloudflare는 정적 웹사이트 호스팅부터 서버 측 코드 실행, 데이터베이스, 파일 저장소까지 다양한 서비스를 제공합니다.
대표적인 구성은 다음과 같습니다.
Pages 또는 Workers Static Assets: 웹사이트 파일 제공
Workers: API와 서버 측 코드 실행
D1: 데이터베이스
R2: 이미지와 파일 저장소
특히 무료 플랜의 제공량이 상당히 넉넉한 편입니다.
Cloudflare Workers 무료 플랜은 하루 최대 10만 건의 요청을 처리할 수 있습니다. 다만 요청당 CPU 실행 시간 등의 제한도 있기 때문에 모든 종류의 서버 프로그램을 실행할 수 있는 것은 아닙니다.
정적 웹사이트 파일을 제공하는 요청은 별도의 무료 조건이 적용됩니다.
Workers 유료 플랜은 월 최소 5달러부터 시작합니다.
서버리스 구조에 적합한 서비스를 만들고 있다면 고려할 만하지만, 기존 Node.js 서버에서 사용하던 라이브러리가 그대로 호환되는지는 확인해야 합니다.
Railway — 별도의 백엔드 서버가 필요하다면
Railway는 Node.js, Python 등으로 만든 서버 애플리케이션을 배포하기 편리한 서비스입니다.
서버 프로세스를 지속적으로 실행하거나 백그라운드 작업이 필요한 서비스라면 검토해 볼 만합니다.
현재 무료 플랜은 월 1달러의 리소스 사용 크레딧을 제공합니다. 처음 가입하면 별도의 일회성 체험 크레딧도 제공됩니다.
Hobby 플랜은 월 5달러이며, 해당 금액만큼의 리소스 사용료가 포함됩니다.
단, 서버가 계속 실행되거나 리소스를 많이 사용하면 무료 제공량을 빠르게 소진할 수 있습니다.
어떤 호스팅이 좋을까?
내가 만든 서비스우선 고려할 호스팅단순 소개 페이지, 포트폴리오Cloudflare PagesReact, Vue 기반 정적 웹앱Cloudflare Pages, VercelNext.js 웹서비스Vercel서버리스 API가 필요한 서비스Cloudflare WorkersNode.js, Python 백엔드 서버Railway
이 표는 절대적인 기준은 아닙니다.
실제로는 각 서비스가 여러 프레임워크를 지원하기 때문에 선택할 수 있는 경우의 수가 더 많습니다.
개인적으로는 처음부터 가장 저렴한 곳을 찾기보다는 현재 개발한 코드를 안정적으로 배포할 수 있는 환경을 우선 선택하는 편이 좋다고 생각합니다.
호스팅 비용 몇 달러를 아끼기 위해 이미 완성한 기능을 크게 수정해야 한다면 오히려 더 많은 시간과 비용이 들어갈 수도 있으니까요.
4. 하루 몇 명까지 무료로 운영할 수 있을까?
아마 가장 궁금한 부분일 것 같습니다.
결론부터 이야기하면 무료로 운영할 수 있는 방문자 수가 정해져 있는 것은 아닙니다.
같은 1,000명이 방문하더라도 단순히 글을 읽는 사이트와 실시간으로 데이터를 주고받는 서비스는 서버 사용량이 전혀 다르기 때문입니다.
간단한 예를 들어보겠습니다.
Cloudflare Workers 무료 플랜은 하루 10만 건의 요청을 제공합니다.
사용자 한 명이 서비스를 방문할 때 평균 5번의 동적 API 요청을 발생시킨다고 가정해 보겠습니다.
하루 방문 수1회 방문당 API 5건하루 API 요청100회5건500건1,000회5건5,000건5,000회5건25,000건20,000회5건100,000건
이 가정대로라면 하루 5,000회 방문이 발생하더라도 API 요청 횟수는 무료 제공량 이내입니다.
20,000회 방문은 요청 수만 놓고 보면 무료 한도에 도달하는 수준입니다.
물론 실제로 하루 20,000명이 무료로 사용할 수 있다는 의미는 아닙니다.
한 명이 여러 번 방문할 수도 있고, 페이지마다 API 호출 수가 다르며, CPU 실행 시간이나 데이터베이스 사용량 같은 다른 제한에 먼저 도달할 수도 있습니다.
또 AI 기능처럼 외부 API를 호출하는 서비스라면 웹 호스팅이 무료여도 AI 사용료는 별도로 발생할 수 있습니다.
반대로 단순한 정적 웹사이트라면 동적 API 요청 자체가 거의 없어 훨씬 많은 방문을 무료로 처리할 수도 있습니다.
방문자 수보다 중요한 것은 방문자 한 명이 서버에 얼마나 많은 작업을 요청하는가입니다.
처음에는 대략적인 사용량을 추정하고, 출시 후 실제 수치를 확인하는 것이 좋습니다.
5. 데이터베이스는 어디에 만들어야 할까?
서비스에 회원가입, 게시글, 댓글, 즐겨찾기 같은 기능이 있다면 데이터를 저장할 공간이 필요합니다.
이 역할을 하는 것이 데이터베이스입니다.
데이터베이스라고 하면 어렵게 느껴질 수 있지만, 회원 목록이나 게시글 목록을 저장하고 필요할 때 찾아오는 공간이라고 생각하면 이해하기 쉽습니다.
물론 실제로는 데이터를 검색하고 수정하거나 여러 사용자 간의 데이터 일관성을 유지하는 등 더 많은 역할을 합니다.
Supabase
PostgreSQL 데이터베이스를 기반으로 인증과 파일 저장 기능까지 함께 제공하는 서비스입니다.
회원가입과 로그인 기능을 포함한 웹서비스를 빠르게 구축하고 싶다면 편리한 선택이 될 수 있습니다.
무료 플랜에서는 데이터베이스 500MB, 파일 저장소 1GB, 월간 활성 사용자 5만 명 등의 제공량을 확인할 수 있습니다.
다만 월간 활성 사용자 5만 명은 하루 방문자 5만 명을 의미하지 않습니다. 인증 기능의 이용 규모를 측정하는 지표입니다.
무료 프로젝트는 1주일 동안 사용하지 않으면 일시 중지될 수 있다는 점도 알아두어야 합니다.
Neon
PostgreSQL 데이터베이스에 집중하고 싶다면 Neon도 좋은 선택지입니다.
서버리스 방식으로 운영되며, 무료 플랜에서 프로젝트당 1GB의 데이터베이스 저장 공간을 제공합니다.
이미 로그인이나 이미지 저장 기능을 다른 서비스에서 해결했다면 데이터베이스만 Neon으로 구성할 수도 있습니다.
Cloudflare D1
https://developers.cloudflare.com/d1/
Cloudflare Workers와 함께 사용할 수 있는 SQLite 기반 서버리스 데이터베이스입니다.
무료 플랜에서는 전체 저장 공간 5GB, 하루 500만 행 읽기, 10만 행 쓰기를 제공합니다.
비용 측면에서 매력적이지만 PostgreSQL과 SQLite는 서로 다른 데이터베이스이기 때문에 기능과 개발 환경에 따라 선택이 달라질 수 있습니다.
그리고 무엇보다 중요한 것이 있습니다.
데이터베이스는 단순히 저장 용량만 보고 선택할 수 없다는 점입니다.
데이터 조회 방식, 동시 접근, 필요한 기능, 백업과 복구 방식도 함께 확인해야 합니다.
사용자 데이터가 쌓이고 나서 다른 데이터베이스로 이전하는 작업은 생각보다 번거로울 수 있습니다.
6. 이미지 호스팅은 정말 별도로 필요할까?
이미지 저장소는 서비스 성격에 따라 중요도가 크게 달라지는 부분입니다.
먼저 두 가지 경우를 구분해 보겠습니다.
첫 번째는 개발자가 미리 준비한 이미지만 사용하는 서비스입니다.
로고, 아이콘, 배경 이미지처럼 정해진 파일을 제공하는 경우입니다.
이런 파일은 웹 프로젝트에 포함해 함께 배포할 수 있으므로 별도의 이미지 저장소가 반드시 필요한 것은 아닙니다.
두 번째는 사용자가 직접 이미지를 업로드하는 서비스입니다.
프로필 사진, 게시글 이미지, 작품 썸네일 등을 사용자가 등록할 수 있다면 이야기가 달라집니다.
사용자가 올린 이미지는 서비스를 다시 배포하더라도 유지되어야 합니다.
따라서 파일을 지속적으로 보관할 수 있는 저장소가 필요합니다.
Cloudflare R2
https://www.cloudflare.com/developer-platform/products/r2/
이미지와 첨부파일을 저장하는 데 고려할 만한 서비스입니다.
R2 Standard 저장소는 무료 제공량이 다음과 같습니다.
항목무료 제공량파일 저장 공간월 10GB-month쓰기 등 Class A 요청월 100만 건읽기 등 Class B 요청월 1,000만 건인터넷 전송(egress)무료
단, 파일 저장 요청과 조회 요청은 별도로 집계되며, 무료 제공량은 Standard 저장 클래스 기준입니다.
이미지가 많은 서비스라면 주의할 점
사용자들이 하루에 100MB씩 이미지를 업로드한다고 가정해 보겠습니다.
30일 동안 누적되면 약 3GB입니다.
단순히 한 달만 보면 무료 제공량으로 충분할 수 있습니다.
하지만 업로드한 이미지가 계속 쌓인다면 몇 달 뒤에는 저장 공간이 크게 늘어날 수 있습니다.
여기에 이미지 조회 횟수까지 증가한다면 비용 구조는 더 복잡해집니다.
예를 들어 페이지 하나에 200KB 이미지가 10장 있고, 하루 5,000번 조회된다고 가정해 보겠습니다.
캐시나 압축 효과 등을 제외하고 계산하면 방문자에게 전달하는 이미지 데이터만 하루 약 10GB가 됩니다.
스토리지 업체의 외부 전송 요금이 무료이더라도 CDN, 이미지 변환 서비스나 다른 인프라에서 비용이 발생할 수 있습니다.
이 때문에 이미지 중심 서비스라면 다음 사항을 고려해야 합니다.
업로드 가능한 이미지의 최대 용량
WebP, AVIF 등 이미지 포맷 최적화
썸네일 생성과 적절한 해상도 제공
이미지 캐싱
삭제된 게시글의 파일 정리
사용자가 업로드한 파일에 대한 접근 권한
특히 사용자가 이미지를 지속적으로 업로드할 수 있는 서비스라면 이미지 저장소는 처음부터 신중하게 선택하는 편이 좋습니다.
7. 무료로 제공되는 주소 대신 내 도메인을 사용하자
웹 호스팅 서비스를 이용하면 대부분 별도의 도메인을 구매하지 않아도 사이트를 공개할 수 있습니다.
예를 들어 Vercel은 vercel.app, Railway는 up.railway.app 형태의 주소를 제공합니다.
이런 주소는 개발 중인 서비스를 테스트하거나 다른 사람에게 미리 보여줄 때 매우 편리합니다.
하지만 정식으로 출시할 제품이라면 이야기가 조금 달라집니다.
예를 들어 다음 두 주소를 비교해 보겠습니다.
myservice.vercel.app
myservice.com
어떤 주소가 더 하나의 독립적인 서비스처럼 느껴지나요?
개인적으로는 정식 출시를 준비하고 있다면 서비스 이름에 맞는 도메인을 구매하는 것을 추천합니다.
무료 제공 주소와 자체 도메인 비교
물론 호스팅 업체가 제공하는 주소라고 해서 보안상 문제가 있거나 신뢰할 수 없는 서비스라는 의미는 아닙니다.
다만 자체 도메인은 사용자에게 서비스 이름을 기억시키고, 브랜드를 구축하는 데 도움이 됩니다.
나중에 호스팅 업체를 변경하더라도 도메인을 그대로 유지할 수 있다는 장점도 있습니다.
도메인은 얼마나 비쌀까?
생각보다 큰 비용이 들지는 않습니다.
예를 들어 Cloudflare Registrar의 .com 도메인은 확인 시점 기준 연간 약 10.46달러입니다.
월 단위로 환산하면 약 0.87달러 정도입니다.
다만 .ai, .app 등 확장자에 따라 가격이 다르고, 특별한 이름은 프리미엄 가격이 적용될 수도 있습니다.
국내에서는 가비아, 해외에서는 Cloudflare Registrar 등을 이용할 수 있습니다.
여기서 중요한 것은 최초 구매 가격만 보지 말고 다음 해 갱신 비용까지 확인하는 것입니다.
일부 도메인은 첫해 할인 가격과 갱신 가격이 크게 다를 수 있습니다.
그리고 도메인을 구매한 곳과 실제 웹 호스팅을 제공하는 곳은 달라도 괜찮습니다.
Cloudflare에서 구매한 도메인을 Vercel이나 Railway에 연결하는 것도 가능합니다.
처음 만든 서비스가 얼마나 성장할지는 알 수 없지만, 정식 제품으로 공개할 생각이라면 이 정도 비용으로 나만의 주소를 확보하는 것은 충분히 고려할 만하다고 생각합니다.
8. 그렇다면 한 달 운영비는 얼마나 들까?
이제 지금까지 살펴본 내용을 바탕으로 운영비를 계산해 보겠습니다.
웹서비스의 운영비는 크게 두 가지로 나눌 수 있습니다.
기본 구독료와 실제 사용량에 따른 비용입니다.
여기에 도메인 등록비, 이메일 발송, AI API, 모니터링 같은 외부 서비스 비용이 추가될 수 있습니다.
웹서비스 월 운영비 구성
사례 A. 간단한 소개 사이트
게시글이나 회원가입이 없는 서비스 소개 페이지를 운영한다고 가정해 보겠습니다.
구성이용 서비스비용웹 호스팅Cloudflare Pages$0데이터베이스사용하지 않음$0이미지사이트 파일에 포함$0도메인.com 연 $10.46 가정약 $0.87/월합계약 $0.87/월
무료 호스팅 조건 안에서 운영한다면 사실상 도메인 비용만으로도 서비스를 공개할 수 있습니다.
사례 B. 작은 커뮤니티 서비스
회원가입, 게시글 작성, 이미지 업로드가 가능한 소규모 커뮤니티를 운영한다고 가정해 보겠습니다.
구성이용 서비스비용웹/API 호스팅Cloudflare Workers Paid$5/월데이터베이스Cloudflare D1$0이미지 저장소Cloudflare R2$0도메인.com 연 $10.46 가정약 $0.87/월합계약 $5.87/월
D1과 R2가 무료 제공량 이내이고 Workers에 추가 사용 요금이 발생하지 않는다고 가정한 예시입니다. 이메일, 외부 API, 세금 등은 포함하지 않았습니다.
이처럼 조건이 맞는다면 한 달 10달러 미만으로 서비스를 운영하는 것도 가능합니다.
다만 실제 비용은 서비스 사용 방식에 따라 달라집니다.
특히 사용자가 지속적으로 이미지를 업로드하거나 AI 기능을 많이 사용하는 서비스라면 추가 비용을 계산해야 합니다.
방문자가 많아지면 무엇부터 확인해야 할까?
방문자 수 하나만으로 비용을 예측하기는 어렵습니다.
최소한 다음과 같은 데이터를 측정하는 것이 좋습니다.
측정 항목확인할 내용사용자 수일간·월간 활성 사용자페이지 조회방문자당 페이지 조회 횟수서버 요청하루 API 호출 횟수DB 사용량읽기·쓰기 횟수, 저장 공간이미지 사용량총 저장 공간, 요청 수, 전송량이메일월 발송 건수AI API요청 수, 토큰 사용량오류 및 로그모니터링 사용량
출시 전에는 예상치를 바탕으로 계산하고, 출시 후에는 실제 사용량을 보고 조정하는 것이 가장 현실적인 방법입니다.
무료 플랜을 사용하더라도 한도를 초과하면 서비스가 일시적으로 제한될 수 있고, 유료 플랜에서는 추가 요금이 발생할 수도 있습니다.
따라서 사용량 알림과 예산 관리 기능이 있다면 미리 설정해 두는 편이 좋습니다.
단, 예산 알림은 실제 사용료 청구를 자동으로 막아주는 기능과 다를 수 있으므로 각각 확인해야 합니다.
9. 내가 만든 서비스에는 어떤 조합이 좋을까?
서비스의 형태에 따라 간단히 정리해 보겠습니다.
서비스 유형고려할 구성소개 페이지·포트폴리오Cloudflare Pages + 자체 도메인Next.js 기반 웹서비스Vercel + Supabase 또는 Neon + 자체 도메인비용을 최소화한 서버리스 서비스Cloudflare Workers + D1 + R2별도 백엔드가 있는 웹서비스Railway + PostgreSQL 기반 DB이미지 중심 커뮤니티웹 호스팅 + DB + R2 등의 객체 저장소
물론 이 조합이 반드시 정답이라는 의미는 아닙니다.
서비스 특성에 따라 다른 구성도 충분히 가능합니다.
특히 이미 개발을 끝낸 상태라면 사용한 프레임워크와 라이브러리, 데이터베이스를 먼저 확인하는 것이 좋습니다.
AI에게 단순히 "가장 저렴한 환경으로 배포해 줘"라고 하기보다는, 현재 서비스의 구성요소를 정리하고 각각의 배포 가능 여부와 비용을 비교해 달라고 요청하는 편이 낫습니다.
개발하는 것보다 배포 환경을 변경하는 작업이 더 번거로워질 수도 있기 때문입니다.
10. 서비스를 공개하기 전에 확인할 것들
호스팅과 데이터베이스를 연결하고 도메인까지 설정했다면 이제 거의 준비가 끝난 것 같습니다.
하지만 실제 사용자에게 공개하기 전에는 몇 가지를 더 확인하는 것이 좋습니다.
도메인 연결과 HTTPS가 정상적으로 작동하는가?
로그인과 회원가입이 실제 배포 환경에서도 작동하는가?
API 키나 DB 비밀번호가 외부에 노출되지 않는가?
다른 사용자의 비공개 데이터에 접근할 수 없도록 설정했는가?
업로드 파일 크기와 파일 형식을 제한했는가?
데이터베이스 백업과 복구 방법을 확인했는가?
오류 로그를 확인할 수 있는가?
모바일에서도 정상적으로 동작하는가?
개인정보 처리방침 등 필요한 운영 안내를 준비했는가?
무료 플랜의 상업적 사용 조건과 사용량 제한을 확인했는가?
도메인 자동 갱신과 월 운영비를 확인했는가?
특히 로컬 개발 환경과 실제 배포 환경에서는 설정이나 동작 방식이 달라질 수 있습니다.
AI가 배포까지 정상적으로 완료했다고 이야기하더라도 실제 접속과 주요 기능은 직접 테스트해 보는 편이 좋습니다.
실제로 제가 운영하는 서비스는 이렇게 구성했습니다
제가 현재 운영하고 있는 쇼들리(Showdly)의 실제 운영 환경도 간단히 소개해 보겠습니다.
쇼들리는 AI를 활용해 만든 앱, 웹사이트, 이미지, 영상 등의 창작물을 공유하고 소개하는 커뮤니티 서비스입니다.
하나의 호스팅 업체에서 모든 기능을 해결하기보다는, 각 서비스의 역할과 특성에 맞춰 여러 서비스를 조합해서 운영하고 있습니다.
구분사용 중인 서비스역할웹 호스팅Railway웹 서버, 예약 작업, 배포 관리데이터베이스Neon회원, 게시물, 댓글 등의 데이터 저장이미지 저장소Cloudflare R2사용자가 업로드한 이미지와 파일 저장이미지 최적화Cloudflare Images이미지 크기 변환 및 CDN 제공도메인Cloudflare DNS도메인 연결 및 리다이렉트보안Cloudflare Turnstile봇과 자동화 요청 방지이메일 처리Cloudflare Email·Queues, 다음 메일자동 안내, 제작자 초대 및 답장 관리백업Google Drive암호화된 데이터베이스·이미지 백업 보관로그인Google·GitHub·카카오소셜 회원가입 및 로그인외부 링크 검사Google Web Risk사용자가 등록한 외부 링크의 위험 여부 확인방문 통계Google Analytics 4방문자 통계 및 관리자 보고서소스 관리GitHub소스 코드, 버전 및 릴리즈 관리
핵심 운영 환경을 정리하면 다음과 같습니다.
Railway(서버) + Neon(DB) + Cloudflare(이미지·도메인·보안·메일 관련 기능) + Google Drive(백업)
여기에 로그인, 방문 통계, 외부 링크 검사 등 필요한 기능을 추가해서 사용하고 있습니다.
물론 처음부터 이 모든 서비스가 필요한 것은 아닙니다.
쇼들리처럼 회원가입이 있고, 사용자가 콘텐츠를 직접 등록하며, 이미지를 업로드하고, 이메일 안내까지 필요한 커뮤니티이기 때문에 구성요소가 조금 더 많아진 것입니다.
단순한 웹서비스라면 훨씬 적은 구성으로도 충분히 시작할 수 있습니다.
또한 지금 사용하는 조합이 반드시 가장 저렴하거나 모든 서비스에 적합한 구성이라는 의미도 아닙니다.
서비스를 운영하면서 필요한 기능과 비용, 관리 편의성 등을 고려해 선택한 방식입니다.
앞에서 여러 호스팅과 데이터베이스 서비스를 소개한 이유도 여기에 있습니다.
처음부터 정답인 구성을 찾기보다는 내가 만든 서비스에 어떤 기능이 필요한지 파악하고, 그에 맞는 서비스를 선택하는 것이 더 중요하다고 생각합니다.
서비스를 공개한 다음이 더 중요합니다
바이브코딩 덕분에 웹서비스를 만드는 일은 훨씬 쉬워졌습니다. 하지만 서비스를 완성하는 것과 실제로 운영하는 것은 조금 다른 이야기입니다.
막상 사용자들이 접속하기 시작하면 로컬에서는 발견하지 못했던 오류가 나타나기도 하고, 예상하지 못했던 곳에서 비용이 발생할 수도 있습니다.
그래서 서비스를 공개한 이후에는 사용량과 운영비를 확인하고, 오류나 문제가 발생했을 때 대응할 수 있도록 준비하는 것이 중요합니다.
처음부터 모든 상황을 예상하고 완벽하게 준비하기는 어렵습니다. 필요한 것부터 갖추고 서비스를 공개한 다음, 실제 운영하면서 하나씩 개선해 나가면 됩니다.
바이브코딩으로 서비스를 만들었다면, 이제는 그 서비스를 직접 운영해 보는 경험도 쌓아보면 좋겠습니다.
참고 자료
Vercel 요금 안내
Cloudflare Workers 요금 안내
Cloudflare D1 요금 안내
Cloudflare R2 요금 안내
Supabase 요금 안내
Neon 요금 안내
Railway 요금 안내
Cloudflare 도메인 가격표