내가 Rails 호스팅 비용을 70% 절감했습니다: Heroku에서 Railway로 마이그레이션

발행: (2026년 3월 8일 PM 11:59 GMT+9)
7 분 소요
원문: Dev.to

Source: Dev.to

(번역을 진행하려면 전체 텍스트를 제공해 주세요.)

TL;DR

Rails API를 Heroku + JawsDB에서 Railway로 마이그레이션했습니다.

결과

지표이전이후
호스팅 비용~​$20 / month~​$6 / month
마이그레이션 시간~​20–30 minutes
다운타임없음없음
데이터베이스 마이그레이션스트리밍 명령 하나

내 원래 설정

Rails API

Heroku Dyno

JawsDB (MySQL)

월간 대략 비용

ServiceProviderCost
앱 호스팅Heroku~$7–10
MySQLJawsDB~$10–12
총합~$20/month

크지는 않지만, 사이드 프로젝트에서는 인프라를 간단하고 저렴하게 유지하는 것을 선호합니다.

새로운 설정

Rails API

Railway App

Railway MySQL

새로운 비용 내역

서비스제공자비용
앱 호스팅Railway~$3–4
MySQLRailway~$2
총합~$6/month

대략 70 % 비용 절감입니다.

Source:

Migration Strategy

마이그레이션은 네 단계로 구성되었습니다:

  1. Link the Railway project
  2. Export the database from JawsDB
  3. Import the data into Railway MySQL
  4. Update the Rails configuration

다운타임은 필요하지 않았습니다.

  1. Railway CLI를 설치하고 인증합니다.
  2. 다음을 실행합니다:
railway link

What this does

  • 로컬 레포를 Railway 프로젝트에 연결합니다
  • CLI가 해당 프로젝트에 대해 명령을 실행할 수 있게 합니다
  • 로컬에 .railway 폴더를 생성합니다

이 단계는 레포지토리당 한 번만 수행하면 됩니다.

Step 2: Dump Data from JawsDB and Import into Railway

덤프 파일을 만든 뒤 나중에 가져오는 대신, 데이터베이스를 직접 스트리밍할 수 있습니다.

mysqldump \
  -h [jawsdb-host] \
  -u [jawsdb-user] \
  -p[jawsdb-password] \
  --no-tablespaces \
  --set-gtid-purged=OFF \
  --single-transaction \
  [jawsdb-database] \
| railway run -s MySQL mysql \
  -h $MYSQLHOST \
  -u $MYSQLUSER \
  -p$MYSQLPASSWORD \
  $MYSQLDATABASE

What this does

  • JawsDB에서 데이터베이스를 내보냅니다
  • 출력 결과를 바로 Railway MySQL에 파이프합니다

Why These Flags Matter

FlagReason
--no-tablespacesJawsDB는 AWS RDS에서 실행되며, 테이블스페이스 덤프에 필요한 권한이 제한됩니다.
--set-gtid-purged=OFF복제 메타데이터가 가져오기 중 충돌을 일으키는 것을 방지합니다.
--single-transaction내보내는 동안 일관된 스냅샷을 생성합니다(InnoDB 테이블에 이상적).

Why Streaming the Database Is Powerful

파이프(|)를 사용해 SQL 출력을 직접 Railway로 스트리밍합니다:

JawsDB → mysqldump → pipe → Railway MySQL

Benefits

  • 중간 덤프 파일이 필요 없음
  • 마이그레이션 속도 향상
  • 디스크 사용량 감소
  • 대용량 데이터베이스에 적합

Step 3: Verify the Migration

가져온 후, 다음 명령으로 마이그레이션을 확인합니다:

railway run -s MySQL mysql \
  -h $MYSQLHOST \
  -u $MYSQLUSER \
  -p$MYSQLPASSWORD \
  $MYSQLDATABASE \
  -e "SHOW TABLES;"

테이블 목록이 표시되어야 합니다. 예:

users
transactions
posts
comments

Step 4: Update Rails Configuration

이전에는 Rails 앱이 JawsDB DATABASE_URL을 사용했습니다. Railway는 자동으로 다음 환경 변수를 제공합니다:

MYSQLHOST
MYSQLPORT
MYSQLUSER
MYSQLPASSWORD
MYSQLDATABASE
MYSQL_URL

가장 간단한 Rails 설정은 다음과 같습니다:

production:
  adapter: mysql2
  url:

코드를 푸시하면 Railway가 자동으로 애플리케이션을 재배포합니다.

Heroku vs Railway (간단 비교)

기능Heroku + JawsDBRailway
호스팅 모델앱 다이노 + 애드온하나의 플랫폼에서 앱 + 서비스
데이터베이스JawsDB MySQL 애드온네이티브 관리형 MySQL
비용 (소규모 프로젝트)~​$20 / 월~​$6 / 월
배포Git pushGit push (자동 재배포)

결론: Heroku + JawsDB에서 Railway로 작은 Rails API를 옮김으로써, 월 호스팅 비용을 약 70 % 절감했으며, 30 분 이내에 마이그레이션을 완료했고 다운타임 없이 진행했습니다. 🚀

Git push / GitHub integration

FeatureHerokuRailway
Environment variables지원지원
CLI toolsHeroku CLIRailway CLI
Database migration수동 덤프 / 가져오기railway run 으로 간편하게
Infrastructure management관리형관리형
Static outbound IP보장되지 않음보장되지 않음
Best suited for성숙한 프로덕션 앱사이드 프로젝트 및 소규모 앱

Final Thoughts

Heroku는 여전히 최고의 개발자 경험 중 하나를 제공합니다.

하지만 소규모 프로젝트나 사이드 툴의 경우, 인프라를 단순화하고 비용을 절감하는 것이 의미가 있을 수 있습니다.

내 Rails API를 Railway 로 옮기면서 얻은 점은 다음과 같습니다:

  • 간소화된 스택
  • 호스팅 비용 약 70% 절감
  • 최소한의 마이그레이션 노력

Heroku에서 MySQL을 사용하고 있는 소규모 Rails 프로젝트를 운영 중이라면, Railway 를 검토해 보는 것이 좋을 것입니다.

Question for Other Developers

사이드 프로젝트를 호스팅하고 있다면:

  • 아직도 Heroku를 사용하고 있나요?
  • 아니면 Railway, Fly.io, Render 같은 플랫폼으로 옮겼나요?

여러분의 스택이 어떻게 구성되어 있는지 궁금합니다.

0 조회
Back to Blog

관련 글

더 보기 »

개발자 역할, 재정의

Developer = Product + Architect + QA. 이것이 AI 에이전트가 가져온 새로운 현실 속에서 오늘날 소프트웨어 엔지니어의 역할이다. 그리고 만약 그 공식이 …