Update: 2026-06-16 22:44:11
This commit is contained in:
460
INFRASTRUCTURE_REPORT.md
Normal file
460
INFRASTRUCTURE_REPORT.md
Normal file
@@ -0,0 +1,460 @@
|
||||
# تقرير البنية التحتية لنظام سيرو (Siro) - النشر في سوريا
|
||||
|
||||
**التاريخ:** 16 يونيو 2026
|
||||
**المشروع:** Siro - تطبيق نقل الركاب
|
||||
**الموقع:** سوريا
|
||||
|
||||
---
|
||||
|
||||
## 📊 ملخص الخدمات المطلوبة
|
||||
|
||||
| الخدمة | الدور | بروتوكول | بوابات |
|
||||
|--------|-------|-----------|--------|
|
||||
| **Load Balancer** | توزيع الأحمال على API | HTTP/HTTPS | 80, 443 |
|
||||
| **API Server x2** | المعالجة الرئيسية | HTTP/HTTPS | 8080 (داخلي) |
|
||||
| **MySQL Server** | قاعدة البيانات الرئيسية | MySQL | 3306 (داخلي) |
|
||||
| **Redis Server** | كاش + مواقع السائقين | Redis | 6379 (داخلي) |
|
||||
| **Driver Socket** | WebSocket للسائقين | WS/WSS + HTTP | 2020, 2021 |
|
||||
| **Passenger Socket** | WebSocket للركاب | WS/WSS + HTTP | 3030, 3031 |
|
||||
| **Wallet Server** | نظام المحفظة والمدفوعات | HTTP/HTTPS | 8081 (داخلي) |
|
||||
| **OSRM Server (1-2)** | محرك التوجيه والخرائط | HTTP | 5000 (داخلي) |
|
||||
| **Map SaaS** | خدمات الخرائط المخصصة | HTTP/HTTPS | 8082 |
|
||||
|
||||
---
|
||||
|
||||
## 🖥️ 1. Load Balancer (موازن الأحمال)
|
||||
|
||||
**الجهاز/السيرفر: جهاز واحد - عقدة أمامية**
|
||||
|
||||
| المواصفة | المطلوب | السبب |
|
||||
|----------|---------|-------|
|
||||
| **المعالج** | 2 Core (Xeon / AMD EPYC) | لا يحتاج طاقة معالجة، فقط توجيه الطلبات |
|
||||
| **الرام** | 4 GB | HAProxy/Nginx يستهلك القليل |
|
||||
| **التخزين** | 50 GB SSD | نظام تشغيل + سجلات |
|
||||
| **الشبكة** | 1 Gbps | استيعاب حجم الطلبات |
|
||||
| **نظام التشغيل** | Ubuntu 22.04 LTS أو Rocky Linux 9 | |
|
||||
|
||||
**البرامج المطلوبة:**
|
||||
- Nginx ( reverse proxy + SSL termination + load balancing upstream للـ API servers )
|
||||
- HAProxy (اختياري للـ TCP load balancing للسوكتات)
|
||||
- Keepalived (لـ High Availability إذا أردت أكثر من موازن)
|
||||
- Certbot / Let's Encrypt (لشهادات SSL)
|
||||
|
||||
**نظام التوزيع المقترح:**
|
||||
```
|
||||
Nginx upstream → API Server 1 (weight=5) + API Server 2 (weight=5)
|
||||
└── Round Robin أو Least Connections
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🖥️ 2. API Backend Server (سيرفر الباك إند الرئيسي)
|
||||
|
||||
**العدد: 2 سيرفرات خلف الـ Load Balancer**
|
||||
|
||||
| المواصفة | المطلوب | السبب |
|
||||
|----------|---------|-------|
|
||||
| **المعالج** | 8 Core (Xeon / AMD EPYC) | PHP-FPM يحتاج عدة عمال لكل نواة؛ 8cores = 16-24 worker |
|
||||
| **الرام** | 16 GB | PHP worker ~50MB/worker + نظام + كاش |
|
||||
| **التخزين** | 100 GB NVMe SSD | كود المصدر + صور السائقين + سجلات |
|
||||
| **الشبكة** | 1 Gbps | اتصال مع الـ DB والخدمات الأخرى |
|
||||
| **نظام التشغيل** | Ubuntu 22.04 LTS | |
|
||||
|
||||
**البرامج المطلوبة:**
|
||||
- PHP 8.2/8.3 (مع extensions: pdo_mysql, redis, openssl, mbstring, gd)
|
||||
- PHP-FPM (مع pm.max_children = 40-50 لكل سيرفر)
|
||||
- Nginx للمحتوى الثابت
|
||||
- Supervisor (لإدارة العمليات)
|
||||
|
||||
**توجيه الطلبات من كل سيرفر:**
|
||||
- `api-syria.siromove.com/siro_v3` → Main API
|
||||
- `ride-syria.siromove.com/siro` → Ride API
|
||||
- `location-syria.siromove.com/siro/ride/location` → Location API
|
||||
- كل هذه على نفس السيرفر، نفس قاعدة البيانات الرئيسية
|
||||
|
||||
**PHP-FPM Configuration:**
|
||||
```ini
|
||||
pm = dynamic
|
||||
pm.max_children = 50
|
||||
pm.start_servers = 8
|
||||
pm.min_spare_servers = 4
|
||||
pm.max_spare_servers = 12
|
||||
pm.max_requests = 1000
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🗄️ 3. MySQL Database Server (سيرفر قاعدة البيانات الرئيسية)
|
||||
|
||||
**العدد: 1 + 1 Replica (اختياري للنسخ الاحتياطي)**
|
||||
|
||||
| المواصفة | المطلوب | السبب |
|
||||
|----------|---------|-------|
|
||||
| **المعالج** | 16 Core (Xeon / AMD EPYC) | MySQL يتوسع أفقياً مع عدد النوى |
|
||||
| **الرام** | 64 GB | InnoDB Buffer Pool يحتاج ذاكرة كبيرة للأداء |
|
||||
| **التخزين** | 1 TB NVMe SSD | 3 قواعد بيانات (intaleqDB1, ridesDB, locationDB) ~ 100-300 GB + سجلات |
|
||||
| **الشبكة** | 10 Gbps | عمليات كتابة/قراءة مكثفة من سيرفرين API + سوكتات |
|
||||
| **نظام التشغيل** | Ubuntu 22.04 LTS | |
|
||||
|
||||
**ضبط MySQL المقترح:**
|
||||
```ini
|
||||
innodb_buffer_pool_size = 40G # 60-70% من الرام
|
||||
innodb_log_file_size = 2G
|
||||
innodb_flush_log_at_trx_commit = 2 # أداء أفضل للتحديثات
|
||||
innodb_flush_method = O_DIRECT
|
||||
max_connections = 300 # 150 لكل API server + 50 للسوكتات
|
||||
tmp_table_size = 256M
|
||||
max_heap_table_size = 256M
|
||||
query_cache_type = 0 # OFF (MySQL 8.0 ألغاه)
|
||||
```
|
||||
|
||||
**الجداول الحساسة للأداء:**
|
||||
- `car_locations` - يستخدم SPATIAL indexes + GEOMETRY - تأكد من `SRID=4326`
|
||||
- `car_tracks` - 2.5M+ سجل - يحتاج أرشفة دورية أو partitioning
|
||||
- `ride` + `waitingRides` - استعلامات متكررة مع SPATIAL
|
||||
- `palces11` - FULLTEXT search
|
||||
|
||||
**ملاحظة: قاعدة بيانات الخرائط والتتبع (locationDB) هي الأكبر من حيث حجم الكتابة، يمكن وضعها على NVMe منفصل.**
|
||||
|
||||
---
|
||||
|
||||
## ⚡ 4. Redis Server (سيرفر الكاش والمواقع اللحظية)
|
||||
|
||||
**العدد: 1 (أو 1 + 1 Sentinel للتبديل التلقائي)**
|
||||
|
||||
| المواصفة | المطلوب | السبب |
|
||||
|----------|---------|-------|
|
||||
| **المعالج** | 8 Core | Redis single-threaded للعمليات الأساسية لكن له عمليات خلفية |
|
||||
| **الرام** | 32 GB | بيانات GEO (مواقع السائقين) + كاش الجلسات + rate limiting |
|
||||
| **التخزين** | 100 GB NVMe | RDB/AOF persistence |
|
||||
| **الشبكة** | 10 Gbps | زمن استجابة منخفض جداً مطلوب |
|
||||
| **نظام التشغيل** | Ubuntu 22.04 LTS | |
|
||||
|
||||
**ملاحظات هامة:**
|
||||
- يجب أن يكون Redis على نفس الشبكة الداخلية (Latency < 1ms)
|
||||
- الـ Socket servers (driver + passenger) يعتمدان على Redis بشكل كبير (GEOADD/GEORADIUS كل 500ms)
|
||||
- حجم الذاكرة المطلوب يعتمد على عدد السائقين النشطين: كل موقع سائق ~ 200 bytes → 1M سجل = 200MB فقط
|
||||
- لكن الكاش الإضافي (driver:profile:*، الجلسات) يحتاج مساحة إضافية
|
||||
|
||||
**نظام الكاش:**
|
||||
```
|
||||
driver_socket → Redis GEO (GEOADD)
|
||||
passenger_socket → Redis GEORADIUS
|
||||
API servers → Redis GET/SET (profile cache)
|
||||
Rate Limiting → Redis INCR + EXPIRE
|
||||
Session Store → Redis SETEX
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔌 5. WebSocket Servers (سيرفرات السوكت)
|
||||
|
||||
### 5.1 Driver Socket Server
|
||||
|
||||
| المواصفة | المطلوب | السبب |
|
||||
|----------|---------|-------|
|
||||
| **المعالج** | 8 Core | Workerman PHP event loop مع 500ms batch |
|
||||
| **الرام** | 16 GB | كل اتصال WebSocket يستهلك ذاكرة + buffer |
|
||||
| **التخزين** | 50 GB SSD | سجلات فقط |
|
||||
| **الشبكة** | 1 Gbps | |
|
||||
|
||||
**البوابات:** `2020` (WebSocket للسائقين)، `2021` (Internal HTTP بين السوكتات)
|
||||
|
||||
### 5.2 Passenger Socket Server
|
||||
|
||||
| المواصفة | المطلوب | السبب |
|
||||
|----------|---------|-------|
|
||||
| **المعالج** | 4-8 Core | أقل تحميلاً من driver socket |
|
||||
| **الرام** | 8 GB | |
|
||||
| **التخزين** | 50 GB SSD | |
|
||||
| **الشبكة** | 1 Gbps | |
|
||||
|
||||
**البوابات:** `3030` (WebSocket للركاب)، `3031` (Internal HTTP)
|
||||
|
||||
**ملاحظة:** يمكن دمج السوكتين في سيرفر واحد (Driver + Passenger على نفس الجهاز) لتوفير التكاليف إذا كان عدد المستخدمين متوسطاً. أما إذا توقعتم نمواً كبيراً، فالأفضل فصلهما.
|
||||
|
||||
**نظام التشغيل للسوكتات:** يفضل Ubuntu 22.04 LTS ويحتاج PHP-CLI وليس PHP-FPM
|
||||
|
||||
---
|
||||
|
||||
## 💳 6. Wallet / Payment Server (سيرفر المحفظة والمدفوعات)
|
||||
|
||||
| المواصفة | المطلوب | السبب |
|
||||
|----------|---------|-------|
|
||||
| **المعالج** | 4 Core | طلبات أقل تواتراً لكنها حسّاسة |
|
||||
| **الرام** | 8 GB | |
|
||||
| **التخزين** | 50 GB SSD | كود + سجلات |
|
||||
| **الشبكة** | 1 Gbps | |
|
||||
|
||||
**ملاحظات:**
|
||||
- يمكن فصله كخدمة مستقلة أو وضعه على أحد API servers
|
||||
- يحتاج اتصال مع بوابات الدفع (PayMob، MTN، Syriatel Cash)
|
||||
- **هام:** يحتاج HTTPS إلزامي (ضروري لأمان المدفوعات)
|
||||
- إذا كانت المدفوعات محليّة في سوريا فقط، قد تحتاج بوابات دفع سورية (MTN Cash, Syriatel Cash)
|
||||
|
||||
---
|
||||
|
||||
## 🗺️ 7. OSRM Routing Server (محرك التوجيه)
|
||||
|
||||
**العدد: 1-2 سيرفر (حسب عدد المسارات المطلوبة)**
|
||||
|
||||
| المواصفة | المطلوب | السبب |
|
||||
|----------|---------|-------|
|
||||
| **المعالج** | 16 Core | OSRM routing requests تستهلك CPU عالٍ |
|
||||
| **الرام** | 32 GB | OSRM يحمل خريطة كاملة في الذاكرة |
|
||||
| **التخزين** | 200 GB NVMe | بيانات OSM لسوريا + ملفات OSRM processed |
|
||||
| **الشبكة** | 1 Gbps | |
|
||||
|
||||
**حجم OSM لسوريا:**
|
||||
- ملف الخريطة (syria-latest.osm.pbf) ~ 100-200 MB
|
||||
- بعد معالجة OSRM (contracted graph) ~ 500 MB - 1 GB
|
||||
- الذاكرة المطلوبة للتشغيل ~ 8-16 GB للخريطة نفسها
|
||||
|
||||
**يمكنك تشغيله على Docker:**
|
||||
```bash
|
||||
docker run -t -v "${PWD}:/data" osrm/osrm-backend osrm-extract -p /opt/car.lua /data/syria-latest.osm.pbf
|
||||
docker run -t -v "${PWD}:/data" osrm/osrm-backend osrm-contract /data/syria-latest.osrm
|
||||
docker run -t -i -p 5000:5000 -v "${PWD}:/data" osrm/osrm-backend osrm-routed --algorithm mld /data/syria-latest.osrm
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🗺️ 8. Map SaaS Server (سيرفر الخرائط المخصص)
|
||||
|
||||
| المواصفة | المطلوب | السبب |
|
||||
|----------|---------|-------|
|
||||
| **المعالج** | 4-8 Core | |
|
||||
| **الرام** | 16 GB | للـ tile caching والـ geocoding |
|
||||
| **التخزين** | 200 GB SSD | Tile cache + بيانات جغرافية |
|
||||
| **الشبكة** | 1 Gbps | |
|
||||
|
||||
هذا السيرفر يقوم بـ:
|
||||
- Reverse Geocoding (تحويل إحداثيات إلى عنوان)
|
||||
- Place Search (البحث عن الأماكن)
|
||||
- Route calculation (قد يمرر طلبات إلى OSRM)
|
||||
- يمكن استخدام Nominatim + PostgreSQL/PostGIS للتجيكودينغ
|
||||
|
||||
---
|
||||
|
||||
## 🌐 9. الشبكة (Network Topology)
|
||||
|
||||
### 9.1 الشبكة الداخلية (Internal Network)
|
||||
|
||||
**مفضّلة**: شبكة داخلية خاصة (VLAN / Private Subnet)
|
||||
|
||||
```
|
||||
┌─────────────┐
|
||||
│ Internet │
|
||||
└──────┬──────┘
|
||||
│
|
||||
┌──────┴──────┐
|
||||
│ Firewall │
|
||||
│ (iptables/ │
|
||||
│ nftables) │
|
||||
└──────┬──────┘
|
||||
│
|
||||
┌──────┴──────┐
|
||||
│Load Balancer │
|
||||
│(Nginx/HAProxy)│
|
||||
│ Public IP │
|
||||
└──────┬──────┘
|
||||
│
|
||||
┌────────────────┼────────────────┐
|
||||
│ │ │
|
||||
┌──────┴──────┐ ┌─────┴──────┐ ┌─────┴──────┐
|
||||
│ API SRV 1 │ │ API SRV 2 │ │ Socket SV │
|
||||
│ 10.0.1.10 │ │ 10.0.1.11 │ │10.0.1.20-21 │
|
||||
└──────┬──────┘ └─────┬──────┘ └──────┬──────┘
|
||||
│ │ │
|
||||
└────────────────┼────────────────┘
|
||||
│
|
||||
┌────────────────┼────────────────┐
|
||||
│ │ │
|
||||
┌──────┴──────┐ ┌─────┴──────┐ ┌─────┴──────┐
|
||||
│ MySQL DB │ │ Redis │ │ OSRM │
|
||||
│ 10.0.1.30 │ │ 10.0.1.31 │ │ 10.0.1.40 │
|
||||
└─────────────┘ └────────────┘ └────────────┘
|
||||
|
||||
┌─────────────┐ ┌────────────┐
|
||||
│ Wallet SV │ │ Map SaaS │
|
||||
│ 10.0.1.50 │ │ 10.0.1.60 │
|
||||
└─────────────┘ └────────────┘
|
||||
```
|
||||
|
||||
**نطاق الشبكة الداخلية:** `10.0.1.0/24` (أي نطاق خاص)
|
||||
|
||||
### 9.2 الشبكة الخارجية
|
||||
|
||||
- السيرفرات التي تحتاج IP عام: **Load Balancer فقط**
|
||||
- Socket Servers: يمكن تشغيل WebSocket على نفس Load Balancer (رفع بروتوكول WS إلى WSS)
|
||||
- OSRM و Map SaaS: داخليان فقط (API servers تتصل بهم داخلياً)
|
||||
- قاعدة البيانات: **ليست عامة أبداً** - فقط وصلات داخلية
|
||||
|
||||
### 9.3 الإجراءات الأمنية
|
||||
|
||||
- **Firewall**: فتح المنافذ التالية فقط من الخارج:
|
||||
- 80 (HTTP → redirect to 443)
|
||||
- 443 (HTTPS)
|
||||
- 2020 (WebSocket driver - اختياري إذا прямо WS)
|
||||
- 3030 (WebSocket passenger - اختياري)
|
||||
- 22 (SSH - فقط من IPs محددة)
|
||||
|
||||
- **Fail2ban**: على Load Balancer لحماية SSH و API
|
||||
- **UFW/iptables**: على كل سيرفر لحجب المنافذ غير المستخدمة
|
||||
- **VPN**: للوصول إلى الإدارة (Tailscale أو WireGuard)
|
||||
- **SSL/TLS**: جميع الاتصالات الخارجية مشفرة
|
||||
|
||||
### 9.4 هل شبكة داخلية أم خارجية؟
|
||||
|
||||
| الخدمة | المفضل |
|
||||
|--------|--------|
|
||||
| API ↔ Database | **داخلي** (VLAN 10.0.1.x) |
|
||||
| API ↔ Redis | **داخلي** |
|
||||
| Socket ↔ Database | **داخلي** |
|
||||
| API ↔ Wallet | **داخلي** (أو خارجي إذا wallet على سيرفر مختلف كلياً) |
|
||||
| API ↔ OSRM | **داخلي** |
|
||||
| API ↔ Map SaaS | **داخلي** |
|
||||
| Internet ↔ Load Balancer | **خارجي** |
|
||||
| Driver App ↔ Socket | **خارجي** (لكن عبر Load Balancer أيضاً) |
|
||||
|
||||
---
|
||||
|
||||
## 📍 10. اعتبارات خاصة لسوريا
|
||||
|
||||
### 10.1 استضافة السيرفرات
|
||||
|
||||
**الخيارات الموصى بها (بالترتيب):**
|
||||
|
||||
1. **مراكز البيانات السورية:**
|
||||
- **شركة الاتصالات السورية (STE)** - خدمات hosting واستضافة
|
||||
- **Ayaa Cloud** - مزود خدمات سحابية سوري
|
||||
- **SNS (Syrian Network Systems)** - colocation واستضافة
|
||||
|
||||
2. **السيرفرات في دول مجاورة (للأداء):**
|
||||
- **لبنان** (IDM، Ogero) - أقرب وأقل زمن استجابة (< 30ms)
|
||||
- **الأردن** - خيار ممتاز (زمن استجابة ~ 30-50ms)
|
||||
- **تركيا** - أقرب لشمال سوريا
|
||||
- **الإمارات / السعودية** - استقرار أكبر لكن زمن استجابة أعلى (~ 80-100ms)
|
||||
|
||||
3. **سيرفرات عالمية:**
|
||||
- **Hetzner (ألمانيا/فنلندا)** - أفضل قيمة مقابل سعر (~ 150-200ms latency)
|
||||
- **OVH (فرنسا)** - جيد
|
||||
- **DigitalOcean / Linode** - للاستضافة السحابية
|
||||
|
||||
### 10.2 مشاكل الإنترنت في سوريا
|
||||
|
||||
| المشكلة | الحل |
|
||||
|---------|------|
|
||||
| **انقطاع الكهرباء** | UPS لكل سيرفر + مولد كهربائي للمركز |
|
||||
| **ضعف سرعة الإنترنت** | استخدام Content Delivery (CDN) للملفات الثابتة |
|
||||
| **الحجب (بعض الخدمات)** | استخدام VPN أو proxy للاتصال بخدمات خارجية (PayMob، Firebase) إذا لزم الأمر |
|
||||
| **تكاليف النطاق العالي** | ضغط البيانات (gzip) + تحجيم الصور + lazy loading |
|
||||
| **تذبذب الاتصال (Packet Loss)** | TCP tuning, BBR congestion control على السيرفرات |
|
||||
|
||||
### 10.3 سرعة الإنترنت في سوريا
|
||||
|
||||
| الخدمة | السرعة المتوقعة | ملاحظة |
|
||||
|--------|-----------------|--------|
|
||||
| ADSL | 4-16 Mbps | الأكثر انتشاراً |
|
||||
| Fiber (FTTH) | 20-100 Mbps | متوفرة في المدن الكبرى |
|
||||
| 4G/LTE | 10-50 Mbps | جيد للمستخدمين النهائيين |
|
||||
| Business Line | 50-200 Mbps | المطلوب للسيرفرات |
|
||||
|
||||
**لتطبيق مثالي في سوريا:**
|
||||
- حجم API response يجب أن يكون < 50 KB
|
||||
- حجم الصور مضغوط (WebP)
|
||||
- استخدام Lazy loading للخرائط
|
||||
- تفعيل HTTP/2 على الـ Load Balancer
|
||||
|
||||
### 10.4 استهلاك النطاق الترددي المقدر
|
||||
|
||||
| الخدمة | الاستهلاك التقريبي (شهرياً) |
|
||||
|--------|---------------------------|
|
||||
| API Requests (REST) | 200-500 GB |
|
||||
| WebSocket Data | 500 GB - 2 TB |
|
||||
| Map Tiles & Routing | 200-500 GB |
|
||||
| Uploads (صور، وثائق) | 100-200 GB |
|
||||
| **المجموع التقريبي** | **1-3 TB شهرياً** |
|
||||
|
||||
---
|
||||
|
||||
## 📐 11. الترتيب المقترح للتنفيذ
|
||||
|
||||
```
|
||||
المرحلة 1: البنية الأساسية
|
||||
├── تجهيز Load Balancer (Nginx + SSL)
|
||||
├── تجهيز MySQL Server (تركيب + ضبط + تحميل البيانات)
|
||||
└── تجهيز Redis Server
|
||||
|
||||
المرحلة 2: السيرفرات الأساسية
|
||||
├── تجهيز API Server 1 (PHP + Nginx + FPM)
|
||||
├── تجهيز API Server 2 (clone من 1)
|
||||
└── ربط API Servers مع Load Balancer
|
||||
|
||||
المرحلة 3: السيرفرات المساعدة
|
||||
├── تجهيز Socket Server (Driver Socket + Passenger Socket)
|
||||
├── تجهيز Wallet Server
|
||||
└── ربط الكل مع قاعدة البيانات و Redis
|
||||
|
||||
المرحلة 4: الخرائط
|
||||
├── تجهيز OSRM Server (تحميل OSM سوريا + معالجة)
|
||||
├── تجهيز Map SaaS Server
|
||||
└── اختبار التوجيه والتجيكودينغ
|
||||
|
||||
المرحلة 5: الاختبار والإطلاق
|
||||
├── اختبار تحميل (Load Testing) - استخدام K6 أو Locust
|
||||
├── اختبار WebSocket مع 1000+ مستخدم وهمي
|
||||
├── مراقبة (Prometheus + Grafana)
|
||||
└── الإطلاق التدريجي
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 💰 12. التكلفة التقديرية الشهرية (للسيرفرات)
|
||||
|
||||
| السيرفر | المواصفات | التكلفة التقريبية (شهرياً) |
|
||||
|---------|-----------|--------------------------|
|
||||
| Load Balancer | 2 Core, 4GB | $20 - $40 |
|
||||
| API Server x2 | 8 Core, 16GB (لكل) | $100 - $200 (لكل) |
|
||||
| MySQL Server | 16 Core, 64GB, 1TB NVMe | $300 - $600 |
|
||||
| Redis Server | 8 Core, 32GB | $100 - $200 |
|
||||
| Socket Server(s) | 8 Core, 16GB | $80 - $150 |
|
||||
| Wallet Server | 4 Core, 8GB | $40 - $80 |
|
||||
| OSRM Server | 16 Core, 32GB | $200 - $400 |
|
||||
| Map SaaS | 4 Core, 16GB | $60 - $120 |
|
||||
| **المجموع التقريبي** | | **$900 - $1,890 شهرياً** |
|
||||
|
||||
**ملاحظة:** الأسعار تقديرية وقد تختلف حسب المزود. السيرفرات داخل سوريا قد تكون أرخص ولكن بجودة شبكة أقل.
|
||||
|
||||
---
|
||||
|
||||
## ✅ 13. الخلاصة والتوصيات
|
||||
|
||||
1. **أفضل نموذج لنشر سيرفرات سوريا هو:**
|
||||
- استضافة السيرفرات في **مركز بيانات سوري** أو **لبناني/أردني**
|
||||
- استخدام **شبكة داخلية (VLAN)** لكل الاتصالات بين السيرفرات
|
||||
- وضع **Load Balancer** واحد أمام API Servers (2)
|
||||
- قاعدة البيانات الرئيسية + Redis على نفس الشبكة الداخلية مع اتصال 10 Gbps
|
||||
|
||||
2. **توزيع الأدوار:**
|
||||
- API Servers: 8 Cores + 16 GB RAM ✅ (كافٍ)
|
||||
- Database: 16 Cores + 64 GB RAM ✅ (ضروري)
|
||||
- Redis: 8 Cores + 32 GB RAM ✅ (ضروري للأداء اللحظي)
|
||||
- Socket: 8 Cores + 16 GB RAM ✅ (كحد أدنى)
|
||||
|
||||
3. **توفير التكاليف:**
|
||||
- يمكن دمج Socket Servers في جهاز واحد (Driver + Passenger) لتوفير سيرفر
|
||||
- يمكن دمج Wallet مع أحد API Servers
|
||||
- يمكن استخدام OSRM Server واحد لسوريا (الخريطة صغيرة نسبياً)
|
||||
|
||||
4. **أولوية الأداء في سوريا:**
|
||||
- **Redis** هو أهم عنصر لأداء التطبيق (مواقع السائقين + كاش)
|
||||
- **MySQL Buffer Pool** يحدد سرعة الاستعلامات
|
||||
- **الـ Load Balancer** يوزع الضغط عن API servers
|
||||
|
||||
5. **الأمان:**
|
||||
- API Servers → قاعدة البيانات عبر مستخدم MySQL مخصص بصلاحيات محدودة
|
||||
- Redis محمي بكلمة مرور (requirepass + rename-command FLUSHALL)
|
||||
- جميع المفاتيح السرية في `.env` مع صلاحيات 600
|
||||
- JWT + HMAC للمدفوعات
|
||||
---
|
||||
Reference in New Issue
Block a user