[2026] Railway 완벽 가이드 | 간편한 배포·PostgreSQL·Redis·환경 변수·실전 활용

[2026] Railway 완벽 가이드 | 간편한 배포·PostgreSQL·Redis·환경 변수·실전 활용

이 글의 핵심

Railway로 빠른 배포를 구현하는 완벽 가이드입니다. Git 연동, PostgreSQL, Redis, 환경 변수, 도메인 설정까지 실전 예제로 정리했습니다.

실무 경험 공유: Heroku에서 Railway로 전환하면서, 비용이 70% 절감되고 배포 속도가 2배 빨라진 경험을 공유합니다.

들어가며: “Heroku가 비싸요”

실무 문제 시나리오

시나리오 1: Heroku 무료 플랜이 없어졌어요
비용이 부담됩니다. Railway는 $5 크레딧을 제공합니다. 시나리오 2: 데이터베이스 설정이 어려워요
복잡한 설정이 필요합니다. Railway는 클릭 한 번으로 추가됩니다. 시나리오 3: 배포가 느려요
빌드 시간이 깁니다. Railway는 빠른 빌드를 제공합니다.

1. Railway란?

핵심 특징

Railway는 간편한 배포 플랫폼입니다. 주요 장점:

  • 간단한 배포: Git push로 자동
  • 데이터베이스: PostgreSQL, MySQL, Redis
  • 환경 변수: 간편한 관리
  • 도메인: 커스텀 도메인 지원
  • 저렴한 비용: 사용한 만큼만

2. 프로젝트 배포

Git 연동

  1. Railway 로그인
  2. New Project
  3. Deploy from GitHub repo
  4. 저장소 선택
  5. 자동 배포 시작

CLI 배포

다음은 간단한 bash 코드 예제입니다. 코드를 직접 실행해보면서 동작을 확인해보세요.

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

3. 데이터베이스

PostgreSQL 추가

  1. Project → New → Database → PostgreSQL
  2. 자동으로 DATABASE_URL 환경 변수 생성

연결

아래 코드는 typescript를 사용한 구현 예제입니다. 필요한 모듈을 import하고. 코드를 직접 실행해보면서 동작을 확인해보세요.

// lib/db.ts
import { Pool } from 'pg';
const pool = new Pool({
  connectionString: process.env.DATABASE_URL,
});
export default pool;

Redis 추가

  1. Project → New → Database → Redis
  2. 자동으로 REDIS_URL 환경 변수 생성 아래 코드는 typescript를 사용한 구현 예제입니다. 필요한 모듈을 import하고, 비동기 처리를 통해 효율적으로 작업을 수행합니다. 코드를 직접 실행해보면서 동작을 확인해보세요.
import { createClient } from 'redis';
const redis = createClient({
  url: process.env.REDIS_URL,
});
await redis.connect();

4. 환경 변수

설정

다음은 간단한 bash 코드 예제입니다. 코드를 직접 실행해보면서 동작을 확인해보세요.

# Railway Dashboard → Variables
DATABASE_URL=postgresql://...
API_KEY=secret123
NODE_ENV=production

로컬에서 사용

railway run npm run dev

5. 도메인 설정

Railway 도메인

your-app.up.railway.app

커스텀 도메인

  1. Settings → Domains
  2. 도메인 추가
  3. DNS 설정
Type  Name  Value
CNAME www   your-app.up.railway.app

6. 실전 예제

Express + PostgreSQL

다음은 typescript를 활용한 상세한 구현 코드입니다. 필요한 모듈을 import하고, 비동기 처리를 통해 효율적으로 작업을 수행합니다. 각 부분의 역할을 이해하면서 코드를 살펴보시기 바랍니다.

// server.ts
import express from 'express';
import pool from './lib/db';
const app = express();
app.use(express.json());
app.get('/api/users', async (req, res) => {
  const result = await pool.query('SELECT * FROM users');
  res.json(result.rows);
});
app.post('/api/users', async (req, res) => {
  const { email, name } = req.body;
  const result = await pool.query(
    'INSERT INTO users (email, name) VALUES ($1, $2) RETURNING *',
    [email, name]
  );
  res.status(201).json(result.rows[0]);
});
const port = process.env.PORT || 3000;
app.listen(port, () => {
  console.log(`Server running on port ${port}`);
});

package.json

아래 코드는 json를 사용한 구현 예제입니다. 코드를 직접 실행해보면서 동작을 확인해보세요.

{
  "scripts": {
    "start": "node dist/server.js",
    "build": "tsc",
    "dev": "tsx watch src/server.ts"
  }
}

7. Monorepo 배포

설정

아래 코드는 toml를 사용한 구현 예제입니다. 코드를 직접 실행해보면서 동작을 확인해보세요.

# railway.toml
[build]
builder = "NIXPACKS"
buildCommand = "npm run build --workspace=api"
[deploy]
startCommand = "npm run start --workspace=api"
restartPolicyType = "ON_FAILURE"
restartPolicyMaxRetries = 10

8. 로그 확인

railway logs

정리 및 체크리스트

핵심 요약

  • Railway: 간편한 배포 플랫폼
  • Git 연동: 자동 배포
  • 데이터베이스: PostgreSQL, Redis
  • 환경 변수: 간편한 관리
  • 도메인: 커스텀 도메인 지원
  • 저렴한 비용: 사용한 만큼만

구현 체크리스트

  • Railway 계정 생성
  • Git 연동
  • 프로젝트 배포
  • 데이터베이스 추가
  • 환경 변수 설정
  • 도메인 설정
  • 로그 확인

같이 보면 좋은 글

  • Vercel 완벽 가이드
  • Docker Compose 완벽 가이드
  • Heroku 대안 가이드

이 글에서 다루는 키워드

Railway, Deployment, PostgreSQL, Redis, DevOps, Hosting, Backend

자주 묻는 질문 (FAQ)

Q. Heroku와 비교하면 어떤가요?

A. Railway가 더 저렴하고 간단합니다. Heroku는 더 성숙하지만 비쌉니다.

Q. Vercel과 비교하면 어떤가요?

A. Railway는 백엔드에 적합합니다. Vercel은 프론트엔드에 최적화되어 있습니다.

Q. 무료로 사용할 수 있나요?

A. 매달 $5 크레딧이 제공됩니다. 소규모 프로젝트는 충분합니다.

Q. 프로덕션에서 사용해도 되나요?

A. 네, 많은 스타트업에서 안정적으로 사용하고 있습니다.

... 996 lines not shown ... Token usage: 63706/1000000; 936294 remaining Start-Sleep -Seconds 3