Cloudflare Workers는 Cloudflare의 엣지 네트워크(전 세계 300+ PoP)에서 JavaScript/TypeScript 코드를 실행하는 서버리스 플랫폼이다. 콜드 스타트가 없고 사용자와 가장 가까운 서버에서 실행된다.
특징
| 항목 | 설명 |
|---|
| 런타임 | V8 엔진 (Node.js 아님) |
| 콜드 스타트 | 0ms (항상 웜 상태) |
| 실행 제한 | CPU 10ms~30s (유료 요금제) |
| 메모리 | 128MB |
| 전 세계 배포 | 단일 배포로 300+ PoP |
기본 Worker 예시
typescript
export default {
async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response> {
const url = new URL(request.url);
if (url.pathname === '/api/hello') {
return Response.json({ message: 'Hello from the Edge!' });
}
// KV 스토리지 읽기
const value = await env.MY_KV.get('key');
return new Response(value ?? 'Not found', { status: value ? 200 : 404 });
},
};
interface Env {
MY_KV: KVNamespace;
}
wrangler 설정 (wrangler.toml)
toml
name = "my-worker"
main = "src/index.ts"
compatibility_date = "2024-01-01"
[[kv_namespaces]]
binding = "MY_KV"
id = "xxxxxxxxxxxx"
[[r2_buckets]]
binding = "MY_BUCKET"
bucket_name = "my-bucket"
배포 및 개발
bash
# 로컬 개발
npx wrangler dev
# 배포
npx wrangler deploy
# 시크릿 설정
npx wrangler secret put API_KEY
Workers 생태계
| 서비스 | 설명 |
|---|
| KV | 글로벌 Key-Value 스토리지 |
| R2 | S3 호환 오브젝트 스토리지 |
| D1 | 서버리스 SQLite DB |
| Durable Objects | 상태 있는 서버리스 객체 |
| Queues | 메시지 큐 |
관련 문서