이 글 요약
- 맥북에서 내보낼 백엔드 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편까지 이어진다.
'맥북 서버 탈출기' 카테고리의 다른 글
| [맥북 서버 탈출기 6편] 운영 중인 앱, 3분 만에 서버 옮기기: DB 덤프부터 행 개수 대조까지 (0) | 2026.10.15 |
|---|---|
| [맥북 서버 탈출기 5편] 포트 하나 안 열고 서비스하기: Cloudflare Tunnel로 도메인 연결 (0) | 2026.10.15 |
| [맥북 서버 탈출기 4편] 인스턴스가 0개인데 쿼터 초과? 오라클 서버 생성 오류 해결기 (0) | 2026.10.15 |
| [맥북 서버 탈출기 3편] 오라클 클라우드 무료 서버 만들기 (2026, 캡처로 따라 하기) (0) | 2026.10.15 |
| [맥북 서버 탈출기 1편] 내 앱 서버는 맥북 에어였다 (1) | 2026.10.15 |