Cloudflare๋กœ Next.js ๋ฐฐํฌํ•˜๊ธฐ

์‚ฌ๋ด‰์„
  • #Cloudflare
  • #Next.js
  • #Vercel

๋“ค์–ด๊ฐ€๋ฉฐ

์•ˆ๋…•ํ•˜์„ธ์š”. ๋…ธ๋จธ์Šค ํ”„๋ก ํŠธ์—”๋“œ ์—”์ง€๋‹ˆ์–ด ์‚ฌ๋ด‰์„์ž…๋‹ˆ๋‹ค.

๋…ธ๋จธ์Šค์˜ ๋Œ€ํ‘œ ์„œ๋น„์Šค์ธ ํ”„๋กฌ(fromm) ์ด ์„ฑ์žฅํ•จ์— ๋”ฐ๋ผ, ๊ธฐ์กด Vercel ์ค‘์‹ฌ์˜ ๋ฐฐํฌ ๊ตฌ์กฐ์—์„œ ๋ฒ—์–ด๋‚˜ ๋ณด๋‹ค ์œ ์—ฐํ•˜๊ณ  ๋น„์šฉ ํšจ์œจ์ ์ธ ์ธํ”„๋ผ ๊ตฌ์„ฑ์„ ๊ฒ€ํ† ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๊ณผ์ •์—์„œ Cloudflare ์ธํ”„๋ผ๋ฅผ ํ™œ์šฉํ•œ Next.js ๋ฐฐํฌ ๋ฐฉ์‹์„ PoC ํ˜•ํƒœ๋กœ ๊ฒ€์ฆํ•˜๊ฒŒ ๋˜์—ˆ๊ณ , ์ด ๊ธ€์€ ํ•ด๋‹น ๊ณผ์ •์—์„œ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์„ ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•ด ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ธ€์—์„œ๋Š” Cloudflare Workers ๊ธฐ๋ฐ˜์œผ๋กœ ์ตœ์†Œํ•œ์˜ ์ŠคํŽ™์„ ๊ฐ–์ถ˜ Next.js ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•˜๋ฉด์„œ ์ •๋ฆฌํ•œ ๊ธฐ์ดˆ ๊ฐœ๋…, ์•„ํ‚คํ…์ฒ˜, ์„ค์ • ๋ฐฉ๋ฒ• ๋ฐ ์ฃผ์˜์‚ฌํ•ญ์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค. Cloudflare๋ฅผ ์ฒ˜์Œ ์ ‘ํ•˜์‹œ๊ฑฐ๋‚˜, Vercel ์™ธ์˜ ๋Œ€์•ˆ์„ ๊ฒ€ํ†  ์ค‘์ด์‹  ๋ถ„๋“ค๊ป˜ ์ฐธ๊ณ  ์ž๋ฃŒ๊ฐ€ ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

1. ์™œ Cloudflare์ธ๊ฐ€

์‚ฌ๋‚ด ํ”„๋กœ์ ํŠธ๋ฅผ Cloudflare ๊ธฐ๋ฐ˜์œผ๋กœ ์ด์ „ํ•˜๊ธฐ์— ์•ž์„œ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ์ค€์„ ์ค‘์‹ฌ์œผ๋กœ ๊ฒ€ํ† ๋ฅผ ์ง„ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

Edge First ์•„ํ‚คํ…์ฒ˜

  • ์ „ ์„ธ๊ณ„ PoP(Point of Presence)์—์„œ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ์ •์  ๋ฆฌ์†Œ์Šค๋ฟ ์•„๋‹ˆ๋ผ SSR ๋กœ์ง ๋˜ํ•œ Edge์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฏธ๋“ค์›จ์–ด ํ˜ธํ™˜์„ฑ

  • wrangler.toml ๊ธฐ๋ฐ˜ ์„ค์ •์„ ํ†ตํ•ด Cloudflare Workers ํ™˜๊ฒฝ์—์„œ ๋ฏธ๋“ค์›จ์–ด ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

