Cloudflare Workers vs AWS Lambda مقارنة

حوسبة تعمل على الحافة (edge) العالمية بعزل V8 isolate، بلا بدء تشغيل بارد للأجهزة الافتراضية

VS
AWS Lambda

حوسبة بلا خادم (serverless) تعمل على Firecracker microVM، ومتكاملة بعمق مع نظام AWS البيئي

17 دقائق للقراءةBackend

الحكم السريع

لا يوجد فائز حاسم: بالنسبة لأحمال العمل القصيرة والحساسة للتأخير والتي تعالج طلبات عالمية (المصادقة، التوجيه، التخصيص، بوابة API، webhook) يوفر Cloudflare Workers تكلفة أقل واحتكاك بدء تشغيل بارد أقل. أما في الأعمال الطويلة أو كثيفة الذاكرة أو المعتمدة على موارد AWS داخل VPC، فتتقدم Lambda: السقوف أوسع، والوصول للشبكة الخاصة متاح عمومًا (GA) بينما لا يزال في مرحلة تجريبية (beta) في Workers. النمط الأكثر شيوعًا في الإنتاج هو الهجين: Workers كطبقة رقيقة عند الحافة (edge)، وLambda يتولى العمل الثقيل خلفها.

Cloudflare WorkersAWS Lambda
اقرأ الخلاصة كاملة

مقارنة الدرجات

جارٍ تحميل الرسم البياني...

التقييم التفصيلي

التقييم التفصيلي: Cloudflare Workers و AWS Lambda — درجات كل فئة من 10
الفئةCloudflare WorkersAWS Lambda
الأداء
8/10
7/10
سهولة التعلّم
7/10
6/10
النظام البيئي
6/10
9/10
المجتمع
6/10
8/10
سوق العمل
6/10
8/10
الاستدامة المستقبلية
9/10
8/10

الإيجابيات والسلبيات

Cloudflare Workers

الإيجابيات

  • يبدأ V8 isolate، بحسب وصف Cloudflare، أسرع بنحو 100 مرة مقارنة بعملية Node
  • تسعير قائم على CPU-time؛ وقت انتظار الإدخال/الإخراج (I/O) مجاني
  • طبقة بيانات مثل KV وD1 وR2 وDurable Objects وHyperdrive ضمن المنصة نفسها
  • تطوير محلي خفيف عبر Wrangler ونشر عالمي بأمر واحد
  • في الخطة المجانية 100,000 طلب/يوم؛ وفي الخطة المدفوعة 5 دولار كحد أساسي + حصة مضمّنة واسعة
  • بيئة تشغيل workerd مفتوحة المصدر بترخيص Apache-2.0
  • مجمع اتصالات (connection pool) عبر Hyperdrive لقواعد Postgres/MySQL الحالية (بما فيها AWS RDS)
  • توافق واجهات برمجة Node.js مثل node:fs يسهّل نقل المكتبات الحالية

السلبيات

  • افتراضي CPU-time هو 30 ثانية، وسقف طلب HTTP هو 5 دقائق (في الخطة المدفوعة) — غير مناسب للأعمال المتزامنة (synchronous) الطويلة
  • الذاكرة ثابتة عند 128 ميغابايت، ولا يمكن زيادتها
  • حتى في Cron Triggers وQueue Consumers، الحد الأقصى للاستدعاء الواحد 15 دقيقة (في Cron فقط عند فاصل ساعة أو أكثر؛ وأقل من ذلك 30 ثانية) — المهام الدفعية (batch) التي تستغرق ساعات ليست مدعومة أصلاً (native)
  • نموذج V8 isolate لا يدعم إضافات (addons) Node.js الأصلية
  • في الخطة المجانية، CPU-time محدود بـ 10 ميلي ثانية؛ الخطة المدفوعة إلزامية لحركة مرور الإنتاج
  • لا يوجد عمق مماثل لمشغّلات/ربط مصادر أحداث (event source mapping) خدمات AWS المباشرة، والنظام البيئي أضيق

