Daeseon Yoo
Back to project
·Decision·4 min

OCI 영구무료 이관을 검토하고, 결국 AWS에 남은 이유

백엔드를 AWS(12개월 무료)에서 Oracle Cloud 영구무료 Arm으로 옮기려 시도. OCI Terraform을 작성·적대적 검증까지 했지만 세 벽에 막힘 — VCN 개수 한도, 수동 삭제의 의존성 순서 함정, 그리고 Always-Free Ampere A1의 고질적 'Out of host capacity'. 용량을 푸는 PAYG 업그레이드마저 멈춤. 결정: 이관 보류, AWS 무료티어 유지, 검증된 OCI 설정은 나중 재시도용으로 보존.

지금 구성에서 미래에 돈 나가는 건 AWS RDS의 12개월 무료가 끝난 뒤뿐이다. OCI 영구무료(Arm Ampere A1, 4코어/24GB, 영원히 무료)면 그걸 영구 0원으로 만들 수 있어 보였다 — 앱 Docker 이미지 + 셀프호스트 Postgres를 무료 VM 하나에. 이건 그 검토 기록이고, 왜 이관을 끝내지 않았는지에 대한 것이다.

설정 자체는 쉬웠다

OCI Terraform을 처음부터 작성 — ~/.oci/config 기반 provider 인증, OCI가 직접 다 만들게 하는 네트워크 경로(VCN, 인터넷게이트웨이, 라우트테이블, 퍼블릭 서브넷, 시큐리티리스트), 그리고 Ubuntu 이미지를 data source로 잡은 A1.Flex 인스턴스. 초안 적대적 리뷰가 진짜 버그를 잡았다 — oci_core_images를 shape로만 거르면 x86 이미지가 잡힐 수 있어서 display_nameaarch64 정규식 필터를 추가 — 그리고 ocpus/memory를 4코어/24GB 무료 한도 안에 묶는 validation도 넣었다. terraform validate 통과.

apply에서 만난 세 벽

1. VCN 개수 한도.

400-LimitExceeded, The following service limits were exceeded: vcn-count.

테넌시가 이미 VCN 한도에 차 있었다 — 예전 자동화 시도의 잔재 json-claude-vnic. 지워야 했다.

2. 수동 삭제 = 의존성 순서 퍼즐. 그 VCN을 손으로 지우려니, 라우트테이블이 아직 0.0.0.0/0을 인터넷게이트웨이로 보내고 있어서 실패:

The Route Table ... references the Internet Gateway ... You must remove the reference to proceed.

라우트 규칙 먼저 제거 → 게이트웨이 → VCN 순서. (terraform destroy는 이 순서를 자동으로 풀어준다 — 손으로 겪는 이 고생이 곧 "Terraform이 만든 리소스는 Terraform이 소유하게 하라"는 근거다.)

3. Out of host capacity — 진짜 벽. VCN 자리가 비자 네트워킹은 깔끔히 생성됐지만, 인스턴스는 안 됐다:

500-InternalError, Out of host capacity.

유명한 Always-Free Ampere A1 부족 현상이다: ca-toronto-1(단일 AD 리전이라 다른 가용영역도 없음)에 나눠줄 무료 A1 호스트가 없다. 요청을 2코어/12GB에서 1코어/6GB로 줄여도 소용없었다 — 용량 에러는 크기가 아니라 호스트 가용성 문제다.

탈출구는 자리가 날 때까지의 재시도 루프, 또는 Pay As You Go 전환(무료 A1은 그대로 무료지만 용량 우선순위가 올라감)뿐이다. 그런데 PAYG 업그레이드 화면 자체가 콘솔에서 멈췄다.

결정

이관 보류, 워크로드는 AWS 무료티어 유지. 기술적 막다른 길이 아니라 시간 대 목표의 트레이드오프였다: 목표는 취업이고 거기선 AWS 경험이 OCI보다 중요하며, AWS는 이미 라이브고 12개월 무료고, Always-Free Arm 용량(+ 버벅대는 결제 업그레이드)과 싸우는 건 끝이 안 보이는 시간 소모다. OCI의 영구무료 리소스는 진짜다 — 다만 접근성이 유료 사용 뒤로 밀려 있고, 그건 "영원히 무료" 문구를 읽는 법에 대한 또 하나의 교훈이다.

보존한 것: OCI Terraform은 작성·검증·validate 통과 상태로 infra-oci/에 있다. 그래서 나중 재시도(재시도 루프, 한산한 시간대, 또는 PAYG)는 terraform apply 한 번이면 된다 — 재작업 없음.