1. modulA Cloudflare platform mentális modellje
Cloudflare for Devs · 1. modul

A Cloudflare platform mentális modellje

Mielőtt egyetlen szolgáltatást is megnéznénk részletesen, átállítjuk a gondolkodást: mi változik, amikor a régió-alapú AWS-világból az edge-first Cloudflare-világba lépsz át.

1.1Két világkép: régió vs. edge

Az AWS-en az alkalmazásod egy helyen él: kiválasztasz egy régiót (mondjuk eu-central-1), ott futnak az EC2-instance-ok a Beanstalk mögött, ott van az Aurora, és a világ többi részét a CloudFront CDN-nel „hozod közelebb". A skálázás azt jelenti, hogy több és nagyobb gépet kérsz ugyanoda.

A Cloudflare-en ez a kérdés fel sem merül. A kódod egyszerre fut a hálózat több száz városának mindegyikében — deploykor nem választasz régiót, mert nincs mit választani. A felhasználó kérése a hozzá legközelebbi adatközpontba (PoP — point of presence) érkezik, és jellemzően ott is szolgálják ki. A CDN nem egy külön termék az alkalmazásod előtt, hanem maga a platform, amiben az alkalmazásod fut.

MEGSZOKOTT: AWS (régió-alapú) 👤 felhasználó CloudFront (CDN) ALB / load balancer Beanstalk · EC2 Node-processzek, autoscaling Aurora (Postgres) minden egy régióban: eu-central-1 CLOUDFLARE (edge-first) 👤 felhasználó legközelebbi PoP Worker (kód) + statikus assetek CDN + compute egyben KV / D1 R2 Queues Hyperdrive → meglévő Postgres (akár Aurora) ugyanez a setup fut 300+ városban, automatikusan
1. ábra — Ugyanaz a kérés a két világban: az AWS-en rétegeken át egy régióba utazik, a Cloudflare-en a legközelebbi PoP-ban landol, ahol a kód és a CDN ugyanaz a réteg.
Ez a modul kulcsmondata: az AWS-en infrastruktúrát üzemeltetsz, amin kód fut. A Cloudflare-en kódot deployolsz, és az infrastruktúra kérdése megszűnik — cserébe el kell fogadnod a platform szabályait (ezekről szól a 2. modul).

1.2Mi az a Worker — és miért nem „kis Lambda"?

A Cloudflare compute-egysége a Worker: egy JavaScript/TypeScript (vagy Python, Rust) modul, ami HTTP-kérésekre, üzenetekre, cron-eseményekre reagál. A döntő különbség a futtatási modellben van: a Worker nem konténerben és nem Node-processzben fut, hanem V8 isolate-ben — ugyanabban a könnyűsúlyú homokozóban, amit a Chrome egy-egy böngészőfülhöz használ.

Egy gépen több ezer isolate él egymás mellett egyetlen processzben. Egy új isolate elindítása ezredmásodpercek kérdése — ezért nincs a Lambdánál megszokott cold start probléma, és ezért lehet a kódod egyszerre „mindenhol". Az ára ennek az, hogy a runtime nem Node.js: a webes standard API-kat kapod (fetch, Request/Response, URL, Web Crypto, streams), plusz egy egyre teljesebb Node-kompatibilitási réteget (nodejs_compat).

Node app BeanstalkonCloudflare Worker
Futtatási egységhosszú életű Node-processz EC2-nV8 isolate, kérésenként példányosulhat
Indulási időmásodpercek (deploy percek)~5 ms alatt
Hol futa választott régióbanminden PoP-ban, a felhasználóhoz közel
Skálázásautoscaling group, kapacitástervezésautomatikus, láthatatlan, nincs beállítás
Állapot a memóriábanmegszokott (cache, session, singleton)nem megbízható — az isolate bármikor eldobható
Számlázásinstance-óra (akkor is, ha nincs forgalom)kérésszám + ténylegesen használt CPU-ms
Fájlrendszervan (lokális diszk)nincs — állapot a kapcsolt szolgáltatásokban
A leggyakoribb kezdő hiba Node-háttérrel: globális változóban cache-elni vagy „connection poolt" tartani, mint egy Express appban. Egy isolate újrahasznosítódhat kérések között (tehát a globális változó néha él túl), de erre soha nem építhetsz — több száz városban több ezer isolate fut párhuzamosan, mindegyik saját memóriával. Amit meg akarsz osztani, az KV-be, D1-be, Durable Objectbe vagy cache-be való.

