맥북 서버 탈출기

[맥북 서버 탈출기 2편] 오라클 vs Cloudflare, 고를 필요가 없었다

TerryDev 2026. 10. 15. 14:20

이 글 요약

  • 맥북에서 내보낼 백엔드 2개의 조건 정리 (Spring Boot, MySQL, 메모리 약 1.5GB)
  • 후보 5곳 비교: Cloudflare Workers, 오라클 클라우드, AWS·GCP 무료 티어, PaaS, 그리고 맥북 유지
  • 결론: 오라클은 서버, Cloudflare는 입구와 창고. 둘은 경쟁 관계가 아니었다

1편에서 맥북 서버를 떠나기로 했다. 이제 어디로 갈지 정할 차례다.

처음에는 "오라클 클라우드냐, Cloudflare냐"를 고르는 문제라고 생각했다. 둘 다 무료로 쓸 수 있고, 개인 개발자 사이에서 자주 언급되는 이름이다. 결론부터 말하면 둘 중 하나를 고르는 문제가 아니었다. 그걸 알기까지의 과정을 정리한다.


먼저, 옮길 짐부터 쟀다

어디로 이사할지 정하려면 짐 크기부터 알아야 한다.

항목 내용
백엔드 Spring Boot (Java 21) 2개. 두 앱 합쳐 Java 코드 약 1만 7천 줄
DB MySQL 하나에 DB 2개 (합계 약 15MB)
파일 커플 앱의 사진 업로드 폴더 약 60MB
무거운 작업 커플 앱의 GIF 생성 (CPU를 꽤 쓴다)
메모리 실측 Java 앱 각각 240~490MB, MySQL 약 550MB

메모리만 합쳐도 1.5GB 가까이 된다. 여유분까지 생각하면 최소 2GB, 넉넉하게는 4GB 이상이 필요했다. 이 숫자 하나로 후보가 꽤 걸러졌다.


후보 1. Cloudflare Workers: 가장 멋있었고, 가장 먼저 탈락했다

Cloudflare Workers는 서버를 관리하지 않고 코드만 올리는 서버리스 플랫폼이다. 전 세계 엣지에서 돌고, 무료 플랜도 넉넉하다. DB(D1)와 파일 저장소(R2)도 같이 쓸 수 있다.

문제는 내 짐이었다.

  • Java를 그대로 못 돌린다. Workers는 JavaScript/TypeScript 중심이다. 1만 7천 줄을 다시 써야 한다.
  • 무거운 작업에 안 맞는다. 무료 플랜은 요청 하나당 CPU 시간이 매우 짧게 제한된다. GIF 생성 같은 작업은 거기에 들어가지 않는다.
  • DB도 바뀐다. MySQL에서 D1(SQLite 기반)로 옮기면 쿼리와 스키마를 다시 손봐야 한다.

새로 만드는 서비스라면 좋은 선택지다. 실제로 다음에 새 백엔드를 만들면 TypeScript로 Workers에 올리는 걸 고려하고 있다. 하지만 이번 목표는 이사였다. 이삿짐 센터를 불렀는데 집을 새로 지으라고 하면 곤란하다.


후보 2. 오라클 클라우드 Always Free: 조건이 맞는 유일한 무료 서버

오라클 클라우드는 기간 제한 없는 무료 서버(Always Free)를 준다. 2026년 기준 ARM 서버 한도는 이렇다.

항목 무료 한도
ARM CPU 2 OCPU
메모리 12GB
디스크 합계 200GB
외부 전송량 월 10TB

예전 글들에는 4 OCPU / 24GB로 나오는데, 2026년에 절반으로 줄었다. 그래도 내 짐(2GB 남짓)에는 차고 넘친다. 무엇보다 평범한 리눅스 서버라서 Java 앱을 코드 한 줄 안 고치고 그대로 올릴 수 있다.

단점도 분명하다.

  • 생성이 잘 안 될 때가 있다. 인기 리전은 ARM 자원이 자주 부족하다.
  • 무료 계정은 회수될 수 있다. 7일 동안 사용률이 계속 낮으면 인스턴스를 회수한다. 종량제(PAYG) 계정은 대상에서 빠진다.
  • 계정이 갑자기 막혔다는 후기가 종종 있다. 그래서 백업은 반드시 오라클 밖에 둬야 한다고 판단했다. 이건 7편에서 다룬다.

공짜에는 이유가 있다. 그 이유를 알고 쓰면 된다.


