본문으로 건너뛰기
Previous
Next
Railway & Fly.io 완벽 가이드 — 헤로쿠를 잇는 현대 PaaS, Dockerfile만으로 배포

Railway & Fly.io 완벽 가이드 — 헤로쿠를 잇는 현대 PaaS, Dockerfile만으로 배포

Railway & Fly.io 완벽 가이드 — 헤로쿠를 잇는 현대 PaaS, Dockerfile만으로 배포

이 글의 핵심

Heroku의 유료화 이후 개발자 커뮤니티가 찾은 대안은 Railway와 Fly.io입니다. Railway는 "GitHub push → 자동 배포"의 단순함과 Heroku Buildpack 호환으로 제로 설정 배포를 제공하고, Fly.io는 Firecracker microVM + global Anycast로 edge 배포·DB 복제·멀티 리전을 네이티브 지원합니다. 둘 다 Dockerfile 배포·무료 티어·자동 SSL·환경변수·오토스케일링을 기본 제공해 "Vercel/Netlify 같은 백엔드 버전"입니다.

PaaS의 부활: Heroku 몰락과 Railway·Fly.io 부상

Heroku 시대의 종말 (2022)

Heroku(2007)는 PaaS(Platform as a Service)의 선구자였습니다. git push heroku main 한 줄로 배포가 끝나는 경험은 혁명적이었습니다. 하지만 2022년 8월, Salesforce는 무료 플랜 종료를 발표했습니다.

무료 플랜 종료의 충격:

  • 수백만 개의 취미·교육 프로젝트가 shutdown
  • 유료 전환 ($7/월~)은 개인 개발자에게 부담
  • AWS Elastic Beanstalk·Google App Engine은 복잡함

이 공백을 Railway(2020)와 Fly.io(2017)가 메웠습니다.

Railway vs Fly.io vs Heroku: 철학 비교

측면RailwayFly.ioHeroku
철학”Heroku 단순함 계승""Edge 네이티브 PaaS""원조 PaaS”
배포GitHub 자동 배포fly deploy CLIGit push
실행 환경DockerFirecracker microVMDyno (Container)
네트워크단일 리전Global Anycast리전 선택
DB 복제❌ (단일 인스턴스)✅ (멀티 리전)✅ (Postgres 유료)
무료 티어$5 크레딧/월3 VM + 3GB DB❌ (종료)
가격$0.000463/GB-sec$0.0000008/초 + $0.02/GB$7/dyno

Railway의 강점: “설정 제로, Heroku의 재림”

Railway는 Heroku의 단순함을 현대적으로 재현했습니다:

  • Nixpacks (Heroku Buildpack 오픈소스 대체): Node.js·Python·Go 자동 인식
  • GitHub 연동: Push하면 자동 배포
  • 환경변수 GUI: 클릭으로 설정
  • DB 템플릿: Postgres·Redis·MongoDB 원클릭 추가

Fly.io의 강점: “Edge 네이티브, 글로벌 배포”

Fly.io는 Firecracker microVM + Anycast 네트워크로 차별화:

  • Firecracker: AWS Lambda가 쓰는 경량 VM (5ms 시작)
  • Global Anycast: 사용자가 가장 가까운 리전으로 자동 라우팅
  • 멀티 리전 DB: Postgres primary + read replica를 여러 리전에 자동 배포
  • WireGuard VPN: 리전 간 private 네트워크

Fly.io 네트워크 아키텍처:

사용자(서울) → Fly Anycast IP → 서울 리전 VM → DB Primary(도쿄)
사용자(뉴욕) → Fly Anycast IP → 뉴욕 리전 VM → DB Replica(뉴욕)

Railway 시작

npm install -g @railway/cli
railway login
railway init
railway up

또는 Railway Dashboard에서 GitHub repo 연결 → 자동 배포.

Railway 배포 (GitHub)

  1. railway.app → New Project → Deploy from GitHub
  2. Repo 선택 → Railway가 Buildpack 자동 인식
  3. 환경변수 설정 (Dashboard)
  4. Git push → 자동 배포

Railway 환경변수