Workers ๊ธฐ๋ฐ˜ ์‹คํ–‰ ํ™˜๊ฒฝ

  • ๋ณ„๋„์˜ Node.js ์„œ๋ฒ„ ์—†์ด ์„œ๋ฒ„ ๋กœ์ง์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Cold Start ๋น„์šฉ์ด ์‚ฌ์‹ค์ƒ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋น„์šฉ ๊ตฌ์กฐ์˜ ๋‹จ์ˆœ์„ฑ

  • ํŠธ๋ž˜ํ”ฝ ๊ธฐ๋ฐ˜ ๊ณผ๊ธˆ ๋ชจ๋ธ๋กœ ๋น„์šฉ ์˜ˆ์ธก์ด ๋น„๊ต์  ์šฉ์ดํ•ฉ๋‹ˆ๋‹ค.

๋ณด์•ˆ ๋ฐ ๋„คํŠธ์›Œํฌ ๊ธฐ๋Šฅ ๋‚ด์žฅ

  • WAF, DDoS ๋ณดํ˜ธ, Rate Limiting ๋“ฑ์ด ๊ธฐ๋ณธ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

์บ์‹œ ๊ด€๋ฆฌ

  • CDN ์บ์‹œ๋ฅผ ํ™œ์šฉํ•œ ์ •์  ์ž์‚ฐ ๋ฐ ์‘๋‹ต ์บ์‹ฑ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋น„์šฉ ํšจ์œจ์„ฑ ๋ฐ ํ™•์žฅ์„ฑ

  • 2025๋…„ 8~10์›” ๊ธฐ์ค€, ์›” ํ‰๊ท  ์ˆ˜๋ฐฑ GB ์ด์ƒ์˜ ๋Œ€์—ญํญ ์‚ฌ์šฉ๊ณผ ๋‹ค์ˆ˜์˜ Edge ์š”์ฒญ์ด ๋ฐœ์ƒํ•˜๋Š” ์„œ๋น„์Šค ๊ตฌ์กฐ์—์„œ Vercel์˜ ๋Œ€์—ญํญ ๋ฐ Edge Requests ๊ณผ๊ธˆ์ด ์ฃผ์š” ๋น„์šฉ ์ฆ๊ฐ€ ์š”์ธ์ด์—ˆ์Šต๋‹ˆ๋‹ค.
  • Cloudflare Pages๋Š” ๋Œ€์—ญํญ ๋ฌด์ œํ•œ ์ •์ฑ…์„ ์ œ๊ณตํ•˜์—ฌ, ๋™์ผ ํŠธ๋ž˜ํ”ฝ ์กฐ๊ฑด์—์„œ๋„ ๋„คํŠธ์›Œํฌ ๋น„์šฉ์ด ์‚ฌ์‹ค์ƒ ๊ณ ์ • ๋น„์šฉ์— ๊ฐ€๊น๊ฒŒ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.
  • ์ •์  ์ž์‚ฐ์€ Cloudflare CDN์—, SSR ๋ฐ API ์š”์ฒญ์€ Workers๋กœ ๋ถ„๋ฆฌํ•จ์œผ๋กœ์จ ํŠธ๋ž˜ํ”ฝ ์„ฑ๊ฒฉ์— ๋”ฐ๋ฅธ ๋น„์šฉ ๊ตฌ์กฐ๋ฅผ ๋ช…ํ™•ํžˆ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ•ด๋‹น ๊ตฌ์กฐ๋Š” ํŠธ๋ž˜ํ”ฝ ์ฆ๊ฐ€ ์‹œ์—๋„ ๋น„์šฉ์ด ์„ ํ˜•์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜์ง€ ์•Š๋Š” ํŠน์„ฑ์„ ๊ฐ€์ง€๋ฉฐ, ์‹ค์ œ ์‚ฌ์šฉ๋Ÿ‰ ๊ธฐ์ค€์œผ๋กœ ์—ฐ๊ฐ„ ์•ฝ 93.5%์˜ ๋น„์šฉ ์ ˆ๊ฐ ํšจ๊ณผ๋ฅผ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2. ์šฉ์–ด ๋ฐ ๊ฐœ๋… ์ •์˜

์ด ๊ธ€์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ฃผ์š” ์šฉ์–ด๋ฅผ ๊ฐ„๋‹จํžˆ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

Cloudflare Pages

  • ์ •์  ์‚ฌ์ดํŠธ ๋ฐ ์ผ๋ถ€ ํ”„๋ ˆ์ž„์›Œํฌ ๋ฐฐํฌ๋ฅผ ์ง€์›ํ•˜๋Š” Cloudflare์˜ ํ˜ธ์ŠคํŒ… ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.

Cloudflare Workers

  • Cloudflare Edge ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰๋˜๋Š” ์„œ๋ฒ„๋ฆฌ์Šค ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • Node.js๊ฐ€ ์•„๋‹Œ ๋…์ž์ ์ธ ๋Ÿฐํƒ€์ž„์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Edge Runtime

  • ์ „ํ†ต์ ์ธ Node.js ๋Ÿฐํƒ€์ž„๊ณผ ๋‹ฌ๋ฆฌ, Edge ํ™˜๊ฒฝ์—์„œ ๋น ๋ฅธ ์‹คํ–‰์„ ๋ชฉ์ ์œผ๋กœ ์„ค๊ณ„๋œ ๋Ÿฐํƒ€์ž„์ž…๋‹ˆ๋‹ค.
  • ํŒŒ์ผ ์‹œ์Šคํ…œ ์ ‘๊ทผ(fs)์ด๋‚˜ ์ผ๋ถ€ Node.js ๋‚ด์žฅ ๋ชจ๋“ˆ ์‚ฌ์šฉ์ด ์ œํ•œ๋˜๋ฉฐ, ๋Œ€์‹  ๋น ๋ฅธ ์ฝœ๋“œ ์Šคํƒ€ํŠธ์™€ ๊ธ€๋กœ๋ฒŒ ๋ถ„์‚ฐ ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

Wrangler

  • Cloudflare Workers ๋ฐ Pages๋ฅผ ๋ฐฐํฌยท๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ณต์‹ CLI ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

OpenNext

  • Next.js ๋นŒ๋“œ ๊ฒฐ๊ณผ๋ฅผ ๋‹ค์–‘ํ•œ ์„œ๋ฒ„๋ฆฌ์Šค ๋ฐ Edge ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๋„๋ก ๋ณ€ํ™˜ํ•ด์ฃผ๋Š” ์–ด๋Œ‘ํ„ฐ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.

WAF (Web Application Firewall)

  • ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๋ณด์•ˆ ๋ฐฉํ™”๋ฒฝ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

3. ์‚ฌ์ „ ์ค€๋น„

์ด ๊ธ€์„ ๋”ฐ๋ผ๊ฐ€๊ธฐ ์œ„ํ•ด ๋‹ค์Œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  • ํ”„๋กœํ† ํƒ€์ž…์šฉ Next.js ํ”„๋กœ์ ํŠธ
  • Cloudflare ๊ณ„์ •
  • Cloudflare Workers ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒ์„ฑ

4. Cloudflare์—์„œ Next.js๋ฅผ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ์‹

Cloudflare๋Š” Next.js๋ฅผ ๋„ค์ดํ‹ฐ๋ธŒ๋กœ ์ง์ ‘ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Next.js ๋นŒ๋“œ ๊ฒฐ๊ณผ๋ฌผ์„ Cloudflare ํ™˜๊ฒฝ์— ๋งž๊ฒŒ ๋ณ€ํ™˜ํ•ด์ฃผ๋Š” ์–ด๋Œ‘ํ„ฐ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

4.1 Cloudflare Workers + OpenNext (๊ถŒ์žฅ)

๋Œ€์ƒ

  • SSR, ISR, Middleware, API Routes๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ
  • Vercel๊ณผ ์œ ์‚ฌํ•œ ์‹คํ–‰ ๋ชจ๋ธ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ

ํ•ต์‹ฌ ๋„๊ตฌ

  • @opennextjs/cloudflare

์ด ๊ธ€์—์„œ๋Š” Workers + OpenNext ๋ฐฉ์‹์„ ๊ธฐ์ค€์œผ๋กœ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

5. ์ „์ฒด ์•„ํ‚คํ…์ฒ˜ ๊ฐœ์š”

Client
  โ†“
Cloudflare CDN
  โ†“
Cloudflare Worker
  โ”œโ”€ Next.js Middleware
  โ”œโ”€ SSR / RSC
  โ”œโ”€ API Routes
  โ†“
Static Assets (Cloudflare KV / R2)
  • ๋ชจ๋“  ์š”์ฒญ์€ Cloudflare Edge๋กœ ์œ ์ž…๋ฉ๋‹ˆ๋‹ค.
  • Worker๊ฐ€ Next.js ๋Ÿฐํƒ€์ž„ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • ์ •์  ๋ฆฌ์†Œ์Šค๋Š” CDN ์บ์‹œ ๋˜๋Š” R2๋ฅผ ํ†ตํ•ด ์„œ๋น™๋ฉ๋‹ˆ๋‹ค.

6. ํ”„๋กœ์ ํŠธ ์„ค์ •

6.1 ํ•„์ˆ˜ ํŒจํ‚ค์ง€ ์„ค์น˜

pnpm add -D @opennextjs/cloudflare  # Cloudflare Workers์šฉ OpenNext ์–ด๋Œ‘ํ„ฐ
pnpm add -D @opennextjs/aws          # OpenNext ๊ธฐ๋ณธ ํŒจํ‚ค์ง€
pnpm add -D wrangler                 # Cloudflare Workers CLI

6.2 next.config.js ์„ค์ •

/** @type {import('next').NextConfig} */
const nextConfig = {
  output: 'standalone', // ํ•„์ˆ˜ ์„ค์ •
}

module.exports = nextConfig

7. ๋นŒ๋“œ ๋ฐ ๋ฐฐํฌ ํ๋ฆ„

7.1 OpenNext ๋นŒ๋“œ

next build \
  && opennextjs-cloudflare build --skipBuild \
  && cp .open-next/worker.js
  • next build : Next.js ํ”„๋กœ๋•์…˜ ๋นŒ๋“œ ์ˆ˜ํ–‰
  • opennextjs-cloudflare build --skipBuild : ๊ธฐ์กด .next ๊ฒฐ๊ณผ๋ฌผ์„ ๊ธฐ๋ฐ˜์œผ๋กœ Cloudflare Workers์šฉ ๋นŒ๋“œ ์ˆ˜ํ–‰
  • cp .open-next/worker.js : Wrangler ์„ค์ •๊ณผ ์ผ์น˜ํ•˜๋„๋ก Worker ์—”ํŠธ๋ฆฌ ํŒŒ์ผ ๋ณต์‚ฌ

๋นŒ๋“œ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด .open-next/ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋˜๋ฉฐ, Worker ์Šคํฌ๋ฆฝํŠธ์™€ ์ •์  ์ž์‚ฐ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

7.2 wrangler ์„ค์ •

wrangler.toml ํŒŒ์ผ์€ Cloudflare Workers ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ด๋ฆ„, ๋Ÿฐํƒ€์ž„ ๋™์ž‘ ๊ธฐ์ค€, ์—”ํŠธ๋ฆฌ ํฌ์ธํŠธ, ๋นŒ๋“œ ๋ฐ ์ •์  ์ž์‚ฐ ์„ค์ •์„ ์ •์˜ํ•˜๋Š” ์„ค์ • ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.