1.3Bindings: az IAM + SDK + connection string helyett

AWS-en egy szolgáltatás használata így néz ki: IAM role/policy → SDK-kliens példányosítása → régió és credentialök → hálózati hívás. A Cloudflare-en ehelyett binding-okat deklarálsz a konfigurációban: a Worker env objektumán egyszerűen megjelenik a kapcsolt erőforrás, natív JavaScript API-val, hitelesítés és endpoint-konfiguráció nélkül.

AWS-en (S3 feltöltés)

// IAM policy + credentials szükséges
import { S3Client, PutObjectCommand }
  from "@aws-sdk/client-s3";

const s3 = new S3Client({ region: "eu-central-1" });
await s3.send(new PutObjectCommand({
  Bucket: "my-bucket",
  Key: "avatar.png",
  Body: data,
}));

Cloudflare-en (R2 feltöltés)

// nincs SDK, nincs credential, nincs régió —
// a binding a konfigban van deklarálva

export default {
  async fetch(request, env) {
    await env.MY_BUCKET.put("avatar.png",
      request.body);
    return new Response("OK");
  },
};

A jogosultság magából a bindingból következik: ha a Worker konfigjában ott a bucket, használhatja; ha nincs, nem is látja. Ez az IAM-nél durvább szemcséjű, de radikálisan egyszerűbb modell — a 9. modulban nézzük meg, mit jelent ez biztonsági szemmel.

1.4Szolgáltatás-térkép: mi minek a megfelelője

CloudflareMi ez?AWS-megfelelő
Workersszerver nélküli compute az edge-en; ez az app „szervere"Lambda + részben EC2/Beanstalk
Static Assetsstatikus fájlok a Workerrel egy deploy-egységben, beépített CDN-nelS3 + CloudFront
Hyperdriveconnection pooling + cache a meglévő Postgres/MySQL eléRDS Proxy
D1SQLite-alapú, natív SQL-adatbázisAurora/RDS (kis-közepes méretig)
R2objektumtár S3-kompatibilis API-val, nulla egress díjjalS3
KVglobálisan replikált, eventually consistent kulcs-érték tárElastiCache / DynamoDB (részben)
Queuesüzenetsor batching-gel, retry-jal, DLQ-valSQS
Workflowstartós, több lépéses, újraindítható folyamatok kódbanStep Functions
Durable Objectserősen konzisztens, címezhető állapot + WebSocket-koordinációnincs igazi párja (≈ DynamoDB + Lambda + ELB kombó)
Cron Triggersütemezett Worker-futtatásEventBridge Scheduler
Workers BuildsGit-integrált CI/CD, PR-enkénti preview URL-ekkelCodePipeline / CodeBuild
Containersigazi konténerek Worker-vezérléssel — ha tényleg Node/bináris kellFargate
Workers AI / Vectorizemodell-inference és vektor-adatbázis az edge-enBedrock / OpenSearch
Fontos árnyalat a Pages-ről: régebbi tutorialokban mindenhol a Cloudflare Pages-szel találkozol majd frontend hostingra. A Pages ma is működik, de a fejlesztés iránya egyértelműen a Workers + Static Assets — új projektet már erre érdemes építeni, és a hivatalos dokumentáció is ezt ajánlja. A 3. modulban ezt részletesen kibontjuk.

1.5Az első Worker — 5 perc alatt

A platform CLI-je a Wrangler (a terraform + eb + sam szerepét tölti be egyszerre, de egyetlen eszközként). Projektet a create-cloudflare generátorral érdemes indítani:

# új projekt interaktív varázslóval
npm create cloudflare@latest -- my-first-worker