# CLI
railway variables set DATABASE_URL="postgres://..."
railway variables

# Dashboard
Project Variables Add Variable

환경변수는 빌드 시 + 런타임 모두 주입.

Railway DB 추가

railway add --plugin postgres

Dashboard에서도 New → Database → Postgres 클릭. 즉시 프로비저닝 + DATABASE_URL 환경변수 생성.

Railway Dockerfile

FROM node:20-slim
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]

Dockerfile이 있으면 Buildpack 우선순위보다 높아 Dockerfile로 빌드.

Railway 커스텀 도메인

Dashboard → Settings → Domains → Add Custom Domain → CNAME 설정.

Fly.io 시작

# macOS/Linux
curl -L https://fly.io/install.sh | sh

# Windows
powershell -Command "iwr https://fly.io/install.ps1 -useb | iex"

fly auth login
fly launch    # 프로젝트 초기화 + fly.toml 생성
fly deploy

fly.toml

app = "my-app"
primary_region = "nrt"  # Tokyo

[build]

[http_service]
  internal_port = 3000
  force_https = true
  auto_stop_machines = "stop"
  auto_start_machines = true
  min_machines_running = 1

[[vm]]
  size = "shared-cpu-1x"
  memory = "256mb"
  • primary_region: 주 리전 (nrt=도쿄, icn=서울, sjc=실리콘밸리 등)
  • auto_stop_machines: 트래픽 없으면 자동 중단 → 비용 절약

Fly.io 환경변수

fly secrets set DATABASE_URL="postgres://..."
fly secrets list

fly deploy 시 자동 주입.

Fly Postgres

fly postgres create --name my-db --region nrt
fly postgres attach my-db

DATABASE_URL 자동 생성. 추가 replica:

fly machine clone --region sjc --app my-db

Read replica를 여러 리전에 자동 배치.

Fly 멀티 리전 배포

fly scale count 3 --region nrt,sjc,ams

3개 리전에 VM 분산 배치. Anycast IP로 유저가 가장 가까운 리전에 자동 라우팅.

Fly Dockerfile

FROM node:20-slim AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

FROM node:20-slim
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
EXPOSE 3000
CMD ["node", "dist/server.js"]

fly deploy가 Dockerfile 자동 인식 + buildkit으로 빌드.

Fly 커스텀 도메인

fly certs create example.com
fly certs create www.example.com

DNS에 A/AAAA 레코드 추가 → 자동 SSL 발급.

Railway vs Fly.io 요약

항목RailwayFly.io
배포 방식GitHub push 자동fly deploy
BuildpackNixpacks (Heroku 호환)fly launch가 Dockerfile 생성
DBPostgres·Redis·MySQL 원클릭fly postgres create
멀티 리전단일 리전Anycast + multi-region VM
가격 (무료)$5 크레딧3 VM + 3GB Postgres
스케일링수동 (Dashboard)auto-scale + auto-stop
네트워크표준 HTTP/HTTPS6PN private network
로그Dashboard 실시간fly logs
모니터링기본 메트릭Prometheus·Grafana 연동

Railway 실전 예제

# Node.js 앱
git clone https://github.com/my-org/api
cd api
railway init
railway add --plugin postgres
railway variables set NODE_ENV=production
railway up

# 도메인 연결
# Dashboard → Domains → api.example.com

Fly.io 실전 예제

# Go 앱
fly launch --name my-go-api --region nrt
fly secrets set API_KEY=xyz123
fly postgres create --name my-pg --region nrt
fly postgres attach my-pg
fly deploy
fly scale count 2 --region nrt,sjc
fly status

환경변수 비교

  • Railway: Dashboard GUI + railway variables
  • Fly: fly secrets (암호화 저장)

둘 다 .env 파일 업로드 불가 → CLI나 Dashboard로만 설정.

로그 & 모니터링

# Railway
railway logs

# Fly.io
fly logs
fly status
fly dashboard       # Grafana 링크

Fly는 Prometheus endpoint 제공 → 자체 모니터링 스택 연동 가능.

CI/CD 통합

Railway: GitHub Actions