name = "ํ”„๋กœ์ ํŠธ๋ช…" # Cloudflare Workers์— ๋“ฑ๋ก๋  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ด๋ฆ„

compatibility_date = "2025-12-22" # Workers ๋Ÿฐํƒ€์ž„์˜ ๋™์ž‘ ๊ธฐ์ค€์ด ๋˜๋Š” ๋‚ ์งœ
compatibility_flags = ["nodejs_compat"] # Node.js API ์ผ๋ถ€๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ํ˜ธํ™˜ ๋ ˆ์ด์–ด

main = ".open-next/worker.js" # Worker์˜ ์—”ํŠธ๋ฆฌ ํฌ์ธํŠธ. OpenNext๊ฐ€ ์ž๋™ ์ƒ์„ฑํ•œ ํŒŒ์ผ

[build]
command = "pnpm run build" # wrangler deploy ์‹คํ–‰ ์‹œ ์‚ฌ์ „์— ์ˆ˜ํ–‰๋  ๋นŒ๋“œ ๋ช…๋ น์–ด

[assets]
directory = ".open-next/assets" # ์ •์  ์ž์‚ฐ ๋””๋ ‰ํ† ๋ฆฌ
binding = "ASSETS" # Worker ์ฝ”๋“œ์—์„œ ์ ‘๊ทผํ•  ๋•Œ ์‚ฌ์šฉํ•  ๋ฐ”์ธ๋”ฉ ์ด๋ฆ„

7.3 ๋ฐฐํฌ

npx wrangler deploy

8. ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๊ด€๋ฆฌ

Cloudflare๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ๋นŒ๋“œ ํƒ€์ž„๊ณผ ๋Ÿฐํƒ€์ž„์œผ๋กœ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

๊ตฌ๋ถ„์šฉ๋„์˜ˆ์‹œ
Build-timeNext.js ๋นŒ๋“œ ์‹œ ์‚ฌ์šฉNEXT_PUBLIC_*
RuntimeWorker ์‹คํ–‰ ์‹œ ์‚ฌ์šฉAPI_KEY
  • NEXT_PUBLIC_ ์ ‘๋‘์‚ฌ๊ฐ€ ์—†๋Š” ๊ฐ’์€ ๋ธŒ๋ผ์šฐ์ €์— ๋…ธ์ถœ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • Runtime ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋Š” Worker ๋‚ด๋ถ€์—์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

9. Middleware ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํฌ์ธํŠธ

๋‹ค์Œ API๋“ค์€ ๋Œ€๋ถ€๋ถ„ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

  • NextRequest.cookies.get / set
  • request.nextUrl

๋ฏธ๋“ค์›จ์–ด ์ ์šฉ ๋ฒ”์œ„๋ฅผ ์ œํ•œํ•˜๋ ค๋ฉด config.matcher ์„ค์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

// middleware.ts
export const config = {
  matcher: ['/((?!api).*)'],
}

์ฃผ์˜์‚ฌํ•ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • Node.js ์ „์šฉ API ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  • process.env ์ ‘๊ทผ์€ Runtime ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๊ธฐ์ค€์ž…๋‹ˆ๋‹ค.
  • ์ผ๋ถ€ ํ—ค๋” ์กฐ์ž‘ ๋กœ์ง์€ Cloudflare ์ œ์•ฝ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

10. ์ œํ•œ ์‚ฌํ•ญ ๋ฐ ์ฃผ์˜์ 

Edge Runtime ์ œ์•ฝ

  • fs, net, child_process ์‚ฌ์šฉ ๋ถˆ๊ฐ€

์ด๋ฏธ์ง€ ์ตœ์ ํ™”

  • Next Image ์ผ๋ถ€ ์˜ต์…˜์— ์ œ์•ฝ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

ISR

  • Vercel๊ณผ ๋™์ž‘ ๋ฐฉ์‹์— ์ฐจ์ด๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

์‹ค์„œ๋น„์Šค ์ ์šฉ ์ „ ๊ธฐ๋Šฅ ๋‹จ์œ„ ๊ฒ€์ฆ์„ ๋ฐ˜๋“œ์‹œ ๊ถŒ์žฅ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

11. ์–ธ์ œ Cloudflare๊ฐ€ ์ ํ•ฉํ•œ๊ฐ€

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ Cloudflare ๊ธฐ๋ฐ˜ Next.js ๋ฐฐํฌ๊ฐ€ ํŠนํžˆ ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค.

  • ๊ธ€๋กœ๋ฒŒ ํŠธ๋ž˜ํ”ฝ ๋น„์ค‘์ด ๋†’์€ ์„œ๋น„์Šค
  • SSR ์‘๋‹ต ์†๋„๊ฐ€ ์ค‘์š”ํ•œ ์„œ๋น„์Šค
  • Edge ๊ธฐ๋ฐ˜ ์ธ์ฆ, A/B ํ…Œ์ŠคํŠธ ํ™œ์šฉ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ
  • ์ธํ”„๋ผ ๋น„์šฉ ์ตœ์ ํ™”๊ฐ€ ์ค‘์š”ํ•œ ๊ฒฝ์šฐ

๋ฐ˜๋Œ€๋กœ, Node.js ์˜์กด๋„๊ฐ€ ๋†’์€ ์„œ๋น„์Šค๋ผ๋ฉด Vercel์ด ๋” ์ ํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

12. ๋งˆ๋ฌด๋ฆฌ

์ธํ”„๋ผ์— ๋Œ€ํ•œ ์ง€์‹์ด ๊ฑฐ์˜ ์—†๋Š” ์ƒํƒœ์—์„œ ์‹œ์ž‘ํ•œ ์ž‘์—…์ด์—ˆ์ง€๋งŒ, ์ด๋ฒˆ ๊ฒฝํ—˜์€ Cloudflare๋ฅผ ๋น„๋กฏํ•œ Edge ๊ธฐ๋ฐ˜ ์ธํ”„๋ผ๋ฅผ ์ดํ•ดํ•˜๋Š” ์ค‘์š”ํ•œ ๊ณ„๊ธฐ๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์‹ค์„œ๋น„์Šค๋ฅผ ๊ณง๋ฐ”๋กœ ์ด์ „ํ•˜๊ธฐ๋ณด๋‹ค๋Š”, ๋จผ์ € ํ”„๋กœํ† ํƒ€์ž…์„ ํ†ตํ•ด ํ•„์š”ํ•œ ์ŠคํŽ™์„ ์ •์˜ํ•˜๊ณ  ๊ธฐ์ˆ ์  ๊ฐ€๋Šฅ์„ฑ์„ ๊ฒ€์ฆํ•จ์œผ๋กœ์จ ์ดํ›„ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ž‘์—…์„ ๋ณด๋‹ค ์•ˆ์ •์ ์œผ๋กœ ์ค€๋น„ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ธ€์ด Cloudflare๋กœ Next.js ๋ฐฐํฌ๋ฅผ ์ฒ˜์Œ ์‹œ๋„ํ•˜์‹œ๋Š” ๋ถ„๋“ค๊ป˜ ์‹œํ–‰์ฐฉ์˜ค๋ฅผ ์ค„์ด๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ์‹ค์งˆ์ ์ธ ์ฐธ๊ณ  ์ž๋ฃŒ๊ฐ€ ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

โ† ๋ชฉ๋ก์œผ๋กœ ๋Œ์•„๊ฐ€๊ธฐ

Art Changes Life

๋…ธ๋จธ์Šค์™€ ํ•จ๊ป˜ ์—”ํ„ฐํ…Œํฌ ์‚ฐ์—…์„ ํ˜์‹ ํ•ด๋‚˜๊ฐˆ ๋ฉค๋ฒ„๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.

์ฑ„์šฉ ์ค‘์ธ ๊ณต๊ณ  ๋ณด๊ธฐ