# lokális fejlesztői szerver (http://localhost:8787)
npx wrangler dev

# deploy a Cloudflare hálózatra — ennyi, nincs több lépés
npx wrangler deploy

A projekt szíve két fájl. A konfiguráció (wrangler.jsonc) — ez tölti be azt a szerepet, amit AWS-en a Beanstalk-konfig, a CloudFormation-sablon és az IAM-policyk együtt:

wrangler.jsonc
{
  "name": "my-first-worker",
  "main": "src/index.ts",
  "compatibility_date": "2026-08-02",   // a runtime viselkedésének „verziója"
  "compatibility_flags": ["nodejs_compat"], // Node API-k engedélyezése

  // bindings — így „kapja meg" a Worker a szolgáltatásokat:
  "r2_buckets": [{ "binding": "MY_BUCKET", "bucket_name": "uploads" }],
  "vars": { "APP_ENV": "production" }
}

És maga a Worker — egy modul, ami exportál egy fetch handlert (gondolj rá úgy, mint az Express app helyére, csak webstandard Request/Response objektumokkal):

src/index.ts
export default {
  async fetch(request, env, ctx): Promise<Response> {
    const url = new URL(request.url);

    if (url.pathname === "/api/hello") {
      return Response.json({
        message: "Hello from the edge!",
        servedFrom: request.cf?.colo,  // pl. "BUD" — a budapesti PoP
        env: env.APP_ENV,
      });
    }
    return new Response("Not found", { status: 404 });
  },
};

A wrangler deploy után a Worker azonnal él egy *.workers.dev címen (később saját domaint kötsz rá). Nincs AMI, nincs instance-típus, nincs security group, nincs ALB target group — és nincs várakozás: a deploy másodpercek alatt globális.

1.6Mit nem kell többé csinálnod?

Cserébe új kérdéseket kell megtanulnod feltenni: belefér-e a CPU-limitbe? edge-kompatibilis-e ez az npm-csomag? hova kerül az állapot, ha nincs processz-memória? — pontosan ezekről szól a következő modul.

1.7Ellenőrizd magad

  1. Miért nincs a Workersnek régió-választása, és mi ennek a gyakorlati előnye a CloudFront + Beanstalk kombóhoz képest?
    Válasz

    A kód minden PoP-ban ott van, a kérés a legközelebbiben fut le — a CDN és a compute egy réteg. Nem kell külön CDN-t konfigurálni az egy régióban futó app elé, és a latencia a világ minden pontján alacsony, nem csak a régió közelében.

  2. Mi a különbség a V8 isolate és egy Node-processz között az állapotkezelés szempontjából?
    Válasz

    A Node-processz hosszú életű, a memóriájában tartott állapot (cache, poolok) megbízhatóan megmarad. Az isolate bármikor eldobható és sok példányban fut párhuzamosan világszerte — memóriában tartott állapotra nem lehet építeni; az állapot KV/D1/R2/Durable Objects-be való.

  3. Mit helyettesít a bindings-modell az AWS-világból?
    Válasz

    Az IAM policy + SDK-kliens + credential/endpoint konfiguráció hármasát: a konfigban deklarált erőforrás natív API-ként jelenik meg az env-en, és a jogosultság magából a binding létéből következik.

  4. Új full-stack projektet indítasz 2026-ban: Pages vagy Workers + Static Assets? Miért?
    Válasz

    Workers + Static Assets — a Pages funkcionálisan befagyott, az új képességek (bindings teljes köre, gradual deployments, observability) a Workers-be érkeznek, és a hivatalos ajánlás is ez.

  5. Milyen két tételből áll a Workers számlázása, és miben más ez, mint a Beanstalk/EC2 modell?
    Válasz

    Kérésszám + ténylegesen elhasznált CPU-idő (ms). Az EC2-nél lefoglalt kapacitásért fizetsz az idő múlása szerint, forgalomtól függetlenül; itt csak a tényleges munkáért.

ElőzőTematika — Tematika és AWS-megfeleltetés Következő 2. modul — Workers mélyebben: runtime, limitek, lokális fejlesztés