DEV Community

JustJinoIT
JustJinoIT

Posted on

FastAPI 다중 클라우드 배포: Cloud Run vs Railway vs Oracle Cloud

FastAPI 다중 클라우드 배포: Cloud Run vs Railway vs Oracle Cloud

Published on: 2026-06-06

Reading time: 7 min

Tags: #fastapi #devops #cloud #deployment

3개 FastAPI 프로젝트, 3개 클라우드

contest-agent      → Google Cloud Run
ai-insight-curator → Railway
ai-lifelogger      → Oracle Cloud
Enter fullscreen mode Exit fullscreen mode

각 플랫폼의 장단점을 정리했습니다.

비교 분석

Google Cloud Run

장점:

  • 자동 스케일링 (0 → N)
  • 컨테이너 기반 (Dockerfile 그대로 사용)
  • 무료 할당량 200만 요청/월
  • 마이크로초 단위 청구

단점:

  • Cold start 3-5초 (초기화 시간)
  • 최대 1시간 타임아웃
  • 메모리 제한 512MB~8GB

최적화:

# 앱 시작 시간 단축
@app.on_event("startup")
async def startup():
    # 무거운 초기화는 첫 요청에서 진행
    global _initialized
    if not _initialized:
        await lazy_init()
        _initialized = True
Enter fullscreen mode Exit fullscreen mode

가격: 월 $10-20 (경량 애플리케이션)

Railway

장점:

  • Heroku 대체로 간단함
  • Git push로 자동 배포
  • 2GB RAM + 100GB 스토리지 무료
  • PostgreSQL, Redis 통합 쉬움

단점:

  • 항상 ON (비용 계산 어려움)
  • 스케일링 수동 설정
  • Cold start 없음 (대신 메모리 지속 사용)

배포:

# railway.json 설정 후
git push origin main  # 자동 배포
Enter fullscreen mode Exit fullscreen mode

가격: 월 $5-15 (고정 비용)

Oracle Cloud

장점:

  • 항상 무료 (Always Free tier)
  • 4 CPU, 24GB RAM 무료
  • 200GB 스토리지
  • 대역폭 제한 없음

단점:

  • 수동 관리 (Compute Instance)
  • SSH로 배포 (자동화 필요)
  • 대기 시간 길어질 수 있음

배포:

ssh oracle@your-oracle-ip
cd /path/to/ai-lifelogger
git pull origin main
systemctl restart ai-lifelogger.service
Enter fullscreen mode Exit fullscreen mode

가격: $0 (Always Free)

선택 기준

상황 추천
높은 트래픽, 자동 스케일 ☁️ Cloud Run
중간 트래픽, 간단한 배포 🚂 Railway
낮은 트래픽, 비용 최소화 🦅 Oracle Cloud

실제 구성

최종 배포 구성 (2026-06-07)

🦅 Oracle Cloud (Always Free Tier)
├─ ai-lifelogger (포트 8000)
│  ├─ FastAPI + APScheduler
│  ├─ 일간 요약: 매일 05:00 KST
│  ├─ 주간 회고: 매주 일 08:00 KST
│  └─ 메모리: 111MB / 954MB
│
└─ ai-insight-curator (포트 8001)
   ├─ FastAPI + Telegram Bot
   ├─ RSS 수집: 매일 06:00 KST
   ├─ 자동 요약 (Claude/Gemini/Groq)
   └─ 메모리: 22MB / 954MB

🌐 Vercel (무료 호스팅)
└─ Curator Web Dashboard
   ├─ React + Vite
   ├─ 기사 검색 & 필터
   ├─ 이미지 다운로드
   └─ https://curator-web-ui.vercel.app

📊 총 메모리 사용: 537MB / 954MB (56% 사용, 44% 여유)
Enter fullscreen mode Exit fullscreen mode

배포 학습 과정

Initial Plan

contest-agent → Cloud Run ❌ (의존성 충돌)
ai-insight-curator → Railway ❌ (단순화)
ai-lifelogger → Oracle Cloud ✅
Enter fullscreen mode Exit fullscreen mode

Actual Deployment

ai-lifelogger → Oracle Cloud ✅ (작동 중)
ai-insight-curator → Oracle Cloud ✅ (1개 서버 효율적)
Curator Web UI → Vercel ✅ (NEW! 자동 배포)
Enter fullscreen mode Exit fullscreen mode

교훈: 2개 서버보다 1개 서버 + Web UI가 더 효율적

성능 최적화

메모리 효율화

# Curator + Lifelogger 동시 실행
메모리 사용: 537MB / 954MB
여유: 417MB (43.7%)

# 추가 서비스 실행 가능
- Contest Agent: ~100MB
- 모니터링 도구: ~50MB
- 캐시 레이어: ~100MB
Enter fullscreen mode Exit fullscreen mode

API 응답 시간

Lifelogger /health: < 50ms ✅
Curator /api/v1/articles: < 100ms ✅
Curator /api/v1/insights: < 100ms ✅
Enter fullscreen mode Exit fullscreen mode

최종 비용 분석

플랫폼 비용 상태
Oracle Cloud $0/월 (Always Free)
Vercel $0/월 (무료 호스팅)
Supabase $0/월 (무료 범위)
Claude API 리셋 필요* ⚠️
총계 $0/월 Forever Free

*Claude 토큰 다 씀 → Gemini/Groq 백업 사용 중

다음 개선사항

  1. Contest Agent 의존성 해결

    • anthropic 버전 호환성 문제
    • 또는 Gemini 완전 전환
  2. Instagram 자동화

    • Meta API 승인 필요
    • 현재: 웹 대시보드에서 수동 업로드
  3. 모니터링 강화

    • Prometheus 추가
    • 자동 알림 설정

결론

2개 서버는 불필요, 1개 서버 + Web UI + Vercel = 최적

  • 비용: $0/월 (완전 무료) ✅
  • 성능: 99.9% 가용성 ✅
  • 확장성: 추가 서비스 300MB 더 가능 ✅
  • 관리: 단일 Oracle 인스턴스로 간편 ✅

다중 클라우드는 필요하지 않았습니다.

Top comments (0)