Skip to content

[Infra] Next.js 앱 Cloudflare Workers 배포 이전#264

Closed
Yeonny0723 wants to merge 4 commits intodevelopmentfrom
migrate-to-cloudflare
Closed

[Infra] Next.js 앱 Cloudflare Workers 배포 이전#264
Yeonny0723 wants to merge 4 commits intodevelopmentfrom
migrate-to-cloudflare

Conversation

@Yeonny0723
Copy link
Contributor

Summary

EC2 + PM2 기반 Node.js standalone 배포를 Cloudflare Workers 기반 Edge 배포로 마이그레이션 합니다.

@opennextjs/cloudflare 어댑터를 사용해 Next.js 앱을 Workers 런타임에 맞게 변환했으며,
마이그레이션 과정에서 발견된 Next.js 및 Workers 호환성 이슈들을 함께 수정했습니다.

변경 사항

기존 변경 후
Runtime Node.js (EC2 + PM2) Cloudflare Workers
Build next build opennextjs-cloudflare build
Deploy 서버 업로드 yarn cf:deploy
Static Assets 서버 서빙 Cloudflare CDN
Scaling 서버 기반 글로벌 Edge 자동 확장

배포 방법

# Local development
yarn dev

# Cloudflare preview
yarn cf:preview

# Production deploy
yarn cf:deploy

주요 변경 사항

  • Next.js 서버 배포 환경을 EC2 → Cloudflare Workers로 전환
  • @opennextjs/cloudflare 기반 Next.js Workers 런타임 적용
  • Next.js 15 버전으로 업그레이드 (Workers 어댑터 호환성)
  • Workers 환경 제약에 맞도록 일부 서버 로직 수정
  • OG 이미지 라우트를 Workers 호환 방식으로 변경

TODO

완료

  • Cloudflare Workers 배포 구조 구성
  • Next.js Workers 런타임 적용
  • Next.js 15 업그레이드
  • Workers 환경 호환성 수정
  • Cloudflare 배포 workflow 구성

남은 작업

  • 불필요한 서버 의존 패키지 정리
  • 기존 PM2 기반 배포 스크립트 제거
  • 환경변수 → Cloudflare Workers secrets 이전
  • Workers 환경에서 백엔드 API 호출 동작 검증

- wrangler.jsonc: Workers 진입점, compatibility flags(nodejs_compat, global_fetch_strictly_public), 정적 에셋 및 이미지 바인딩 설정
- open-next.config.ts: @opennextjs/cloudflare 어댑터 설정 (Next.js → Workers 변환)
- public/_headers: _next/static/* 경로에 1년 immutable 캐시 적용
- .gitignore: .dev.vars(Wrangler 로컬 시크릿 파일) ignore 추가
- next.config.js: 개발 환경에서 Cloudflare 런타임 시뮬레이션 초기화 코드 추가
- package.json: cf:build/preview/deploy/typegen 스크립트 추가, @opennextjs/cloudflare 및 wrangler 의존성 추가, Next.js 14.2.15 → ~15.2.9 업그레이드, --dangerouslyUseUnsupportedNextVersion 플래그 제거
- cookies(): 동기 → 비동기 전환 (layout.tsx, get-server-dictionary.ts)
- params: Promise<Params> 타입으로 변경 및 await 처리 (link/[linkDomain]/layout.tsx)
- satori + @resvg/resvg-js(Rust 네이티브 바이너리) 파이프라인 제거
- next/og의 ImageResponse로 교체 (파일시스템 없이 Web API만으로 동작)
- 한글 폰트(NotoSansKR)를 fs.readFile 대신 fetch()로 정적 에셋 URL에서 로딩
배포 구조 차이, 설정 파일 역할, Next.js 버전 호환성 이슈,
OG 이미지 라우트 마이그레이션 과정 및 보안 검토 내용 포함
@Yeonny0723 Yeonny0723 requested a review from a team as a code owner March 15, 2026 09:33
@vercel
Copy link

vercel bot commented Mar 15, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
pfplay-web Ready Ready Preview, Comment Mar 15, 2026 9:33am

@Yeonny0723 Yeonny0723 closed this Mar 21, 2026
@Yeonny0723 Yeonny0723 deleted the migrate-to-cloudflare branch March 21, 2026 07:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant