Skip to content
Published on

Edge Computing의 새 시대 심화 가이드 — Cloudflare Workers, Durable Objects, D1, Vercel Edge, Deno Deploy, Fastly, Fly.io, Turso, Region-aware 아키텍처까지 (2025)

Authors

TL;DR — 2017년 Cloudflare Workers로 시작한 Edge Computing이 2024-2025년 대부분의 현대 SaaS의 기본 인프라가 됐다. '지구 반대편 사용자에게도 50ms'라는 UX 기준은 300+ PoP(Point of Presence)에 분산된 V8 Isolate + WASM 런타임의 결과다. 엣지는 CDN의 진화가 아니라 완전히 다른 아키텍처 패러다임 — stateless 요청 처리 → Durable Objects(stateful), D1/Turso(엣지 SQLite), region-aware writes, Smart Placement까지 성숙했다. 이 글은 Cloudflare Workers, Vercel Edge, Deno Deploy, Fastly, Fly.io의 철학과 트레이드오프, 엣지 데이터베이스(D1, Turso libSQL, PlanetScale, Neon), 콜드 스타트 경쟁(V8 Isolate vs Container vs Firecracker vs WASM), 2025 엣지 AI 스택까지 — 현대 분산 아키텍처의 새 표준을 전 지형도로 정리한다.

CDN에서 Edge Compute로 — 30년의 진화

1세대 CDN (1998-) — 정적 캐시

Akamai가 MIT에서 스핀오프(1998). 이미지/CSS/JS 같은 정적 파일을 지역 캐시에 복제. 대역폭 절약 + 지연시간 단축.

2세대 CDN (2010-) — 동적 콘텐츠

CloudFront(AWS, 2008), Cloudflare(2010). HTTP cache control, purge API, signed URL. 동적 페이지도 일부 캐시 가능.

3세대 — Edge Compute (2017-)

Cloudflare Workers(2017.09). "CDN 노드에서 코드를 돌리자". 요청을 origin까지 보내지 않고 엣지에서 처리.

// 최초 Workers 예제
addEventListener('fetch', event => {
  event.respondWith(new Response('Hello from the edge!'))
})

의미: 지연 시간이 100ms → 5ms로 1/20. Origin 서버 부하 대폭 감소.

4세대 — Stateful Edge (2021-)

Cloudflare Durable Objects(2021), Fly.io(2020)가 '엣지에 상태 저장'을 대중화. 지금까지의 엣지는 stateless였으나, consistency 보장되는 상태가 엣지에서 가능해짐.

5세대 — Edge AI (2024-)

Cloudflare Workers AI, Vercel AI SDK, WebLLM. LLM 추론을 엣지에서. '사용자 디바이스 근처에서 AI' 가 현실.

왜 엣지인가

1. 지연시간의 물리학

빛은 진공에서 30만 km/s, 광섬유에서는 20만 km/s. 서울-뉴욕 직선 거리 약 11,000km → 왕복 110ms 이론 최소. 실제로는 라우팅 비효율로 150-200ms.

TCP handshake(1.5 RTT) + TLS 1.3 handshake(1 RTT) + HTTP 요청 = 최소 3.5 RTT = 500ms+ (서울-뉴욕). 엣지가 서울 PoP에서 응답하면 5ms.

2. Origin 보호

DDoS, traffic spike, 크롤러 → 엣지가 흡수. Origin이 Origin 일에만 집중.

3. 규제 대응

GDPR, data residency — 유럽 유저 데이터는 유럽 엣지에서만 처리.

4. 비용 구조

대역폭 egress 비용이 AWS Lambda 0.09/GBvsCloudflareWorkers0.09/GB vs Cloudflare Workers 0. 대용량 요청 처리 시 수십-수백 배 차이.

Cloudflare Workers — V8 Isolate 원조

아키텍처

Workers는 V8 Isolate 위에서 실행. 컨테이너/VM 아닌 하나의 V8 프로세스 안 격리된 JS context.

