التشغيل والتكامل
حزمة واحدة على خوادم الجهة، يشغلها فريقها ويراقبها ويستعيدها
زاجل يصل حزمة حاويات تنصب على خادم واحد داخل شبكة الجهة: التطبيق وقاعدة البيانات والطوابير وخادم الويب والنسخ الاحتياطي. ومعها دليل تنصيب، وأرقام حمل مقيسة، وتمرين استعادة يثبت أن النسخة تعود فعلا.
- على خوادم الجهة، ولا يلزمه اتصال بالإنترنت بعد التنصيب
- ٢٠٠٠ موظف على الإعدادات الافتراضية، مقيس لا مفترض
- تمرين استعادة كل شهر، وزمن الاستعادة المقيس ٩٢ ثانية
على بنيتكم
ما يعمل على خادم الجهة، وما يخرج منه
حزمة Docker Compose واحدة. الصور تبنى من المصدر أو تحمل من ملف، والخطوط والمكتبات جزء منها.
من يدخل
- المتصفحبالعربية أو الإنكليزية
- تطبيق الجوالعبر وسيط الجوال (BFF)
خادم الجهة
يخرج فقط إن ضبطته
- خادم بريد الجهة
- Keycloak
- الجهات المقترنة
- Sentry
- بوابة الرسائل القصيرة
- مزود الذكاء الاصطناعي
بلا ضبط لا شيء يخرج من الخادم.
- النشر بأمر واحدdeploy.sh يبني الصور، ويأخذ نسخة متحققا منها قبل الهجرات، ويوسم الصورة السابقة للتراجع، ثم ينتظر الجاهزية.
- ترقية بتراجعالإصدار يؤخذ بوسمه لا من رأس الفرع. والفهارس على الجداول الكبيرة تبنى دون قفل الكتابة، و--rollback يعيد الصورة السابقة.
- الأسرار في ملف واحدملف .env بصلاحية 600 أو ملفات أسرار Docker، والمنظومة ترفض الإقلاع بقيمة نائبة.
- TLS داخلي عند الفصلإن فصلت القاعدة أو Redis على خادم آخر: طبقة TLS جاهزة بتحقق كامل، والوصلة غير المشفرة تحذير عند كل إقلاع أو رفض له.
التنصيب
من خادم فارغ إلى منظومة تعمل
الخطوات كما في دليل التنصيب الذي يسلم لفريق تقنية المعلومات، ومعه دليل الأعطال ومرجع كامل لمتغيرات البيئة.
- ١
خادم وشهادة
خادم Linux بـDocker، ونطاق وشهادة TLS، وساعة مضبوطة بـNTP لأن رموز التحقق بخطوتين زمنية.
- ٢
الإصدار والأسرار
نسخة بوسم إصدار، والأسرار يولدها سكربت إلى ملف البيئة.
- ٣
النشر
أمر النشر يبني ويهاجر وينتظر، ثم /health/ready/ يرد بأن القاعدة والكاش سليمان.
- ٤
المدير الأول
يفعل التحقق بخطوتين فورا، ويضاف مدير ثان لأن إعادة تعيين التحقق تحتاج مديرا آخر.
- ٥
هوية الجهة وهيكلها
الاسم والشعار والترويسة وبادئة الترقيم من الإعدادات، والهيكل من حزمة جاهزة أو ملف CSV.
الحجم
الخادم بحسب عدد الموظفين، بأرقام قيست
الحجم يتبع من يعمل على الشاشة في ساعة الذروة: نحو ١٠٪ من الموظفين في جهة حكومية نموذجية.
الخادم المقترح
- حتى ٥٠٠ موظفنحو ٥٠٤ نوى · 8 GB · 100 GB SSDالافتراضيمقترح
- ٢٠٠٠ موظفنحو ٢٠٠٨ نوى · 16 GB · 250 GB SSDالافتراضي: ٤ عمالمقيس
- ٥٠٠٠ موظفنحو ٥٠٠١٦ نواة · 32 GB · 500 GB SSD١٢ عاملااستقراء
قياس ٢٠٠٠ موظف
- ٥٠٠٠ موظف بـ٤ عمال: سقف ٤١٫٨ طلبا في الثانية، والصفحات أبطأ من العتبات.
- ٥٠٠٠ موظف بـ٨ عمال: ٧٠ طلبا في الثانية بلا فشل، وp95 بين ٢٫٤ و٤٫٢ ثانية فوق العتبات.
- لذلك التوصية ١٢ عاملا على ١٦ نواة، أو نسختان من التطبيق خلف موازن. وهذا استقراء من القياسين، لم يقس بعد.
- العنق في المعالجةالقاعدة استهلكت نحو نواة ونصف و٤٠ وصلة على الأكثر. السعة تتبع عدد العمال والنوى معهم.
- الدخول من عنوان واحدجهة موظفوها خلف NAT واحد ترفع حد الطلبات للعنوان، وإلا ردت ١٫٦٪ من طلبات الدخول الجماعي بـ429.
- أرقام محافظةالقياس على جهاز واحد بـ١٦ نواة شاركه مولد الحمل، بحزمة الإنتاج نفسها.
- أعيدوه على خادمكمسيناريو يوم العمل نفسه مع الحزمة: الوارد ٤٠٪ وفتح الكتاب ٣٠٪ والبحث ١٥٪، ويفشل إن تجاوز العتبة.
النسخ الاحتياطي والاستعادة
نسخة لم تستعد قط ليست نسخة
نسخة يومية للقاعدة والمرفقات يتحقق منها، ولا تحذف قديمة قبل جديدة سليمة. ومرة في الشهر تستعاد آخر نسخة في حزمة معزولة، وتفحص، وتهدم.
- فحص النسخة١٤ ث
- إقلاع القاعدة١٠ ث
- الاستعادة٤٣ ث
- الهجرات٥ ث
- الجاهزية١٠ ث
- الفحص الدخاني١٠ ث
- معزول عن العاملمشروع حاويات مستقل بشبكة داخلية بلا خروج وبلا مهام خلفية، فلا يرسل بريدا ولا يمس المنظومة العاملة.
- النتيجة في مركز الأمانضابط «آخر تمرين استعادة» وسطر في سجل التدقيق. وإن مضى أكثر من ٣١ يوما أو فشل التمرين صار تنبيها.
- نسخ محميةتشفير النسخ بمفتاح عام، ونقلها إلى قرص آخر أو تخزين خارجي، وتنبيه عند فشلها. وتحفظ ١٤ يوما افتراضيا.
- حدود مكتوبةالزمن لا يشمل تجهيز خادم بديل. ومع النسخ اليومي قد يضيع حتى يوم عمل؛ النسخ الأقرب يحتاج أرشفة WAL خارج الحزمة.
المراقبة
المنظومة تقول متى تتعطل، ومن خارجها أيضا
فحصان للصحة
/health/live/ للعملية وحدها بلا استعلام، و/health/ready/ للقاعدة والكاش ويرد 503 عند العطل.
مراقب تنبيه
خدمة خارج العمال تنبه حين تسقط الجاهزية أو تتوقف الجدولة خمس دقائق، ثم تذكر، ثم تبلغ بالعودة.
إلى حيث يعمل الفريق
بريد إلكتروني، أو عنوان Webhook يقبله Slack وMattermost وRocket.Chat وTeams.
مقاييس Prometheus
زمن الطلب بقالب المسار، وعمق الطوابير، ونبض الجدولة، ووصلات القاعدة، وتمرين الاستعادة. بلا اسم ولا عبارة بحث.
Sentry مع تعمية
الأخطاء برقم الطلب، بلا جسم طلب ولا هوية. والمنظومة تفحص عند كل إقلاع أن التعمية تعمل فعلا.
مراقبة من الخارج
Uptime Kuma في ملف المراقبة، وسكربت يفحص انتهاء شهادة TLS يجدول كل أسبوع.
الدخول الموحد
الدخول من Keycloak، والصلاحيات من زاجل
- مسار واحدOpenID Connect مع Keycloak للويب، والجوال عبر وسيطه. وبلا ضبط يبقى الدخول المحلي بكلمة مرور.
- رمز الهوية يفحص فعلاالتوقيع بمفاتيح المجال، والجمهور والمصدر والصلاحية، وقيم الجلسة التي لا تستعمل مرتين.
- الادعاء لا يمنح امتيازاما يأتي من Keycloak لا يعطي حسابا مميزا ولا تصريحا أمنيا ولا صلاحية اعتماد. هذه تمنح في زاجل وحده.
- التحقق بخطوتينسياسة للجهة: لا أحد، أو الحسابات المميزة، أو الجميع. ومع الدخول الموحد يفرض في Keycloak ويظهر حاله في مركز الأمان.
- الموظف
- Keycloak
- زاجل يفحص
- جلسة بأدوار زاجل
ما يفحص قبل أن تفتح الجلسة
- التوقيع بمفاتيح المجال، وبخوارزمية غير متماثلة فقط
- الجمهور هو معرف العميل، والمصدر هو المجال
- الصلاحية ووقت الإصدار
- قيمة nonce وقيمة state، ولا تستعمل مرتين
- تطابق المعرف بين رمز الهوية ومعلومات المستخدم
- المطابقة بالبريد فقط إن كان موثقا
والخروج يبطل رمز التحديث عند Keycloak.
الربط بين الجهات
الكتاب يصل إلى الجهة الأخرى موقعا ومعمى، لا باليد
- اقتران تتحقق منه المنظومةالجهة ترسل رابط هويتها بالبريد الرسمي، ورمز الاقتران يقرأ بالهاتف ويطابق في الخادم، ومعه بصمة المفتاح. الرمز الخاطئ يوقف الربط.
- موقع ومعمىلكل جهة مفتاح RSA-3072، والمحتوى معمى بـAES-256-GCM، وكل رسالة موقعة بمفتاح الجهة المرسلة.
- لا إعادة ولا ضياعالرسالة المعادة ترفض، وإقرار الاستلام يعود إلى المرسل، والرسالة المستلمة تحول إلى كتاب وارد مرة واحدة لا أكثر.
- المفتاح الخاص خارج القاعدةمعمى بمفتاح يأتي من بيئة التنصيب، ويدور بمفتاح جديد لا يعاد استعماله. وكل خطوة في سجل للربط.

