Cloudflare#
Cloudflare is the edge cloud. The catalog centers on the global anycast network: CDN, DNS, WAF, DDoS protection, then Workers (V8-isolate compute at every PoP) plus storage and database services that follow the same edge-first model. The operator picks it for everything that lives in front of an application, plus serverless workloads where cold start under 10 ms matters.
Account model#
Account, billing and team scope.
Zone, a domain managed by Cloudflare (DNS, DDoS, WAF, Workers Routes, Page Rules).
API token (preferred) or legacy API key for programmatic access. Tokens are scoped to specific resources and permissions.
Catalog at a glance#
Layer |
Headline services |
|---|---|
Edge compute |
Workers (V8 isolates), Workers for Platforms, Pages Functions, Durable Objects (stateful workers). |
Storage |
R2 (S3-compatible object, zero egress), KV (eventually consistent key-value), Durable Objects (transactional state), Cache API. |
Database |
D1 (SQLite-at-edge), Hyperdrive (connection pooling to external DBs), Queues, Vectorize. |
Network / security |
CDN, DNS, WAF, DDoS, Rate Limiting, Bot Management, Cloudflare One (Zero Trust), Cloudflare Tunnel, Magic Transit, Magic WAN, Spectrum. |
Static / media |
Pages (static sites + functions), Stream (video), Images. |
Email Routing, Email Workers. |
|
AI |
Workers AI (LLM inference at edge), Vectorize (vector DB), AI Gateway (proxy for third-party LLMs). |
CLI and SDKs#
The wrangler CLI for Workers / Pages / R2 / KV / D1; the
cloudflared daemon for Tunnel; the REST API for everything
else (often through curl or Terraform).
$ npm install -g wrangler
$ wrangler login # OAuth flow
$ wrangler init my-worker
$ wrangler deploy
$ wrangler r2 bucket list
$ wrangler kv namespace list
$ wrangler d1 execute my-db --command "select 1"
A minimal Worker:
export default {
async fetch(req, env, ctx) {
const url = new URL(req.url);
if (url.pathname === '/healthz') return new Response('ok');
return new Response(`hello, ${url.hostname}`);
},
};
Edge model#
Workers run on every PoP (310+ cities). Cold starts measured in ones of milliseconds. State lives in:
KV (eventually consistent, replicated across the network).
Durable Objects (single-writer transactional state, one object pinned to one PoP at a time).
R2 (object storage, zero egress charges, S3-compatible API).
D1 (SQLite databases, replicated to read replicas at the edge).
The model rewards stateless or eventually-consistent designs; strongly consistent multi-region writes go through Durable Objects, which serialise.
Pricing model#
Most edge services have a free tier large enough for personal projects.
Pro / Business / Enterprise plans add features and SLAs.
Workers bill per request and per CPU millisecond; R2 has zero egress, billed per storage and per operation; KV bills per read / write / list.
No data egress fees on R2 is the structural advantage for any asset that serves more bytes than it ingests.
When to pick Cloudflare#
Anything in front of an application: CDN, DNS, WAF, DDoS.
Edge-first applications where sub-10ms cold start matters.
Static sites and Jamstack apps with API edges (Pages plus Functions).
Workloads where egress economics matter (R2 vs. S3 for any read-heavy bucket).
Zero Trust network access (Cloudflare Tunnel + Cloudflare One) for replacing VPNs.
When to pick something else#
Long-running stateful services that want a traditional VM or Kubernetes substrate, the catalog is intentionally thin.
Compute with large memory or long-running CPU; Workers limits are tight (15 minute max wall clock on the highest tier; tight memory).
Anything needing per-region data residency guarantees inside a specific country, Cloudflare’s “Data Localization Suite” adds this but it is a paid add-on.
Datacenter locations#
Cloudflare does not expose “regions” the same way an IaaS does; the network is a flat anycast fabric of points of presence across 330+ cities. Workers and CDN run on every PoP. The table below summarises PoP coverage by continent; the full city list lives at cloudflare.com/network.
Continent |
PoP cities (count, representative cities) |
|---|---|
North America |
55 cities, including Ashburn, Atlanta, Chicago, Dallas, Denver, Los Angeles, Miami, Montréal, New York (Newark), San Francisco, San Jose, Seattle, Toronto, Vancouver. |
Latin America and Caribbean |
66 cities, including São Paulo, Rio de Janeiro, Buenos Aires, Bogota, Lima, Mexico City, Santiago, Panama City, San Juan. |
Europe |
57 cities, including Amsterdam, Berlin, Dublin, Frankfurt, Lisbon, London, Madrid, Milan, Paris, Stockholm, Vienna, Warsaw, Zürich. |
Middle East |
19 cities, including Amman, Doha, Dubai, Jeddah, Kuwait City, Manama, Riyadh, Tel Aviv. |
Africa |
32 cities, including Cairo, Cape Town, Johannesburg, Lagos, Nairobi, Tunis, Algiers, Casablanca-area, Accra. |
Asia |
60 cities, including Bangalore, Bangkok, Chennai, Colombo, Dhaka, Hong Kong, Jakarta, Kuala Lumpur, Manila, Mumbai, Osaka, Seoul, Singapore, Taipei, Tokyo. |
Mainland China |
35 cities (in partnership with JD Cloud), including Beijing, Chengdu, Chongqing, Guangzhou, Shanghai, Shenzhen. |
Oceania |
13 cities, including Adelaide, Auckland, Brisbane, Canberra, Melbourne, Perth, Sydney. |
R2 object storage replicates across all PoPs; Workers run at every PoP; D1 read replicas and Durable Objects pin to a specific PoP based on placement hints.
References#
Cloud for the cross-cloud taxonomy.