Docker vs Podman
المعيار الصناعي Docker في عالم الحاويات (containers) في مواجهة Podman ذي المقاربة اللاخادمية (daemonless). من الأفضل من ناحية الأمان والامتثال المؤسسي والاستخدام اليومي؟
حوسبة تعمل على الحافة (edge) العالمية بعزل V8 isolate، بلا بدء تشغيل بارد للأجهزة الافتراضية
حوسبة بلا خادم (serverless) تعمل على Firecracker microVM، ومتكاملة بعمق مع نظام AWS البيئي
لا يوجد فائز حاسم: بالنسبة لأحمال العمل القصيرة والحساسة للتأخير والتي تعالج طلبات عالمية (المصادقة، التوجيه، التخصيص، بوابة API، webhook) يوفر Cloudflare Workers تكلفة أقل واحتكاك بدء تشغيل بارد أقل. أما في الأعمال الطويلة أو كثيفة الذاكرة أو المعتمدة على موارد AWS داخل VPC، فتتقدم Lambda: السقوف أوسع، والوصول للشبكة الخاصة متاح عمومًا (GA) بينما لا يزال في مرحلة تجريبية (beta) في Workers. النمط الأكثر شيوعًا في الإنتاج هو الهجين: Workers كطبقة رقيقة عند الحافة (edge)، وLambda يتولى العمل الثقيل خلفها.
| الفئة | Cloudflare Workers | AWS 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 - واجهة برمجة تطبيقات تتصل بـ 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 (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 بحسب حمل العمل.