لا تحتاج لإعادة كتابة أي شيء مع نموّ العمل. فقط انقل إلى خادم أكبر أو افصل المكوّنات. الـ hooks موجودة بالفعل في الكود.
من أكثر الأسئلة تكراراً من شركاء البيع المحتملين: "إذا بدأت صغيراً ونمت قاعدتي إلى آلاف العملاء، هل سيتحمل النظام؟". الجواب: نعم، دون إعادة كتابة. تعرض هذه الصفحة الطريق من Tier 1 (خادم Contabo بـ 4GB بسعر SAR 50 شهرياً) حتى Tier 5 (Kubernetes متعدد المناطق).
جميع الأرقام أدناه مأخوذة من اختبارات حِمل داخلية حقيقية على الكود (راجع docs/system/LOAD_TEST.md، 1281 سطراً) — وليست تقديرات تسويقية. أسعار الخوادم هي أسعار 2026 العامة (Hetzner Cloud وContabo وAWS Singapore/Bahrain).
العميل عادةً يستخدم 1-3 أجهزة WhatsApp. أي 100 عميل ≈ 100-300 جهاز ≈ 200-600 ميغابايت ذاكرة لجلسات whatsmeow فقط.
العميل يرسل/يستقبل 50-200 رسالة يومياً وسطياً. 100 عميل × 100 رسالة × 365 يوم ≈ 3.6 جيجابايت/سنة (قابل للأرشفة).
العميل عادةً يفتح 1-3 تبويبات. 100 عميل ≈ 200 اتصال WS نشط ≈ 16 ميغابايت ذاكرة.
بثّ 100 ألف رسالة ≈ 15 ميغابايت حمولة Asynq queue. يناسب Tier 2 (6-8 جيجابايت ذاكرة) براحة.
قاعدة عامة: عميل نشط واحد ≈ 5-10 ميغابايت ذاكرة (whatsmeow + WS + buffer). 100 عميل = ~500 ميغابايت-1 جيجابايت ذاكرة لحالة العملاء. الباقي للنظام والـ Postgres والـ Redis والهامش.
DB_MAX_OPEN_CONNS=60، Asynq concurrency يبقى 50
shared_buffers=2GB
shared_buffers=4GB)
business_id
ملاحظة: الأسعار أعلاه لا تشمل النطاق الترددي (عادةً 5–20 تيرابايت مجاناً عند Hetzner/Contabo) ولا التخزين الاحتياطي الخارجي.
عند امتلاء طابور البثّ، يرفض النظام مهام جديدة برشاقة — لا انهيار، لا OOM. يحصل العملاء على رسائل خطأ واضحة.
250 RPS لكل رقم، تلقائياً. لست بحاجة للقلق من حدّ المعدّل في Meta Graph API.
إذا فُقد قفل heartbeat (نسخة أخرى استلمت)، يُلغى الـ batch تلقائياً — لا إرسال مزدوج لنفس الجهاز قد يُسبّب حظر WhatsApp.
الاستعلامات الطويلة تُلغى تلقائياً — لا goroutine يعلق إلى الأبد ولو وُجد استعلام سيّئ.
عند إعادة النشر، النظام يُجفّف الطلبات + يُغلق اتصالات WS بمهلة ثانية واحدة لكل عميل. لا تلف بيانات بسبب force-kill.
فشلت مهمة؟ إعادة محاولة تلقائية بـ backoff ذكي. ترى فقط المهام التي يستحيل إكمالها.
Tier 1: DB_MAX_OPEN_CONNS=25. Tier 4: =120. فقط غيّر متغيّر البيئة وأعد التشغيل.
Tier 1: concurrency=20. Tier 4: =200 لكل عامل × 2 عامل مُجزّأ. متغيّر بيئة فقط.
Tier 4 يبدأ باستخدام WORKER_SHARD_RANGE=0-50% و=50-100% على نسختين — تقسيم تلقائي بنطاق hash لـ business_id.
Tier 4: queue، throttle، وpubsub يمكن استخدام نسختي Redis منفصلتين عبر REDIS_QUEUE_URL + REDIS_CACHE_URL — جاهز فعلاً.
Tier 4: استعلامات القراءة الثقيلة يمكن توجيهها إلى replica عبر db.Pool.Read() — السقالة جاهزة، تفعيل اختياري لكل مستودع عند الحاجة.
نقطة /health تفحص DB + Redis. إبطال ذاكرة مؤقتة بين النسخ عبر Redis pub-sub — يعمل بالفعل لنشر متعدد النسخ.
تحدّث مع فريقنا 30 دقيقة — نساعدك في تحديد الحجم بناءً على عدد العملاء المستهدف وحجم الرسائل المقدّر وميزانية البنية التحتية.