> ## Documentation Index
> Fetch the complete documentation index at: https://docs.gorbit.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# وصف النظام

> نظرة عامة على مكونات Gorbit

## نظرة عامة

تطبيق Gorbit هو مجموعة من حاويات Docker التي يمكن نشرها على أي بنية تحتية وبأي حجم.

<Tip>
  كمشروع مفتوح المصدر،
  تم تصميم Gorbit مع وضع الأمان والخصوصية كأساس أساسي حتى تتمكن الفرق من الوثوق بالبرنامج حتى
  دون الحاجة إلى ضمانات الشراكة.
</Tip>

## هيكل النظام

<img className="rounded-image" src="https://mintlify.s3.us-west-1.amazonaws.com/gorbit/assets/security/GorbitArchitecture.png" alt="Gorbit Architecture" />

## المكونات الأساسية

### طبقة التطبيق

* **عميل الويب الأمامي**: تطبيق ويب مبني على Next.js يوفر واجهة المستخدم لمنصة
  Gorbit
* **خادم API**: خادم ويب Python FastAPI للتعامل مع منطق الأعمال والطلبات
* **عمال الخلفية**: عمال Python للتعامل مع المهام غير المتزامنة مثل جلب تحديثات المستندات، إلخ.

### طبقة البيانات

* **قاعدة البيانات العلائقية**: قاعدة بيانات Postgres لتخزين بيانات التطبيق وجلسات المستخدم وحالة
  النظام
* **قاعدة بيانات المتجهات**: محرك البحث النصي Vespa + مخزن المتجهات لاسترجاع السياق للاستعلامات
* **ذاكرة التخزين المؤقت**: Redis، تستخدم لتحسين الأداء
* **مخزن الملفات**: مخزن الكائنات MinIO للملفات التي تم تحميلها من قبل المستخدم والمستندات المسحوبة من الموصلات

### طبقة البنية التحتية

* **موجه الطلبات**: وكيل Nginx العكسي لموازنة الحمل وتوجيه الطلبات

## استبدال المكونات

بعض مكونات مكدس Gorbit قابلة للاستبدال بسهولة بينما البعض الآخر ليس كذلك.

يمكن استبدال **MinIO** بـ S3 أو أي خدمة تخزين كائنات مماثلة.
واجهة مخزن الملفات مجردة لجعل هذا الأمر سهلاً.

يمكن استبدال **Redis** بخدمة Redis مُدارة مثل AWS ElastiCache.
قد تعمل ذاكرات التخزين المؤقت الأخرى في الذاكرة لكنها ستتطلب تغييرات في الكود.

يمكن استبدال **Postgres** بخدمة Postgres مُدارة مثل AWS RDS.
من الأصعب بكثير وغير المحبذ التبديل إلى قاعدة بيانات علائقية مختلفة بسبب الميزات الخاصة باللغة و
التحسينات.

يمكن استبدال **Vespa** بنشر Vespa متعدد العقد (عادةً ليس ضرورياً) أو Vespa Cloud.
Vespa مدمج بإحكام مع وظائف استرجاع السياق واستبداله سيتطلب جهد تطوير
كبير للحفاظ على نفس الوظائف.

يمكن إزالة **Nginx** واستبداله بوكيل التوجيه الخاص بك.
