الخلفية
لدينا نسخة مستضافة على السحابة من منصة Discourse لجماعة Ruby الأسترالية (سأشير إليها باسم “المُستضيف الرئيسي”). نُنظّم مرتين سنويًا فعاليات RailsCamp، حيث نقضي عطلة نهاية أسبوع كاملة معًا في موقع نائي (يتراوح عدد المشاركين بين 50 و150 شخصًا لكل فعالية). غالبًا ما يكون هناك تغطية ضعيفة أو معدومة لشبكات الهاتف المحمول، مما يجعل التنسيق تحديًا كبيرًا.
فكرتُ في أن يكون مثيل Discourse مستضافًا على الشبكة المحلية أثناء الفعالية هو الحل الأمثل (سأشير إليه باسم “العبد”). يمكن استخدامه لنشر الإعلانات وجدول الفعاليات ومشاركة الصور وما إلى ذلك.
وبما أن لدينا بالفعل مجتمعًا متناميًا على المُستضيف الرئيسي، فسيكون رائعًا الاستفادة منه. على سبيل المثال، يكون ملفك الشخصي جاهزًا مسبقًا عند وصولك إلى الفعالية، كما أن لديك نسخة من جميع المحتويات.
التحدي
كيف يمكن تشغيل مثيل Discourse “العبد” بالتزامن مع “المُستضيف الرئيسي” بينما يكون “العبد” غير متصل بالإنترنت لمدة ثلاثة أيام؟
الحل المقترح
أدرك أن منصة Discourse لم تُصمّم لهذا الغرض، لكنني أعتقد أنه يمكن تكييفها لتناسب احتياجاتنا. أنا مهتم برأيكم في هذا الصدد.
الخطة:
- نقوم بإعداد مثيل Discourse “العبد” على الشبكة المحلية أثناء الفعالية.
- قبل الفعالية مباشرة، نقوم بنسخ احتياطي لـ “المُستضيف الرئيسي” واستعادته على “العبد”.
- على “العبد”:
- تُعلَّم جميع الفئات بأنها للقراءة فقط.
- ننشئ فئة جديدة للقراءة والكتابة مخصصة للفعالية.
- بعد الفعالية، نستخدم سكريبت Ruby لنقل المعلومات من “العبد” إلى “المُستضيف الرئيسي”:
- المستخدمين الجدد الذين تم إنشاؤهم.
- جميع المواضيع والمنشورات من الفئة المخصصة للفعالية.
- النتيجة المرجوة.
الأسئلة
- هل ترون أي مشاكل في الحل المقترح؟
- هل يمكنكم اقتراح نهج أفضل؟
سيكون رائعًا تمكين الوصول للكتابة على جميع الفئات في “العبد”، لكنني أشعر أن عملية المزامنة قد تكون معقدة للغاية. كما أن ذلك قد يُسبب ارتباكًا، حيث قد يتمكن بعض الأشخاص من الوصول إلى “المُستضيف الرئيسي” إذا كانت لديهم تغطية شبكة.
