Codex로 개인 블로그를 Cloudflare Workers와 Supabase로 마이그레이션한 후기
지금 보고 계시는 이 블로그는 원래 집에 있는 작은 서버에서 운영하고 있었습니다.
Node.js와 Nginx, PostgreSQL을 설치하고 직접 서버를 관리하는 방식이었습니다.
직접 서버를 운영하는 재미도 있었지만 한 가지 문제가 있었습니다.
집에 문제가 생기면 블로그도 같이 멈춘다는 것입니다.
여름철 전력 사용량이 많아지면서 정전도 걱정됐고, 인터넷 통신사에 장애가 생겨도 외부에서는 블로그에 접속할 수 없습니다.
그래서 이번에는 개인 블로그를 Cloudflare Workers + Supabase 구조로 마이그레이션해 보기로 했습니다.
그리고 대부분의 작업은 OpenAI Codex와 대화하면서 진행했습니다.
예전에 라즈베리파이로 홈서버를 구축했던 과정은 아래 글에 정리해 두었습니다.
👉 라즈베리파이 5 홈서버 만들기 — 집에서 블로그 서버 운영하기
Cloudflare Workers와 Supabase를 선택한 이유
마이그레이션 구조를 이해하려면 먼저 세 가지를 보면 됩니다.
1. Domain — Cloudflare
도메인은 Hosting.kr에서 구매했지만 DNS는 기존부터 Cloudflare에서 관리하고 있었습니다.
따라서 이번 마이그레이션에서도 도메인 구조를 크게 변경할 필요 없이 Cloudflare Workers와 연결할 수 있었습니다.
2. Front-end + Back-end — Cloudflare Workers
기존 서버에서는 Node.js + Nginx 조합으로 애플리케이션을 운영했습니다.
이번에는 이 역할을 Cloudflare Workers로 옮겼습니다.
Cloudflare Workers는 별도의 서버를 직접 관리하지 않고도 JavaScript 기반 애플리케이션을 실행할 수 있는 서버리스 환경입니다.
3. Database + Storage — Supabase
기존에는 로컬 PostgreSQL에 블로그 데이터를 저장하고 이미지도 직접 서버에서 제공했습니다.
마이그레이션 후에는 Supabase PostgreSQL과 Storage를 이용하도록 구조를 변경했습니다.
개인 블로그 규모에서는 제가 사용하는 범위에 충분했고, 무엇보다 직접 데이터베이스 서버를 관리하지 않아도 된다는 점이 편했습니다.
Cloudflare와 Supabase의 기본 개념은 이전 글에서도 소개했습니다.
Codex로 블로그 마이그레이션 시작하기
이번 작업에는 OpenAI Codex를 사용했습니다.
Codex는 코드를 작성하는 것뿐 아니라 기존 프로젝트를 분석하고, 수정 계획을 세우고, 명령어를 실행하면서 작업을 진행할 수 있는 AI 코딩 에이전트입니다.
저는 터미널에서 작업했습니다.
VS Code 같은 IDE에서도 사용할 수 있지만 개인적으로는 이번 기회에 터미널을 사용해보는 것도 추천합니다.
Blog 프로젝트 폴더에서 Codex를 실행한 뒤 첫 번째로 이렇게 요청했습니다.
“이 프로젝트를 Cloudflare + Supabase로 마이그레이션 가능한지 검토해줘.”
처음부터 코드를 수정해 달라고 하지 않고 현재 프로젝트를 분석하고 마이그레이션 가능 여부와 계획부터 세워달라고 요청했습니다.
한 번에 하지 않고 Work Item으로 나눴습니다
Codex가 판단한 마이그레이션 난이도는 중간 이상이었습니다.
그래서 한 번에 모든 것을 바꾸기보다 작업을 여러 단계로 나눴습니다.
백업 → 구조 변경 → 데이터 이전 → 인증 → 배포 → 테스트 → DNS 전환
이렇게 작업을 쪼개면 문제가 발생했을 때 어디에서 문제가 생겼는지 확인하기도 쉽습니다.
작업 중에는 Codex가 계획을 업데이트하기 때문에 현재 어느 단계까지 진행됐는지도 확인할 수 있었습니다.
Cloudflare와 Supabase 인증하기
마이그레이션을 진행하다 보면 Cloudflare와 Supabase에 접근하기 위한 인증이 필요합니다.
중요한 점은 비밀번호나 Secret Key 같은 민감한 정보를 Codex 대화창에 그대로 붙여 넣지 않는 것입니다.
필요한 인증은 로컬 CLI를 이용해 진행했습니다.
예를 들어 Supabase와 Cloudflare 인증은 다음과 같은 명령어를 사용했습니다.
npx supabase login
npx wrangler login
처음 보는 명령어나 에러가 나온다고 멈출 필요는 없습니다.
저도 진행하면서
“npx가 뭐야?”
“이 명령어가 실행되지 않는데 원인이 뭐야?”
처럼 Codex에게 계속 질문하면서 진행했습니다.
AI 코딩의 장점은 모르는 것을 검색하기 위해 작업 흐름을 끊지 않고 현재 상황 그대로 질문할 수 있다는 것입니다.
Secret Key는 Cloudflare Workers에 저장
Supabase에 접근하기 위한 중요한 값은 코드 안에 직접 넣지 않고 Cloudflare Workers Secret으로 관리했습니다.
예를 들어 다음과 같은 방식입니다.
npx wrangler secret put SUPABASE_SERVICE_ROLE_KEY
데이터베이스 연결에 필요한 값도 같은 방법으로 Secret에 저장했습니다.
npx wrangler secret put SUPABASE_DB_URL
프로젝트마다 변수명이나 연결 방식은 달라질 수 있으므로 Codex가 분석한 애플리케이션 구조에 맞춰 필요한 Secret만 설정하면 됩니다.
마이그레이션 후에는 반드시 테스트
인증이 끝나자 초기 마이그레이션 작업이 진행됐습니다.
하지만 AI가 작업을 끝냈다고 해서 바로 운영 환경을 전환하지는 않았습니다.
기존 게시물이 정상적으로 보이는지, 이미지가 제대로 로딩되는지, 글 작성과 수정 기능은 동작하는지 확인하면서 오류를 하나씩 수정했습니다.
AI가 코드를 작성해도 마지막 검증은 사람이 해야 합니다.
마지막 단계, 도메인을 Cloudflare Workers로 전환
기존 blog.brightnetworks.kr은 DNS에서 집에 있는 서버의 IP를 바라보고 있었습니다.
테스트가 끝난 뒤 Codex에 기존 도메인을 Cloudflare Workers에서 서비스하도록 연결해 달라고 요청했습니다.
이것으로 블로그의 실행 환경은
집 서버의 Node.js + Nginx + PostgreSQL
에서
Cloudflare Workers + Supabase
구조로 변경됐습니다.
Codex로 블로그를 마이그레이션해본 후기
이번 작업에서 가장 인상적이었던 것은 Codex가 단순히 코드를 대신 작성하는 도구가 아니었다는 점입니다.
기존 프로젝트를 분석하고, 마이그레이션 계획을 만들고, 작업을 단계별로 나누고, 문제가 생기면 원인을 함께 찾아갈 수 있었습니다.
특히 모든 기술을 미리 알고 시작할 필요가 없다는 점이 좋았습니다.
npx가 무엇인지 몰라도 물어보면 되고, 명령어가 실패하면 터미널의 결과를 보여주면서 다시 해결하면 됩니다.
물론 AI가 만들어준 결과를 그대로 믿고 운영 환경에 반영하는 것은 위험합니다.
백업을 하고, 작업을 작은 단계로 나누고, 마지막에는 직접 테스트하는 과정은 여전히 필요합니다.
하지만 예전 같았으면 여러 문서를 찾아가며 며칠 동안 고민했을 일을 이제는 AI 에이전트와 대화하면서 하나씩 해결할 수 있게 됐습니다.
결론: 집 서버에서 시작해 서버리스까지
라즈베리파이 홈서버를 운영했던 경험도 재미있었습니다.
DNS, Nginx, Node.js, PostgreSQL을 직접 운영하면서 웹서비스가 실제로 어떻게 동작하는지 배울 수 있었습니다.
이번에는 그 경험을 바탕으로 서버를 직접 관리하지 않는 Cloudflare Workers + Supabase 구조로 한 단계 옮겨봤습니다.
이제 집에 정전이 발생하거나 인터넷이 끊겨도 제 블로그는 영향을 받지 않습니다.
개인 블로그나 프로토타입처럼 비교적 작은 서비스를 운영한다면 이런 서버리스 구조도 꽤 괜찮은 선택이라고 생각합니다.
그리고 무엇보다 이번 마이그레이션에서 느낀 점은 하나입니다.
AI 코딩의 가장 큰 장점은 코드를 대신 작성하는 것이 아니라, 몰랐던 영역까지 직접 시도할 수 있게 해준다는 것입니다.
중간에 막히는 부분이 있다면 댓글로 남겨주세요. 제가 실제로 진행했던 과정을 기준으로 설명드리겠습니다.
#Codex #CloudflareWorkers #Supabase #AI코딩 #블로그마이그레이션 #서버리스 #개인블로그




댓글 (0)