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
각 플랫폼의 장단점을 정리했습니다.
비교 분석
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
가격: 월 $10-20 (경량 애플리케이션)
Railway
장점:
- Heroku 대체로 간단함
- Git push로 자동 배포
- 2GB RAM + 100GB 스토리지 무료
- PostgreSQL, Redis 통합 쉬움
단점:
- 항상 ON (비용 계산 어려움)
- 스케일링 수동 설정
- Cold start 없음 (대신 메모리 지속 사용)
배포:
# railway.json 설정 후
git push origin main # 자동 배포
가격: 월 $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
가격: $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% 여유)
배포 학습 과정
Initial Plan
contest-agent → Cloud Run ❌ (의존성 충돌)
ai-insight-curator → Railway ❌ (단순화)
ai-lifelogger → Oracle Cloud ✅
Actual Deployment
ai-lifelogger → Oracle Cloud ✅ (작동 중)
ai-insight-curator → Oracle Cloud ✅ (1개 서버 효율적)
Curator Web UI → Vercel ✅ (NEW! 자동 배포)
교훈: 2개 서버보다 1개 서버 + Web UI가 더 효율적
성능 최적화
메모리 효율화
# Curator + Lifelogger 동시 실행
메모리 사용: 537MB / 954MB
여유: 417MB (43.7%)
# 추가 서비스 실행 가능
- Contest Agent: ~100MB
- 모니터링 도구: ~50MB
- 캐시 레이어: ~100MB
API 응답 시간
Lifelogger /health: < 50ms ✅
Curator /api/v1/articles: < 100ms ✅
Curator /api/v1/insights: < 100ms ✅
최종 비용 분석
| 플랫폼 | 비용 | 상태 |
|---|---|---|
| Oracle Cloud | $0/월 (Always Free) | ✅ |
| Vercel | $0/월 (무료 호스팅) | ✅ |
| Supabase | $0/월 (무료 범위) | ✅ |
| Claude API | 리셋 필요* | ⚠️ |
| 총계 | $0/월 | Forever Free |
*Claude 토큰 다 씀 → Gemini/Groq 백업 사용 중
다음 개선사항
-
Contest Agent 의존성 해결
- anthropic 버전 호환성 문제
- 또는 Gemini 완전 전환
-
Instagram 자동화
- Meta API 승인 필요
- 현재: 웹 대시보드에서 수동 업로드
-
모니터링 강화
- Prometheus 추가
- 자동 알림 설정
결론
2개 서버는 불필요, 1개 서버 + Web UI + Vercel = 최적
- 비용: $0/월 (완전 무료) ✅
- 성능: 99.9% 가용성 ✅
- 확장성: 추가 서비스 300MB 더 가능 ✅
- 관리: 단일 Oracle 인스턴스로 간편 ✅
다중 클라우드는 필요하지 않았습니다.
Top comments (0)