الأنسب لـ

معالجة الطلبات العالمية القصيرة والحساسة للتأخير مثل المصادقة والتوجيه والتخصيصطبقة رقيقة أمام بوابة API أو webhookاختبار A/B ومعالجة الاستجابة عند الحافة (edge)منطق ديناميكي خفيف ملحق بشبكة CDNاستجابة منخفضة التأخير لقاعدة مستخدمين موزعة جغرافيًا

AWS Lambda

الإيجابيات

  • تهيئة ذاكرة مرنة بين 128 و10,240 ميغابايت
  • أقصى مدة تشغيل 15 دقيقة؛ مع إمكانية الانتقال إلى أحمال عمل أطول عبر Managed Instances
  • اتصال مباشر بموارد الشبكة الخاصة مثل RDS وElastiCache عبر الوصول إلى VPC
  • تكامل أصلي (native) مع خدمات AWS: يمكن لـ S3 وDynamoDB وSQS وKinesis وEventBridge وAPI Gateway وCognito استدعاء الدالة مباشرة
  • قابلية مراقبة (observability) عميقة عبر CloudWatch + X-Ray
  • دعم واسع لبيئات التشغيل (runtime): Node.js وPython وJava وGo و.NET وRuby وبيئات تشغيل مخصصة
  • الطبقة المجانية: مليون طلب + 400,000 GB-ثانية/شهر

السلبيات

  • بدء تشغيل Firecracker microVM أبطأ من V8 isolate (يقل في VPC عبر Hyperplane ENI لكنه لا يصل إلى الصفر)
  • تسعير قائم على GB-ثانية؛ يُحتسب على أساس الذاكرة×المدة
  • الدالة المتصلة بـ VPC تُغلق افتراضيًا عن الإنترنت — NAT Gateway/VPC endpoint إلزامي
  • لا يوجد انتشار عالمي لنقاط الحضور (PoP)؛ تعمل على أساس المنطقة (region) ولا تقوم بتوجيه تلقائي لأقرب حافة (edge)
  • التطوير المحلي عبر SAM/CDK ليس خفيفًا بقدر Wrangler
  • سطح التكامل الواسع مع الخدمات يحمل خطر التعقيد والارتباط بمزوّد واحد (vendor lock-in)

الأنسب لـ

أحمال العمل المعتمدة على موارد AWS الخاصة داخل VPC مثل RDS/ElastiCacheمعالجة البيانات طويلة المدة، ETL، ومهام مستهلكي batch/queueمعالجة الصور/الفيديو أو استدلال (inference) تعلم الآلة التي تتطلب ذاكرة عاليةتنسيق (orchestration) قائم على الأحداث في معمارية AWS الأصلية (S3، DynamoDB، Step Functions)الفرق المؤسسية التي لديها بالفعل استثمار عميق في AWS

مقارنة الكود

Cloudflare Workers
// Cloudflare Workers - واجهة برمجة تطبيقات تتصل بـ Postgres عبر Hyperdrive
import { Hono } from "hono";
import postgres from "postgres";

interface Env {
  HYPERDRIVE: Hyperdrive;
}

const app = new Hono<{ Bindings: Env }>();

app.get("/api/users/:id", async (c) => {
  // فتح عميل (client) جديد في كل طلب سريع — فمنصة Hyperdrive
  // تحتفظ بمجمع الاتصالات بالفعل من جانبها.
  const sql = postgres(c.env.HYPERDRIVE.connectionString, {
    max: 5,
    fetch_types: false,
  });

  // يقوم Hyperdrive بتنظيف الاتصال تلقائيًا عند انتهاء الطلب؛ لا حاجة لاستدعاء sql.end().
  const id = c.req.param("id");
  const rows = await sql`
    SELECT id, name, plan FROM users WHERE id = ${id} LIMIT 1
  `;

  if (rows.length === 0) {
    return c.json({ error: "not_found" }, 404);
  }

  return c.json(rows[0]);
});

export default app;

