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

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#