التكامل وتبادل البيانات
يتصل بما عند الجهة، بشروطها
البريد الإلكتروني الوارد
صناديق IMAP عبر TLS، وMicrosoft 365 عبر OAuth2. الرسالة تنتظر الفرز ثم تقيد كتابا واردا.
قيد البريد الوارد في المراسلاتمصادر تكامل
نظام خارجي، كمنصة شكاوى، يرسل طلباته برمز حساب خدمة، فتصير مسودات في وحدة محددة بلا تكرار، وكل استقبال مسجل.
واجهة برمجية موثقة
REST بمواصفة OpenAPI، ووثيقتها لمدير النظام وحده. والبحث فيها يطبع العربية كالواجهة.
أرشيف خارجي
خادم Paperless قائم عند الجهة يظهر تبويبا داخل مركز الأرشيف لمن يملك صلاحيته، ويرفق منه بالكتاب.
الماسحات الضوئية
وكيل مسح على ويندوز، ومجلد مراقب لماسحات الشبكة: الملف يصبح كتابا، والمكرر يعرف ببصمته.
المسح الضوئي في الأرشيفحارس للشبكة الداخلية
الاتصال الخارج يذهب إلى العنوان الذي فحص، والعناوين الداخلية مرفوضة إلا بإذن صريح في الإعداد.
مدير النظام
المدير يدير ولا يقرأ
- سطر واحد في إعداد التنصيبمع ADMIN_CONTENT_POLICY=break_glass يعامل المدير عند حد الكتاب كأي موظف في موقعه، ويبقى له ما يدير به.
- في البيئة لا في القاعدةالمدير يعدل إعدادات القاعدة من الشاشة، فلو كان القيد هناك لأطفأه بصمت. البيئة يغيرها المشغل.
- إذن حي لكتاب واحدقراءة كتاب بعينها تحتاج منحة بسبب مكتوب، لذلك الكتاب وحده، وتنتهي وحدها، وتقيد في السجل.
- الأبواب الجانبية مغلقةلوحة Django مغلقة تحت هذه السياسة، والتقارير أعداد بلا متن.
يدير
- الحسابات والأدوار والصلاحيات
- الإعدادات والهيكل والقوالب
- صناديق البريد والتكامل
- ظرف الكتاب، بلا موضوعه ولا متنه
لا يقرأ
- متن الكتب ومرفقاتها بلا منحة
- كتب لا يصل إليها بموقعه في القوائم والبحث
- ما يجاور كتاب المنحة: الروابط والأضبارة والرد
- لوحة Django
منحة كسر الزجاج
- النطاق
- كتاب واحد
- السبب
- مكتوب ولازم
- المدة
- ٣٠ دقيقة افتراضا، وحتى ٦٠
- الأثر
- كل قراءة في السجل
أسئلة تتكرر
عن التشغيل والتكامل
هل يعمل زاجل بلا إنترنت؟
نعم بعد التنصيب. الصور تبنى من المصدر أو تحمل من ملف، ولا يخرج شيء من الخادم إلا ما تضبطه الجهة: بريد، أو رسائل قصيرة، أو Sentry، أو ذكاء اصطناعي، أو ربط بين الجهات.
كم موظفا يحتمل خادم واحد؟
٢٠٠٠ موظف على الإعدادات الافتراضية بقياس حقيقي، بكل العتبات. ولـ٥٠٠٠ موظف نوصي بـ١٢ عاملا على ١٦ نواة، وهذا استقراء من قياسين لم يقس بعد.
كم يستغرق استرجاع المنظومة بعد عطل؟
في التمرين المقيس ٩٢ ثانية من البدء حتى منظومة تجيب، لنسخة فيها ٢٠٠ ألف كتاب. يضاف إليها تجهيز خادم بديل ونقل النسخة إن كان الخادم نفسه هو ما سقط.
كيف نعرف أن الإصدار سليم قبل تنصيبه؟
كل بناء يمر بأكثر من ٧٠٠٠ اختبار في ستة أجزاء متوازية، وفحص متصفح، وفحص للصحة، والحزم مثبتة ببصماتها. والبناء بلا أسرار ولا نشر.
هل نحتاج Keycloak؟
لا. بلا ضبط يعمل الدخول المحلي بكلمة مرور وتحقق بخطوتين. Keycloak اختياري لجهة عندها دخول موحد.
للتواصل
نخطط التنصيب معكم
نراجع الخادم والشبكة وعدد الموظفين والتكاملات المطلوبة قبل البدء، ونسلم دليل التنصيب ودليل الأعطال لفريقكم.