Cloudflare Node (전 세계 300+ PoP)
├─ V8 Runtime (한 프로세스)
│   ├─ Isolate A (tenant 1, Worker X)
│   ├─ Isolate B (tenant 1, Worker Y)
│   ├─ Isolate C (tenant 2, Worker Z)
...수천 개

이득:

  • 콜드 스타트 5ms (컨테이너 100ms+ vs)
  • 메모리 3MB/isolate (컨테이너 100MB+ vs)
  • 한 노드에서 수만 테넌트

제약:

  • CPU 시간 제한 (Free 10ms, Paid 50ms, 최대 30s)
  • eval 금지, native add-on 불가
  • WASM 지원

주요 API

export default {
  async fetch(request, env, ctx) {
    // KV Store
    const value = await env.MY_KV.get("key")
    
    // D1 Database (SQLite)
    const { results } = await env.DB.prepare("SELECT * FROM users").all()
    
    // R2 (S3-compatible)
    const object = await env.MY_BUCKET.get("file.jpg")
    
    // Queues
    await env.MY_QUEUE.send({ event: "user_signup" })
    
    // AI
    const ai = new Ai(env.AI)
    const response = await ai.run("@cf/meta/llama-3-8b-instruct", {
      messages: [{ role: "user", content: "Hello" }]
    })
    
    return Response.json({ result: response })
  }
}

Durable Objects — 엣지의 액터

Stateful 엣지 컴퓨팅의 핵심. 각 Durable Object는:

  • 전 세계에 단 하나의 인스턴스만 존재
  • 특정 지역에 자동 배치 (Smart Placement)
  • 내부 상태 영구 저장 (transactional SQLite 2024)
  • WebSocket 연결 유지 가능
export class ChatRoom {
  constructor(state, env) {
    this.state = state
    this.sessions = []
  }

  async fetch(request) {
    const pair = new WebSocketPair()
    this.sessions.push(pair[1])
    pair[1].accept()
    
    pair[1].addEventListener('message', e => {
      for (const session of this.sessions) {
        session.send(e.data)  // 브로드캐스트
      }
    })
    
    return new Response(null, { status: 101, webSocket: pair[0] })
  }
}

사용처: 실시간 채팅, 게임 매치메이킹, 협업 편집 (Google Docs 스타일), 주문 처리.

D1 — 엣지 SQLite

2022년 출시, 2024년 GA. 각 Cloudflare PoP에 SQLite DB 복제. Primary는 특정 region, read replica 전 세계.

const { results } = await env.DB
  .prepare("SELECT * FROM users WHERE id = ?")
  .bind(userId)
  .all()

await env.DB
  .prepare("INSERT INTO orders (user_id, total) VALUES (?, ?)")
  .bind(userId, 99.99)
  .run()

제한: 10GB/DB (2024 기준), write는 primary region으로 라우팅.

R2 — S3-compatible object storage

Egress 수수료 0. S3 호환 API. 2024년 BYO 도메인 지원.

Workers AI

2023년 출시. Cloudflare가 운영하는 GPU 풀에서 오픈소스 모델 추론.

const ai = new Ai(env.AI)

// Llama 3
const response = await ai.run("@cf/meta/llama-3-8b-instruct", {
  messages: [{ role: "user", content: "What is edge computing?" }]
})

// Stable Diffusion
const image = await ai.run("@cf/stabilityai/stable-diffusion-xl-base-1.0", {
  prompt: "A cat coding on a laptop"
})

// Embedding
const vector = await ai.run("@cf/baai/bge-base-en-v1.5", {
  text: "Hello world"
})

Vectorize

2024년 GA. Cloudflare의 벡터 DB. Workers AI + Vectorize 조합으로 엣지 RAG.

Vercel Edge Functions + Middleware

2022년 출시. Next.js 중심 프레임워크 개발자 타겟.

Edge Runtime

Cloudflare Workers와 유사한 V8 isolate 기반. 일부 Node.js API 지원 (AsyncLocalStorage, Buffer).

// Next.js Edge API Route
export const config = { runtime: 'edge' }

export default async function handler(req) {
  const country = req.geo?.country
  return new Response(`Hello from ${country}`)
}

Middleware

// middleware.ts
import { NextResponse } from 'next/server'

export function middleware(request) {
  const country = request.geo?.country
  if (country === 'KR') {
    return NextResponse.rewrite(new URL('/kr', request.url))
  }
}

export const config = { matcher: '/((?!api|_next).*)' }

A/B 테스팅, geolocation 라우팅, bot protection에 주로 쓰임.

Vercel Edge Config

읽기 전용 KV, ~20ms 세계 전역 업데이트. Feature flag, A/B 버킷 정의에 최적.

Vercel AI SDK

2023년 출시. streamText, generateObject, tool calling 표준화.

import { streamText } from 'ai'
import { openai } from '@ai-sdk/openai'

export async function POST(req) {
  const { messages } = await req.json()
  const result = await streamText({
    model: openai('gpt-4-turbo'),
    messages,
  })
  return result.toDataStreamResponse()
}

Deno Deploy — V8 + TypeScript 네이티브

Ryan Dahl(Node.js 창시자)이 만든 Deno. 2021년 Deno Deploy.

특징

  • V8 isolate 기반
  • TypeScript 네이티브 — 트랜스파일 자동
  • Web standard API — Node.js 호환 아닌 표준 fetch/Request/Response
  • npm 호환 (2023년 추가)
Deno.serve((req) => {
  return new Response("Hello from Deno Deploy")
})

Netlify Edge Functions

Deno Deploy 런타임을 내부적으로 사용. Netlify 통합.

Fastly Compute@Edge — 100% WASM

2020년 GA. Cloudflare가 V8 기반이라면 Fastly는 Wasmtime 기반.

특징

  • 언어 무관 — Rust, Go, JavaScript, AssemblyScript
  • 결정적 콜드 스타트 — GC 없음, 35μs 주장
  • 상대적으로 비쌈, 엔터프라이즈 타겟
// Rust on Fastly
use fastly::{Error, Request, Response};

#[fastly::main]
fn main(req: Request) -> Result<Response, Error> {
    Ok(Response::from_body("Hello from WASM edge"))
}

KV Store, Config Store, Secret Store

Cloudflare와 유사한 엣지 스토리지.

Fly.io — 지역 VM 오케스트레이션

2020년 출시. "엣지에 진짜 컨테이너를 돌리자".

아키텍처

  • Firecracker MicroVM (AWS Lambda와 같은 하이퍼바이저)
  • 35개 이상 region
  • fly.toml로 지역 선택
# fly.toml
app = "my-app"
primary_region = "nrt"  # 도쿄

[build]
  image = "my-app:latest"

[[services]]
  internal_port = 8080
  protocol = "tcp"
  [[services.ports]]
    port = 443
    handlers = ["tls", "http"]

[http_service]
  auto_stop_machines = true
  auto_start_machines = true
  min_machines_running = 0

vs Cloudflare Workers

Cloudflare WorkersFly.io
런타임V8 IsolateFirecracker VM
언어JS + WASM모든 것
콜드 스타트5ms수백 ms-초
무상태성기본 stateless항상 running 가능
DBD1, KVPostgres, SQLite Full-Stack
WebSocketDurable Objects일반 TCP
가격요청 기반VM 시간 기반

선택 기준:

  • JS/TS 웹 API, stateless → Cloudflare
  • Python/Rust/Go 긴 프로세스, Postgres 필요 → Fly.io
  • Phoenix LiveView, Discord 스타일 → Fly.io (여러 회사 사례)

Phoenix LiveView + Fly.io

Elixir/Phoenix 팀이 Fly.io 지분 투자 + 공식 파트너. LiveView는 지속적 WebSocket 필요해서 Fly.io가 완벽.

AWS의 답 — Lambda@Edge, CloudFront Functions

CloudFront Functions (2021)

  • JavaScript만
  • 1ms 콜드 스타트
  • 1ms 최대 실행 시간
  • 헤더 재작성, 단순 리다이렉트만

Lambda@Edge (2017)

  • Node.js, Python
  • 5초 timeout
  • 더 강력하지만 콜드 스타트 있음
  • 13 region만 (Cloudflare 300+과 대비)

한계: AWS 생태계에 머물러야 하는 고객 대상. 범용 엣지 플랫폼으로는 Cloudflare/Vercel/Fly에 밀림.

엣지 데이터베이스 경쟁

엣지의 진짜 병목은 데이터. stateless compute는 쉽지만, stateful consistency는 물리 법칙과 싸움.

Turso — libSQL (Chiselstrike, 2022)

  • SQLite fork "libSQL" — 원격 replication 내장
  • 각 region에 read replica, write는 primary로
  • 1ms 읽기 지연 주장
turso db create my-db --location fra
turso db replicate my-db hnd   # 도쿄 replica 추가
import { createClient } from '@libsql/client'

const db = createClient({
  url: process.env.TURSO_URL,
  authToken: process.env.TURSO_TOKEN
})

const result = await db.execute({
  sql: "SELECT * FROM users WHERE id = ?",
  args: [userId]
})

혁신: 브랜치(git-like), Embedded Replicas (앱에 DB 내장해 로컬 쿼리).

Cloudflare D1

앞서 설명. 10GB 제한 있음.

PlanetScale

MySQL 기반. Vitess 샤딩. "branch를 main에 merge" 개발 워크플로우.

pscale branch create my-db feature-x
pscale deploy-request create my-db feature-x

2024년 PostgreSQL 출시 (MySQL 중심이었던 것에서 확장).

Neon

Serverless PostgreSQL. storage-compute 분리.

  • Branching — git처럼
  • Scale to zero — 미사용시 compute 0
  • Fast cold start — 100ms

2024년 DB of the Year 수상.

Xata

PostgreSQL + Typesafe client + 전문 검색.

Supabase Edge Functions

Supabase의 엣지 런타임. Deno 기반. Supabase DB(PostgreSQL) 연동 최강.

EdgeDB

그래프 쿼리, 타입 강력. PostgreSQL 위에 새 쿼리 언어.

Region-Aware 아키텍처 설계

"엣지에 컴퓨팅 분산"은 쉬우나, "데이터 일관성"은 어렵다.

Read Local, Write Global

  • 읽기는 가까운 replica에서
  • 쓰기는 primary region으로 라우팅 (추가 지연 수용)
User (서울)
read (5ms)  
Seoul replica ←─── replication ──── Primary (Frankfurt)
write (250ms)

Smart Placement (Cloudflare)

워커를 Origin DB 가까이 배치하는 역발상. 사용자는 CDN 캐시로 지연 최소화, Workers는 DB와 함께 둠.

// wrangler.toml
[placement]
mode = "smart"

Single-Leader with Leader Election

  • CockroachDB, Spanner 스타일
  • Raft/Paxos 컨센서스
  • Leader가 region별로 이동

Geo-partitioning

사용자 데이터를 region에 고정. 한국 유저 data → 서울 DB. GDPR 대응에 필수.

-- CockroachDB
ALTER TABLE users CONFIGURE ZONE USING
  constraints = '{"+region=seoul": 1}';

Eventual Consistency

DynamoDB Global Table, Cloudflare KV. 읽기 zone 자유, 쓰기 eventual.

Put (us-east-1): key=x, value=v1
             (수십초)
Get (ap-northeast-1): key=x, value=v1 (혹은 이전)

뉴스, SNS 피드 같은 "초 단위 정확성" 필요 없는 데이터에 적합.

CRDT — 충돌 없는 복제

Conflict-free Replicated Data Types. Riak, Redis CRDT, Automerge, Y.js가 구현.

  • Figma, Linear, Notion이 사용
  • 오프라인 편집 + 자동 머지

Cold Start 경쟁 — 2025년 숫자

기술콜드 스타트메모리특징
Cloudflare Workers5ms3MBV8 isolate
Fastly Compute35μs-1msMBWasmtime
Deno Deploy10msMBV8 + TS
Vercel Edge Functions10msMBV8 isolate
AWS Lambda (Snapstart)100-300msMBContainer snapshot
AWS Lambda@Edge100ms-1sMBNode.js/Python
Fly.io (Firecracker)200ms-1sMB-GBMicroVM
Fly Machines 2.0100ms (hibernated)MBVM checkpoint
Google Cloud Run500ms-2sMBContainer
AWS ECS Fargate10-30sGBContainer

Firecracker (AWS가 2018년 오픈소스화): 125ms에 KVM microVM 부트. Lambda와 Fly.io의 기반.

isolates vs microVMs: Isolates가 빠르지만 보안 경계가 약함 (하드웨어 격리 아님). microVM은 KVM 격리 + 빠름 (수백 ms).

엣지 AI — 2024-2025 폭발

Cloudflare Workers AI

  • Llama 3, Mistral, Stable Diffusion 등 40+ 모델
  • 사용량 기반 과금, GPU 직접 관리 불필요

Vercel AI SDK + v0

  • UI 생성 AI (v0.dev)
  • 스트리밍 텍스트, RSC와 통합

Supabase AI

  • pgvector + Edge Functions

WebLLM (MLC AI)

  • 브라우저에서 Llama/Mistral 실행
  • WebGPU 활용

Transformers.js (HuggingFace)

  • 브라우저에서 BERT, Whisper, SAM

Ollama Cloud (2024)

  • Local-first LLM의 클라우드 확장

공통 패턴: 프롬프트는 엣지, 무거운 inference는 GPU region → hybrid.

엣지 보안 — Zero Trust

DDoS 방어

Cloudflare는 2024년 259M QPS DDoS 방어 사례 보고. 엣지가 흡수해야 하는 이유.

Rate Limiting

// Cloudflare Workers
export default {
  async fetch(req, env) {
    const { success } = await env.RATE_LIMITER.limit({ key: req.headers.get("CF-Connecting-IP") })
    if (!success) return new Response("Too many", { status: 429 })
    // ...
  }
}

mTLS, Zero Trust

Cloudflare Access, Tailscale, Zscaler — VPN 대체. 앱별 인증 + 엣지에서 수행.

WAF (Web Application Firewall)

Cloudflare WAF는 OWASP Top 10 자동 차단. 엣지에서 실행되어 origin 보호.

Bot Management

AI 기반 봇 탐지. Claude, GPT-4 스크래퍼 필터링.

실전 채택 가이드 — 언제 어떤 엣지인가

시나리오 1 — 정적 사이트 + 일부 동적

  • 추천: Vercel, Netlify
  • Next.js/Nuxt/SvelteKit + ISR + Edge Middleware

시나리오 2 — API + WebSocket + 실시간

  • 추천: Cloudflare Workers + Durable Objects
  • 채팅, 게임 로비, 협업 에디터

시나리오 3 — 글로벌 SaaS + Postgres

  • 추천: Fly.io + Neon/Supabase, 또는 Vercel + Neon
  • 전통적 웹 앱, region-aware

시나리오 4 — 엔터프라이즈 + 규정 준수

  • 추천: Fastly + 전용 region / AWS Lambda@Edge
  • 금융, 헬스케어

시나리오 5 — 엣지 AI

  • 추천: Cloudflare Workers AI + Vectorize
  • 또는 Vercel AI SDK + OpenAI

시나리오 6 — IoT/Low Latency

  • 추천: AWS IoT + Wavelength (5G edge)
  • Cloudflare Workers

2025 엣지 트렌드 정리

1. 엣지 + AI 통합

모든 메이저 플랫폼이 AI 런타임 추가. Workers AI, Vercel AI, Fastly AI (2024 예고).

2. Stateful Edge 성숙

Durable Objects, Turso Embedded Replica, Fly Machines auto-hibernate.

3. Region-aware 프레임워크

