로컬에서는 완벽한데…

9일차에 노트북에서 웹사이트가 완벽하게 돌아가는 걸로 끝났습니다. 스토리 둘러보고, 선택지 고르고, 성격 결과까지 다 봤어요. 로컬 개발 서버에 연결하면 휴대폰에서도 잘 보였고요.

근데 저밖에 못 봤습니다. 아직 제 컴퓨터에서만 돌아가고 있었거든요.

진짜 도메인에 배포해야 했습니다: whatifclassics.com

GitHub 저장소부터

먼저 버전 관리가 필요했어요. GitHub 저장소를 만들었습니다:

cd whatif-classics
git init
git add .
git commit -m "Initial commit: Astro website with Jekyll & Hyde story"

GitHub에 whatif-classics 저장소 만들고 푸시했어요:

git remote add origin https://github.com/[username]/whatif-classics.git
git push -u origin main

코드가 GitHub에 올라갔습니다. 빌딩 인 퍼블릭 철학에 따라 퍼블릭 레포로 만들었어요.

배포는 Vercel로 결정

호스팅 선택지가 몇 개 있었습니다:

  • GitHub Pages (무료지만 제한적)
  • Netlify (정적 사이트에 괜찮음)
  • Vercel (모던 프레임워크에 최적화)

Vercel을 골랐어요:

  • 무료 티어가 넉넉함
  • GitHub 연동하면 자동 배포
  • Astro 네이티브 지원
  • 커스텀 도메인 설정 쉬움

GitHub 계정으로 Vercel 가입했습니다.

저장소 연결

Vercel 대시보드에서 “New Project” 클릭하고 whatif-classics 저장소를 선택했어요.

Vercel이 자동으로 Astro 프로젝트라는 걸 인식하더라고요. 빌드 설정도 미리 채워져 있었습니다:

  • Build Command: npm run build
  • Output Directory: dist
  • Install Command: npm install

아무것도 안 건드리고 그냥 “Deploy” 클릭했습니다.

첫 배포 시도

Vercel이 프로젝트 빌드를 시작했어요. 빌드 로그 스크롤되는 거 지켜봤습니다:

Installing dependencies...
Building Astro site...

그리고 터졌습니다.

에러 메시지: Error: Failed to load story data

또 파일 경로 문제였어요. 로컬에선 스토리 JSON이 public/stories/에 있었는데, Vercel 빌드 프로세스는 다른 위치를 기대하고 있었던 거죠.

Astro 페이지에서 스토리 데이터 로드하는 방식을 손봐야 했습니다. 로컬이든 프로덕션이든 다 먹히는 절대 경로로 바꿨어요.

// 이전 (로컬에서만 작동)
const storyData = await fetch('./jekyll-and-hyde.json')

// 수정 (어디서든 작동)
const storyData = await fetch('/stories/jekyll-and-hyde/jekyll-and-hyde.json')

GitHub에 푸시했더니 Vercel이 자동으로 감지하고 새 빌드 시작하더라고요.

두 번째 배포: 성공

이번엔 빌드 성공.

Vercel이 임시 URL 줬습니다: whatif-classics.vercel.app

열었어요. 홈페이지 로드됨. 지킬 박사와 하이드 클릭. 스토리 시작. 선택지 몇 개 골랐습니다. 엔딩 도달.

됐습니다. 웹사이트가 인터넷에 떴어요.

커스텀 도메인 연결

근데 사람들한테 vercel.app로 오라고 할 순 없잖아요. 5일차에 이미 whatifclassics.com 사놨습니다.

Vercel 프로젝트 설정에서 커스텀 도메인 추가했어요:

Vercel이 DNS 레코드 알려줬습니다. Cloudflare(도메인 산 곳)에 추가하라고:

A record: @ → 76.76.21.21
CNAME: www → cname.vercel-dns.com

Cloudflare DNS 관리에서 레코드 추가했습니다.

진짜 테스트

휴대폰 꺼내서 WiFi 끄고, 모바일 데이터로 입력했어요: whatifclassics.com

사이트가 떴습니다. 빠르게. 이미지 뜨고. 모바일 데이터로 지킬 박사와 하이드 스토리 끝까지 플레이했어요.

다 작동했습니다.

저 말고 다른 사람이 What If Classics에 처음 접속할 수 있게 된 순간이었어요. 이제 URL만 있으면 누구든 인터랙티브 스토리 플레이 가능합니다.

현실이 된 순간

지금까지는 전부 이론이었어요. JSON 파일, Python 스크립트, 로컬 개발 서버.

근데 인터넷으로, 진짜 도메인에서, 휴대폰에 whatifclassics.com 떠 있는 거 보니까—그때 실감났습니다.

이제 진짜 웹사이트네요. 프로토타입 아니고. 개발 환경 아니고. 인터넷에 존재하는 실제 제품.

다음 단계

웹사이트는 돌아가는데 아직 할 게 많습니다:

  • 디자인 여전히 날것 (스타일링 전무)
  • 스토리팩 하나뿐 (지킬 박사와 하이드만)
  • 한국어 버전 아직 배포 안 함
  • 소셜 공유 기능 없음

하지만 인프라는 다 갖춰졌어요. 코드는 GitHub에, 호스팅은 Vercel에, 커스텀 도메인 연결됨. GitHub에 푸시하면 자동으로 배포됩니다.

이제 디자인 작업하고 스토리 늘리는 데 집중할 수 있겠네요.

다음 편에서 계속…