후보 3. AWS·GCP 무료 티어: 너무 작거나, 기한이 있다

  • AWS: 프리 티어가 기간 한정이다. 신규 계정 크레딧 방식으로 바뀐 뒤로는 "언젠가 끝나는 무료"다. 끝나는 날짜를 달력에 적어 두는 서비스 운영은 하고 싶지 않았다.
  • GCP: 상시 무료 VM이 있지만 메모리가 1GB 수준이다. Spring Boot 두 개와 MySQL을 올리면 서버보다 스왑이 더 바빠진다.

둘 다 좋은 클라우드다. 내 조건과 예산(0원)에 안 맞았을 뿐이다.


후보 4. PaaS (Fly.io, Railway, Render 등): 편하지만 공짜는 아니다

코드를 올리면 알아서 배포해 주는 서비스들이다. 사실 커플 앱 저장소에는 예전에 Fly.io를 시도한 흔적(fly.toml)이 남아 있다.

편의성은 최고다. 하지만 무료로는 사용량이 넉넉하지 않거나, 앱이 잠들었다가 깨어나는 동안 첫 요청이 느리다. 앱 2개와 DB를 상시로 돌리면 결국 매달 돈이 나간다. 0원 목표와는 맞지 않았다.


후보 5. 그냥 맥북 유지

1편을 읽었다면 설명은 생략한다.


비교 정리

기준 Workers 오라클 Free AWS·GCP 무료 PaaS 맥북
월 비용 0원 0원 0원 (기한·크기 제한) 유료 가능성 큼 0원
코드 수정 전면 재작성 없음 없음 거의 없음 없음
메모리 2GB 이상 해당 없음 12GB 부족 요금에 따라 있음
무거운 작업 어려움 가능 가능 가능 가능
가장 큰 위험 재작성 비용 계정·회수 리스크 기한 종료 비용 덮개

표로 보니 답이 나왔다. 서버는 오라클.


그런데 Cloudflare를 버린 게 아니었다

오라클로 정하고 나서 남은 문제들을 적어 보니 이랬다.

  • 도메인 연결과 HTTPS 인증서는 어떻게 하지?
  • 서버 포트를 인터넷에 열면 공격을 받을 텐데?
  • 백업은 오라클 밖에 둬야 하는데, 어디에?

세 가지 다 Cloudflare가 이미 하고 있거나, 무료로 할 수 있는 일이었다.

역할 담당
서버 (앱 실행, DB) 오라클 클라우드
입구 (도메인, HTTPS, 외부 연결) Cloudflare DNS + Tunnel
창고 (서버 밖 백업) Cloudflare R2

Cloudflare Tunnel을 쓰면 오라클 서버는 Cloudflare 쪽으로 먼저 연결을 맺는다. 그래서 서버에 웹 포트를 하나도 열지 않아도 된다. 맥북 시절에 쓰던 방식을 그대로 서버에 옮기면 되는 것이었다. R2는 저장 10GB까지 무료라서 몇 년 치 백업을 넣어도 남는다.

"오라클이냐 Cloudflare냐"는 처음부터 잘못된 질문이었다. 집을 고르면서 택배함과 창고를 같이 고르려던 셈이다. 집은 오라클, 택배함과 창고는 Cloudflare였다.


AI 에이전트와 정한 방식

이 비교는 에이전트와 같이 했다. 내가 후보를 던지면 에이전트가 각 서비스의 현재 조건을 확인하고, 내 앱의 실제 수치(메모리, 코드 양, 무거운 작업)에 대 봤다.

인상적이었던 건 "요즘 오라클 무료 4코어 24GB"라는 흔한 정보를 그대로 믿지 않았다는 점이다. 공식 문서와 실제 계정의 한도를 확인해서 2코어 12GB로 바뀐 걸 찾아냈다. 인터넷의 무료 서버 정보는 생각보다 빨리 낡는다.

결정 자체는 내가 했다. 에이전트는 표를 만들었고, 나는 표를 보고 "오라클"이라고 말했다. 분업은 공정했다. 표 만드는 쪽이 조금 더 일했을 뿐.


오늘의 교훈
무료 클라우드를 고를 때 비교할 건 서비스가 아니라 역할이다. 하나에 다 맡기면, 그 하나가 멈출 때 다 멈춘다.

다음 편에서는 실제로 오라클 클라우드에 무료 서버를 만든다. 캡처를 따라 하면 되는데, 따라 하다 보면 생성 버튼에서 한 번은 막힌다. 그 이야기는 4편까지 이어진다.