Next.js App Router의 runtime: 'edge', Remix, Astro가 엣지 쉽게 배포.

4. 엣지 데이터베이스 전쟁

D1 vs Turso vs Neon vs PlanetScale. SQLite libSQL의 약진.

5. MicroVM 개선

Firecracker 2.0 (2024)이 초 단위 부팅 → 100ms.

6. 엣지 보안 표준화

WAF + Zero Trust + Bot Management 번들.

7. FinOps 엣지

요청 기반 과금 → 대용량 시 Container가 싸다는 역전. 비용 최적화 트레이드오프.

실전 도입 체크리스트 (2025)

  1. 명확한 유스케이스 — 정적/동적/stateful/AI
  2. 런타임 선택 — Workers(V8), Fastly(WASM), Fly(VM) 중
  3. 지연시간 벤치마크 — 실제 사용자 지역에서 측정
  4. 데이터 아키텍처 — region-aware, read replica, write routing
  5. 관측 가능성 — OTLP export, Cloudflare Logs, Datadog
  6. 보안 — WAF, Rate Limit, Zero Trust
  7. 비용 모델 — 요청당 vs VM 시간당 계산
  8. Vendor lock-in 최소화 — Web Standard API 기반
  9. Failure Mode — origin fallback, multi-edge provider
  10. 콜드 스타트 예산 — p99 목표 설정
  11. DB 전략 — Turso/D1/Neon 선정
  12. CI/CD — Wrangler, Vercel CLI, flyctl

10가지 흔한 안티패턴

  1. 엣지에 무거운 계산 강행 — CPU 시간 초과
  2. stateless 전제에 상태 숨기기 — 일관성 버그
  3. 모든 요청 엣지 처리 — 일부는 origin이 나음
  4. 지연시간 미측정 — 체감 없는 엣지 배포
  5. 규정 미고려 — GDPR region residency 위반
  6. 엣지 DB 10GB+ 저장 — D1 한계 초과
  7. WebSocket 확장성 낙관 — Durable Object 설계 필요
  8. origin fallback 없음 — 엣지 장애 시 전체 다운
  9. 콜드 스타트 예산 안 잡음 — p99 악화
  10. 단일 벤더 락인 — Web Standard API 피해감

다음 글 예고 — "현대 CI/CD의 진화" — GitHub Actions, GitLab CI, Dagger, Nx, Turborepo, Remote Cache, Hermetic Build까지

엣지 배포가 빨라진 만큼 CI/CD 파이프라인도 혁신이 일어났다. 2024-2025년 CI/CD는 '빌드 한 번에 30분'의 시대를 벗어나 Remote Cache, Hermetic Build, Dagger, Distributed Test 같은 기술로 '빌드 5분, 테스트 10분'을 일반화했다.

다음 글에서는:

  • CI/CD 역사 — Jenkins → CircleCI → GitHub Actions → Dagger
  • GitHub Actions 깊이 — matrix, reusable workflows, composite actions
  • GitLab CI vs Jenkins vs Buildkite vs CircleCI
  • Monorepo Build — Nx, Turborepo, Bazel, Rush, pnpm workspace
  • Remote Cache + Distributed Build — Bazel, Turborepo Remote Cache, Nx Cloud
  • Hermetic Build — 재현 가능성의 철학
  • Dagger — "CI/CD as code" programmable pipelines
  • Container Registries — GitHub Packages, ECR, Harbor
  • Supply Chain Security — SLSA, sigstore, cosign, SBOM
  • Test Parallelization — Jest/Vitest sharding, Playwright shards
  • Deployment Strategies — Blue/Green, Canary, Progressive Delivery (Flagger)
  • Platform Engineering — Backstage + CI/CD 통합

을 다룬다. '빠른 CI/CD'가 단지 기술이 아니라 팀 생산성과 배포 빈도를 직접 결정하는 지렛대라는 점, 그리고 왜 'monorepo 대규모 조직'이 CI/CD를 제품처럼 다루는지 추적한다.