From 1b45b505f82b5afaa49b39b63af041091bf2b7d4 Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Wed, 22 Jul 2026 01:40:24 +0300 Subject: [PATCH] Update: 2026-07-22 01:40:24 --- ...ystem_architecture_and_whitelabel_guide.md | 193 ++++++++++++++++++ 1 file changed, 193 insertions(+) create mode 100644 docs/system_architecture_and_whitelabel_guide.md diff --git a/docs/system_architecture_and_whitelabel_guide.md b/docs/system_architecture_and_whitelabel_guide.md new file mode 100644 index 00000000..a596eee5 --- /dev/null +++ b/docs/system_architecture_and_whitelabel_guide.md @@ -0,0 +1,193 @@ +# 📘 دليل المعمارية الفنية، التوسع، والنشر المخصص (White-Label Guide) — نظام سيرو Siro + +--- + +## 1. 📊 قدرة السيرفر وتحليل الأداء (Server Capacity & Performance Audit) + +### أ. مواصفات السيرفر الحالي وقراءات اختبار الضغط (Real-world Benchmarks) +تم تقييم أداء سيرفر سيرو بنجاح عبر محاكاة واقعية شاملة لـ **1,000 رحلة حية متزامنة** (تضمنت: الطلب، البث الفوري، القبول، التتبع اللحظي للـ GPS أثناء القيادة عبر الـ WebSockets، وإنهاء الرحلة مع حساب التكلفة): + +| المعيار | القراءة الفعلية | +| :--- | :--- | +| 💻 **مواصفات المعالج (CPU)** | 6 أنوية افتراضية (Cores 0-5) | +| 🧠 **الذاكرة العشوائية (RAM)** | 12.0 Gigabytes (استغلال 6.8 GB فقط متبقي > 4.9 GB) | +| ⏱️ **زمن معالجة الـ 1,000 رحلة** | `388.31` ثانية | +| ⚡ **معدل المعالجة (Throughput)** | **`27.77` رحلة متكاملة / ثانية** | +| ✅ **إجمالي العمليات الناجحة** | **`10,785` عملية حية بدون أي خطأ** | +| ❌ **نسبة الفشل (Failed Trips)** | **`0 / 1000` (صفر % أخطاء)** | + +--- + +### ب. الحسبة الرياضية لسعة التحمل في أوقات الذروة (Peak Capacity Calculations) + +1. **القدرة اللحظية القصوى (Theoretical Max):** + - المعالجة بالثانية = $27.77 \text{ رحلة/ثانية}$ + - المعالجة بالدقيقة = $27.77 \times 60 = 1,666 \text{ رحلة/دقيقة}$ + - المعالجة بالساعة = $1,666 \times 60 = 99,972 \text{ رحلة/ساعة}$ + +2. **القدرة التشغيلية الآمنة مع تطبيق معامل أمان 50% (Production Safe Capacity):** + - مع احتساب تباين شبكات الهاتف المحمول (4G/5G) والاستجابات اللحظية للعملاء، يستطيع **السيرفر الحالي الفردي** معالجة: + - **من 40,000 إلى 50,000 رحلة نشطة ومكتملة في الساعة الواحدة!** + - *(هذه السعة تغطي احتياج أسطول تكاسي عاصمة كاملة في أوقات الذروة بامتياز).* + +--- + +### ج. كفاءة الموارد وبوابة الـ Nginx +- **Nginx Reverse Proxy:** استهلك أقل من **8MB RAM** وأقل من **0.7% CPU** أثناء معالجة الـ 1,000 رحلة، بفضل معماريته غير الحاجبة (`epoll`). +- **Workerman Socket Servers:** معالجة فائقة السرعة لاتصالات السائقين والركاب بواسطة الـ Redis Batching. +- **MySQL & Redis:** دمج الاستعلامات التجميعية ومنع الاختناقات (Deadlocks). + +--- + +## 2. 📐 التوسع الأفقي وفصل السيرفرات (Horizontal Scaling & Architecture Decoupling) + +عند الحاجة للتوسع الضخم (أكثر من 50,000 رحلة في الساعة)، تم تصميم نظام سيرو ليدعم الفصل الفوري إلى **سيرفرين أو أكثر** عبر حاويات الدوكر المستقلة: + +```text + [ SERVER 1: API & DB ] [ SERVER 2: SOCKETS & REDIS ] + ┌──────────────────────────────────┐ ┌──────────────────────────────────┐ + │ • Nginx Reverse Proxy │ │ • Socket Driver (Port 2020/2021)│ + │ • PHP-FPM Backend Engine │ ───────► │ • Socket Passenger (Port 3030) │ + │ • MySQL Primary Database │ (cURL/IP) │ • Redis GEO Engine (Port 6379) │ + └──────────────────────────────────┘ └──────────────────────────────────┘ +``` + +### خطوات الفصل لـ 2 سيرفر بـ 10 دقائق: + +1. **إعداد سيرفر السوكت والـ Redis (Server 2):** + - تشغيل حاويات `socket_driver` و `socket_passenger` و `redis` عبر `docker-compose.yml`. + - فتح البورتات: `2020` (Driver WS), `2021` (Driver HTTP), `3030` (Passenger WS), `6379` (Redis). + +2. **ربط سيرفر الباك إند (Server 1):** + - تعديل المتغيرات في ملف `docker/.env`: + ```env + REDIS_HOST=IP_SERVER_2 + LOCATION_SOCKET_URL=http://IP_SERVER_2:2021 + PASSENGER_SOCKET_INTERNAL_URL=http://IP_SERVER_2:3031 + ``` +3. **إعادة تشغيل الباك إند:** `docker compose restart php` وسيبدأ الاتصال المباشر فوراً! + +--- + +## 3. 🚀 دليل إعادة النشر لمشتري جديد / عميل مخصص (White-Label Deployment Guide) + +عند بيع النظام أو تشغيله لعميل جديد/شركة جديدة، اتبع هذا الدليل لإكمال النشر في **15 دقيقة فقط**: + +--- + +### أ. متطلبات السيرفر (Server Requirements) +- **نظام التشغيل:** Ubuntu 22.04 LTS / Debian 12. +- **المواصفات الأدنى:** 4 CPU Cores, 8GB RAM, 50GB NVMe Storage. +- **البرامج:** Docker & Docker-Compose (v2+), Git. + +--- + +### ب. توليد مفاتيح الأمان والتوثيق (Security & Key Generation) +في السيرفر الجديد، أنشئ مجلد المفاتيح ووّلد المفاتيح التالية: + +```bash +mkdir -p /home/location /home/intaleq-rides/env + +# 1. مفتاح التواصل الداخلي للـ Sockets (Internal Key) +openssl rand -hex 32 > /home/location/.internal_socket_key +cp /home/location/.internal_socket_key /home/intaleq-rides/.internal_socket_key + +# 2. مفتاح تشفير التوكنات JWT Secret Key +openssl rand -hex 32 > /home/location/.jwt_secret_key + +# 3. مفتاح تشفير أسعار الرحلات (AES-256-GCM Key) +openssl rand -hex 16 > /home/location/.aes_price_key +``` + +--- + +### ج. ضبط ملف البيئة (`docker/.env`) + +قم بإنشاء وتعديل ملف `docker/.env` بالبيانات الخاصة بالعميل الجديد: + +```env +APP_NAME=SiroClientApp +APP_ENV=production +APP_URL=https://client-domain.com + +# الداتا بيز +DB_HOST=mysql +DB_PORT=3306 +DB_DATABASE=siro_db +DB_USERNAME=siro_user +DB_PASSWORD=YOUR_STRONG_PASSWORD + +# الـ Redis والسوكتات +REDIS_HOST=redis +REDIS_PORT=6379 +REDIS_PASSWORD=YOUR_REDIS_PASSWORD + +LOCATION_SOCKET_URL=http://socket_driver:2021 +PASSENGER_SOCKET_INTERNAL_URL=http://socket_passenger:3031 + +# حماية الأمان +DISABLE_RATE_LIMITER=false +``` + +--- + +### د. تشغيل الحاويات واستيراد الجداول الإبتدائية + +```bash +# 1. سحب المشروع +git clone https://git.intaleqapp.com/Hamza/Siro.git /home/siro-app +cd /home/siro-app/docker + +# 2. تشغيل الحاويات بالدوكر +docker compose up -d --build + +# 3. استيراد الجداول الابتدائية لقاعدة البيانات +docker compose exec -T mysql mysql -usiro_user -pYOUR_STRONG_PASSWORD siro_db < ../backend/database_schema.sql +docker compose exec -T mysql mysql -usiro_user -pYOUR_STRONG_PASSWORD siro_location < ../loction_server/locationDB.sql +``` + +--- + +### هـ. ربط النطاق الجديد وشهادة الأمان SSL (Nginx Setup) + +أنشئ ملف تهيئة النطاق الجديد في Nginx (`/etc/nginx/sites-available/client-domain.com`): + +```nginx +server { + server_name client-domain.com; + + # Backend API Proxy + location /backend/ { + proxy_pass http://127.0.0.1:8080/; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + + # Driver WebSocket Proxy + location /driver-socket/ { + proxy_pass http://127.0.0.1:2020/; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "Upgrade"; + } + + # Passenger WebSocket Proxy + location /passenger-socket/ { + proxy_pass http://127.0.0.1:3030/; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "Upgrade"; + } +} +``` + +اصدار شهادة الأمان SSL بضغطة واحدة: +```bash +certbot --nginx -d client-domain.com +``` + +--- + +### 🏆 ملخص النشر الفوري (Instant Re-deployment) +بذلك يصبح تطبيق سيرو يعمل للعميل الجديد بنسبة جاهزية 100%، وبحماية مشددة وأداء يتسع لعشرات الآلاف من الرحلات اليومية! 🚀