/*
wrangler.jsonc
{
  "name": "edge-api",
  "main": "src/index.ts",
  "compatibility_date": "2026-09-01",
  "hyperdrive": [
    { "binding": "HYPERDRIVE", "id": "<hyperdrive-config-id>" }
  ]
}
*/
AWS Lambda
// AWS Lambda (Node.js) - معالج (handler) يتصل بـ RDS Postgres داخل VPC
import { Client } from "pg";

let client; // يُحفظ عند إعادة استخدام الحاوية (بدء تشغيل دافئ warm start)

export const handler = async (event) => {
  const id = event.pathParameters?.id;

  if (!client) {
    client = new Client({
      host: process.env.DB_HOST, // نقطة نهاية RDS الخاصة (داخل VPC)
      port: 5432,
      database: process.env.DB_NAME,
      user: process.env.DB_USER,
      password: process.env.DB_PASSWORD,
      ssl: { rejectUnauthorized: true },
    });
    await client.connect();
  }

  try {
    const result = await client.query(
      "SELECT id, name, plan FROM users WHERE id = $1 LIMIT 1",
      [id]
    );

    if (result.rows.length === 0) {
      return { statusCode: 404, body: JSON.stringify({ error: "not_found" }) };
    }

    return { statusCode: 200, body: JSON.stringify(result.rows[0]) };
  } catch (err) {
    console.error(err);
    return { statusCode: 500, body: JSON.stringify({ error: "internal" }) };
  }
};

/*
template.yaml (AWS SAM) — VPC + memory + timeout
Resources:
  UsersFunction:
    Type: AWS::Serverless::Function
    Properties:
      Handler: index.handler
      Runtime: nodejs22.x
      MemorySize: 512
      Timeout: 15 # ثانية (الحد الأقصى 900 = 15 دقيقة)
      VpcConfig:
        SecurityGroupIds: [sg-xxxxxxxx]
        SubnetIds: [subnet-xxxxxxxx, subnet-yyyyyyyy]
      Policies:
        - VPCAccessPolicy: {}
*/

الخلاصة

لا يوجد فائز حاسم: بالنسبة لأحمال العمل القصيرة والحساسة للتأخير والتي تعالج طلبات عالمية (المصادقة، التوجيه، التخصيص، بوابة API، webhook) يوفر Cloudflare Workers تكلفة أقل واحتكاك بدء تشغيل بارد أقل. أما في الأعمال الطويلة أو كثيفة الذاكرة أو المعتمدة على موارد AWS داخل VPC، فتتقدم Lambda: السقوف أوسع، والوصول للشبكة الخاصة متاح عمومًا (GA) بينما لا يزال في مرحلة تجريبية (beta) في Workers. النمط الأكثر شيوعًا في الإنتاج هو الهجين: Workers كطبقة رقيقة عند الحافة (edge)، وLambda يتولى العمل الثقيل خلفها.

احصل على استشارة مجانية
الأسئلة الشائعة

الأسئلة الشائعة

يختلف الأمر، ويجب حسابه بحسب حمل العمل. خطة Workers المدفوعة (Paid) تبدأ من 5 دولار/شهر تشمل 10 ملايين طلب و30 مليون CPU-ms، وعند التجاوز 0.30 دولار/مليون طلب + 0.02 دولار/مليون CPU-ms؛ ووقت انتظار الإدخال/الإخراج (I/O) مجاني. أما Lambda فتحاسب بناءً على الطلب + GB-ثانية (الذاكرة×المدة)، وتشمل الطبقة المجانية مليون طلب + 400,000 GB-ثانية/شهر. في الأعمال القصيرة كثيفة الإدخال/الإخراج قد يكون نموذج CPU-time في Workers أرخص؛ وفي الأعمال الطويلة كثيفة المعالجة يتغير نموذج GB-ثانية في Lambda بحسب حمل العمل.

مقالات مدونة ذات صلة

عرض جميع المقالات

مشاريع ذات صلة

عرض جميع المشاريع
جميع المقارنات