Exodus for Google Cloud Run — Upgrade any app to Cloud Run, with your coding agent
코딩 에이전트와 앱을 Google Cloud Run으로 옮기는 Exodus
Exodus는 저장소를 검사해 Cloud Run으로 옮길 때 필요한 변경과 예상 비용을 정리하고, 코딩 에이전트가 작업을 수행하도록 돕는 오픈소스 CLI입니다. 제작진은 50개 이상의 플레이북과 작업별 커밋·테스트 절차를 제공하며, 상태가 많은 앱이나 지속적으로 부하가 큰 앱에는 이전을 권하지 않을 수 있다고 설명합니다.
- 주제
에디터 노트
Exodus의 설득력은 Cloud Run 이전에서 자주 걸리는 상태 관리와 데이터 이동을 검사 항목과 순서가 있는 작업으로 구체화한 데 있습니다. 메모리 세션이나 로컬 파일처럼 서버리스 환경에서 문제가 되는 요소를 찾고 대체 방안을 제시하며, 데이터베이스 이전에는 복제 지연과 복구 경로까지 포함합니다. 댓글에서 제작진이 밝힌 제약도 이 접근의 범위를 분명히 합니다. 스키마 변경과 대형 객체는 복제되지 않고 일부 테이블에는 추가 조건이 따릅니다. 현재 비용 산정은 가능한 경우 플랫폼 CLI나 청구서를 읽고 모르는 값은 사용자에게 묻는 방식입니다. 따라서 비교 결과는 제공된 비용 정보에 좌우됩니다. 또 제작진은 도구가 결제나 IAM을 임의로 바꾸지 않는다고 설명했고, 예산 설정은 사용자 승인 뒤 에이전트가 실행하는 단계로 추가했습니다. 저장소 분석과 작업 계획은 자동화하지만 운영 환경 변경에는 사람의 판단과 승인이 남는 구조입니다.
AI 요약
Exodus는 기존 앱의 Cloud Run 이전을 Claude Code, Codex, Cursor 같은 코딩 에이전트와 함께 진행하는 도구입니다. 로컬에서 저장소를 검사해 현재 배포 방식과 프로세스, 데이터 저장소, 설정을 파악하고 Cloud Run에서 문제가 될 패턴을 찾습니다. 현재 플랫폼의 비용과 Google Cloud의 예상 비용을 비교한 뒤, 50개 이상의 플레이북을 바탕으로 변경 사항과 순서를 제시합니다. 에이전트는 계획을 작업 단위로 실행하며 커밋과 테스트를 남깁니다. 제작진은 코드와 비밀값이 로컬에 남고 자체 AI를 실행하지 않는다고 설명합니다.
검사와 비용 산정
CLI는 Procfile, railway.json, render.yaml, fly.toml, Docker Compose 파일과 Dockerfile, 코드 등을 살펴봅니다. 웹 서버와 워커, 예약 작업, 데이터베이스와 캐시, 로컬 파일, 환경 변수 이름 등을 확인하고 Cloud Run에서 다르게 동작하거나 유휴 시간에도 비용을 발생시킬 수 있는 패턴을 파일과 줄 번호로 제시합니다. 메모리 세션과 캐시, 로컬 디스크 파일, 프로세스 안의 타이머, 큐를 기다리는 워커 등이 검사 대상입니다. 발견 항목에는 Cloud Tasks나 Cloud Scheduler, Cloud Storage, 서명 쿠키, 데이터베이스 같은 대체 방안이 붙습니다.
비용 비교는 Google Cloud의 공개 요금을 기준으로 하며 트래픽, 사용자 지역, 현재 지출을 반영합니다. 현재 비용은 가능한 경우 플랫폼 CLI나 청구서에서 가져오고, 확인할 수 없는 항목은 사용자에게 묻습니다. 보고서는 16개 리전과 12개월 전망을 포함할 수 있으며 링크로 공유하거나 Markdown, JSON으로 내려받을 수 있습니다. 한 달 뒤에는 BigQuery 청구 내보내기에서 실제 Cloud Run 비용을 읽어 예상치와 항목별로 비교하는 기능도 설명합니다.
이전 절차와 적용 조건
각 변경은 작업 하나와 커밋 하나, 테스트 하나로 나뉩니다. 데이터 이전은 복사 전후의 행 수와 주요 테이블 체크섬, 시퀀스를 비교합니다. 작은 데이터베이스는 기존 앱을 운영하면서 사전 복원 시간을 측정하고, 전환 때 쓰기를 멈춘 뒤 다시 복사해 검증하는 방식을 제안합니다. 대형 데이터베이스나 중단 시간을 허용하기 어려운 경우에는 Google Database Migration Service로 복제한 뒤 복제 지연이 0이 되면 Cloud SQL로 전환하는 방안을 안내합니다. 제작진은 스키마 변경이 복제되지 않고, 기본 키가 없는 테이블은 삽입만 복제되며, 대형 객체는 이전되지 않는 등 사전 확인이 필요한 제약도 밝혔습니다. 기존 데이터베이스는 새 환경이 안정적으로 동작할 때까지 되돌아갈 경로로 남겨둡니다.
Exodus가 모든 앱의 이전을 권하는 것은 아닙니다. 상태가 많은 서비스나 계속 높은 부하를 받는 서비스, 영구 디스크가 필요한 서비스는 Cloud Run에 맞지 않을 수 있으며 보고서가 그대로 머무르라는 판정을 내릴 수 있다고 제작진은 설명합니다. 제품은 무료이며 CLI는 오픈소스입니다. 출시 후 제작진은 예산과 지출 알림 설정 단계를 추가했다고 답했고, 사용자가 승인하면 에이전트가 프로젝트 예산과 50%, 90%, 100% 및 예상 지출 기준 이메일 알림을 설정하도록 안내한다고 밝혔습니다.
Product Hunt 반응
- @abdugafur — Exodus 자체도 Cloud Run에서 실행합니다. API와 웹 관리 화면은 Rust(axum) 서비스 하나로 europe-west1에 배포했고 Firestore를 사용하며 0부터 확장합니다. 제품은 저장소를 검사하고 현재 비용과 Cloud Run 비용을 비교한 뒤 50개 이상의 플레이북으로 변경 계획을 세웁니다. 제작진은 먼저 자신들의 앱을 옮겼습니다.
- @sara_ford_goog — Exodus가 무엇을 검사하는지, 앱이 이미 서버리스 구조라고 가정하는지, 상태 유지 여부도 확인하는지 궁금합니다. 지출 한도와 예산 설정도 지원하는지, 현재 지출은 어떻게 파악하는지도 묻습니다.
- @abdugafur — CLI는 배포 파일과 코드를 읽고 프로세스, 데이터, 환경 변수 이름, Cloud Run에서 문제가 되거나 유휴 비용을 만드는 패턴을 파일과 줄 번호와 함께 찾습니다. 서버리스 구조라고 가정하지 않으며 메모리 세션, 로컬 파일, 프로세스 안의 타이머, 큐 대기 워커 등을 살핍니다. 상태가 많거나 부하가 계속 높은 서비스는 이전 대신 현재 환경에 머물라는 판정을 내릴 수 있습니다. Exodus가 직접 결제나 IAM을 변경하지는 않으며 비용 발생 작업은 사용자의 승인을 기다립니다. 당시에는 예산을 만들지 않았지만 예산 단계가 필요하다는 의견에 동의한다고 답했습니다. 현재 비용은 가능한 경우 플랫폼 CLI나 청구서에서 읽고, 알 수 없는 값은 사용자에게 묻습니다.
- @abdugafur — 후속 답변에서 v0.2.10부터 계획에 예산 및 알림 단계가 추가됐다고 밝혔습니다. Cloud Run 예상 비용을 기준으로 프로젝트 예산을 설정하고 지출 50%, 90%, 100%와 예상 지출에 이메일 알림을 둡니다. 사용자가 승인하면 에이전트가 사용자의 gcloud로 명령을 실행합니다.
- @0xandrewshu — 다른 클라우드에서 GCP로 앱을 옮기고 싶었던 적이 있어 이런 이전 도구가 유용해 보입니다. 대규모 데이터를 중단 없이 옮기는 방법을 물었습니다.
- @abdugafur — 덤프와 복원은 복사 시간만큼 쓰기를 멈춰야 하므로 대형 데이터베이스에는 연속 복제를 사용한다고 답했습니다. PostgreSQL에서 Cloud SQL로 옮길 때 Google Database Migration Service를 쓰고, 전환 시 쓰기를 멈춘 뒤 지연이 사라지면 Cloud SQL을 승격합니다. 스키마 변경과 대형 객체는 이전되지 않으며 기본 키가 없는 테이블에는 제약이 있다고 설명했습니다. 새 데이터베이스가 안정될 때까지 기존 데이터베이스를 되돌아갈 경로로 유지합니다.
원문: Product Hunt / 번역·요약: Trawling