피드로 돌아가기
Multi-Cloud Deployment in Production: Cloud Run, Railway, Oracle Cloud
Dev.toDev.to
Infrastructure

멀티 클라우드 제약 해결을 통한 월 비용 $0 및 가동률 99.9% 달성

Multi-Cloud Deployment in Production: Cloud Run, Railway, Oracle Cloud

JustJinoIT2026년 6월 7일6intermediate

Context

FastAPI 기반의 3개 프로젝트를 각기 다른 클라우드 환경에 배포하며 플랫폼별 런타임 제약 사항과 비용 효율성을 검증함. 특히 서버리스 환경의 Cold Start 및 포트 바인딩 타임아웃과 인스턴스 메모리 부족으로 인한 빌드 실패 문제를 해결해야 하는 상황임.

Technical Solution

  • Cloud Run의 Health Check 타임아웃 해결을 위해 I/O 블로킹 작업을 지연 실행하는 Lazy Loading 패턴 도입
  • Railway의 Memory Leak 방지를 위해 RSS feed crawler의 메모리 해제 로직 점검 및 로컬 Pytest/Pylint 검증 단계 강제
  • Oracle Cloud의 RAM 1GB 제한으로 인한 pip install MemoryError 해결을 위해 8GB Swap File 설정 및 --no-cache-dir 옵션 적용
  • 의존성 충돌 및 버전 꼬임 방지를 위해 strict version pinning 대신 pip의 Dependency Resolver에 맡기는 유연한 버전 관리 전략 채택
  • 수동 배포 오버헤드 제거를 위한 GitHub Actions 기반의 SSH 원격 명령 자동화 파이프라인 구축

Impact

  • Cloud Run Startup 시간: 60s+ (Timeout) → 100ms로 단축
  • 월간 인프라 비용: $40 (Cloud Run + Railway) → $0 (Oracle Cloud + Supabase + Vercel)으로 절감
  • 리소스 확보: Oracle Cloud 활용으로 CPU 4 cores 및 RAM 24GB 환경 구축

- 서버리스 배포 시 Startup 로직의 I/O 블로킹 여부를 확인하고 Lazy Initialization 적용 검토 - 저사양 VPS 환경의 패키지 설치 실패 시 Swap Memory 설정 및 캐시 비활성화 적용 - Auto-deploy 환경에서는 CI 단계에서 Lint 및 Local Docker Test를 통과한 커밋만 Main에 병합하는 가드레일 구축 - 트래픽 규모에 따라 Autoscaling(Cloud Run), 편의성(Railway), 비용절감(Oracle) 중 최적의 플랫폼 선택

원문 읽기