- name: Deploy to Railway
  uses: bervProject/railway-deploy@main
  with:
    railway_token: ${{ secrets.RAILWAY_TOKEN }}
    service: api

Fly.io: GitHub Actions

- uses: superfly/flyctl-actions/setup-flyctl@master
- run: flyctl deploy --remote-only
  env:
    FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }}

비용 예측 (2026년 기준)

Railway

  • Compute: $0.000463/GB-hour
  • 1GB RAM 24/7 = ~$10/월
  • DB: 별도 (같은 요금)

Fly.io

  • shared-cpu-1x (256MB): $1.94/월
  • dedicated-cpu-1x (2GB): $62/월
  • Postgres 1GB: $0.02/GB-hour = ~$15/월

무료 티어로 취미 프로젝트는 충분, 프로덕션은 $20-50/월 예상.

트러블슈팅

Railway 배포 실패

  • Buildpack 로그 확인 → 누락된 빌드 스크립트
  • railway logs 실시간 확인
  • Dockerfile로 전환

Fly 멀티 리전 DB 복제 안 됨

  • fly postgres attach가 primary만 연결 → replica는 수동 DNS 설정
  • fly postgres connect + pgbouncer 활용

Railway 메모리 OOM

  • Dashboard → Settings → RAM 증설
  • 가격 재계산

Fly 6PN private 네트워크 안 보임

  • fly deployfly wireguard create + VPN 연결
  • 또는 fly proxy 터널

체크리스트

  • Railway 또는 Fly CLI 설치
  • GitHub repo 또는 Dockerfile 준비
  • 환경변수 설정 (DATABASE_URL 등)
  • DB 프로비저닝 (Postgres/Redis)
  • 커스텀 도메인 + SSL
  • 로그·메트릭 확인
  • 멀티 리전 or 오토스케일 설정 (Fly)
  • 비용 알림 설정

마무리

Railway와 Fly.io는 Heroku가 남긴 “push to deploy” 경험을 현대적으로 계승한 PaaS입니다. Railway는 단순함·Buildpack 자동 인식·GitHub 통합으로 “Heroku의 직계”, Fly.io는 Firecracker microVM·Anycast·멀티 리전 복제로 “글로벌 edge PaaS”입니다. Vercel/Netlify는 정적·서버리스에 강하지만, Railway/Fly는 진짜 백엔드 서버(DB·WebSocket·gRPC·장기 실행)를 컨테이너로 배포할 때 최선입니다. 2026년 현재 OSS·스타트업·인디 해커들이 가장 많이 쓰는 백엔드 배포 플랫폼이며, 무료 티어로 충분히 체험 가능하니 지금 바로 첫 배포를 시도해보세요.

관련 글

  • Vercel 완벽 가이드
  • Cloudflare Pages 가이드
  • Docker 완벽 가이드
  • Kamal 2 배포 가이드

자주 묻는 질문 (FAQ)

Q. 이 내용을 실무에서 언제 쓰나요?

A. Railway·Fly.io PaaS 완벽 가이드. Dockerfile 배포·자동 SSL·멀티 리전·DB 원클릭·Heroku Buildpack 호환. Vercel/Netlify와 다른 진짜 백엔드 PaaS. 가격·배포… 실무에서는 위 본문의 예제와 선택 가이드를 참고해 적용하면 됩니다.

Q. 선행으로 읽으면 좋은 글은?

A. 각 글 하단의 이전 글 또는 관련 글 링크를 따라가면 순서대로 배울 수 있습니다. C++ 시리즈 목차에서 전체 흐름을 확인할 수 있습니다.

Q. 더 깊이 공부하려면?

A. cppreference와 해당 라이브러리 공식 문서를 참고하세요. 글 말미의 참고 자료 링크도 활용하면 좋습니다.


같이 보면 좋은 글 (내부 링크)

이 주제와 연결되는 다른 글입니다.


이 글에서 다루는 키워드 (관련 검색어)

Railway, Fly.io, PaaS, Heroku, Deployment, Docker, DevOps, Cloud 등으로 검색하시면 이 글이 도움이 됩니다.