انتقل إلى المحتوى
النوعإمكان جديد
المرحلةأسطول
مستوى الصعوبةمتوسط
المهمةSaaS متعدد المستأجرين
لـالمؤسسون الفرادى
لـفرق التطوير
لـالوكالات
الخدماتالحاويات
الخدماتاللقطات
الخدماتExec
الخدماتFiles
لماذا Hoodyاقتصاديات الحاوية
لماذا Hoodyعزل المعدن العاري
لماذا Hoodyالسفر عبر الزمن باللقطات
الصناعةSaaS
النوعإمكان جديد
المرحلةأسطول
مستوى الصعوبةمتوسط
المهمةSaaS متعدد المستأجرين
لـالمؤسسون الفرادى
لـفرق التطوير
لـالوكالات
الخدماتالحاويات
الخدماتاللقطات
الخدماتExec
الخدماتFiles
لماذا Hoodyاقتصاديات الحاوية
لماذا Hoodyعزل المعدن العاري
لماذا Hoodyالسفر عبر الزمن باللقطات
الصناعةSaaS
النوعإمكان جديد
المرحلةأسطول
مستوى الصعوبةمتوسط
المهمةSaaS متعدد المستأجرين
لـالمؤسسون الفرادى
لـفرق التطوير
لـالوكالات
الخدماتالحاويات
الخدماتاللقطات
الخدماتExec
الخدماتFiles
لماذا Hoodyاقتصاديات الحاوية
لماذا Hoodyعزل المعدن العاري
لماذا Hoodyالسفر عبر الزمن باللقطات
الصناعةSaaS
النوعإمكان جديد
المرحلةأسطول
مستوى الصعوبةمتوسط
المهمةSaaS متعدد المستأجرين
لـالمؤسسون الفرادى
لـفرق التطوير
لـالوكالات
الخدماتالحاويات
الخدماتاللقطات
الخدماتExec
الخدماتFiles
لماذا Hoodyاقتصاديات الحاوية
لماذا Hoodyعزل المعدن العاري
لماذا Hoodyالسفر عبر الزمن باللقطات
الصناعةSaaS
الحاويات · نظام SaaS متعدد المستأجرين

صندوق رمل واحد لكل عميل، تلقائياً

توقف عن نثر tenant_id عبر كل جدول. عندما يسجل عميل، ينسخ سيناريو exec حاوية عميل جديدة ويُسلّمهم عنوان URL خاص بهم، نظام ملفات خاص بهم، SQLite خاص بهم. العزلة هي نظام التشغيل بينهم، وليس شرط WHERE.

اقرأ وثائق النسخ

ماذا يهيّئ هذا الاستدعاء الواحد لـ API

كل طلب POST إلى /api/v1/projects/{id}/containers يُشغّل بيئة معزولة. نداء واحد، مستأجر واحد، URL واحد يُعاد إلى تطبيقك.

01 · WEBHOOK

التسجيل يُطلق طلب POST للـ container

webhook الخاص بـ Stripe (أو أي نظام فوترة) يستدعي script في Hoody Exec. لا Express، لا إعداد خادم — مجرد ملف في scripts/.

02 · ISOLATION

Linux namespaces، وليس جملة WHERE

الـ container الجديد له filesystem خاص به، وSQLite خاص، وramdisk خاص. المستأجر A لا يمكنه حرفياً رؤية بيانات المستأجر B.

03 · URL

URL فريد يعود إلى تطبيقك

تتضمن الاستجابة URL للـ container. يعيد تطبيقك توجيه المستخدم إلى sandbox الخاص به ضمن نفس نافذة الـ deploy.

04 · FIREWALL

استنساخ قواعد الشبكة لكل مستأجر

تُنسخ قواعد شبكة الـ container والـ firewall من القالب الخاص بك. كل مستأجر جديد يبدأ من نفس الأساس الأمني.

05 · IDLE

تكلفة صفرية عند الخمول

أوقف الـ container ولن يكلّفك شيئاً. يحتفظ BTRFS بالـ delta فقط من قالبك — تبقى تكلفة القرص منخفضة حتى مع التوسّع.

06 · OFFBOARD

DELETE container = نسيان المستأجر

استدعاء DELETE واحد يزيل الـ container وكل بياناته. حذف بيانات المستخدم وفق GDPR ليس script، بل استدعاء HTTP واحد.

التدفق كله معالج webhook واحد. لا مشغل Kubernetes، لا namespace YAML، لا مسؤول cluster. ثلاثة استدعاءات HTTP: webhook داخل، حاوية خارج، URL إلى المستخدم.

تعدّد مستأجرين مشترك مقابل حاوية لكل عميل

الخيارات التقليديّة كانت إمّا عمود على كل جدول أو أسطول VMs لا تستطيع تحمّل تكلفته. Hoody شكل ثالث: حاويات رخيصة بما يكفي لإعطاء واحدة لكل عميل.

البُعد
قاعدة بيانات مشتركة · TENANT_ID
HOODY · حاوية لكل عميل
  • العزلWHERE tenant_id = $1 — وتأمل أنّ كل استعلام يتذكّرأسماء فضائيّة في Linux. المستأجر A لا يستطيع حرفياً رؤية نظام ملفّات المستأجر B.
  • سطح تسرّب البياناتكل JOIN، كل ربط ORM، كل نصّ تقاريرحدّ الحاوية. قطعة واحدة لتدقيقها، لا 200 موقع استعلام.
  • إعداد لكل مستأجرجدول علامات ميزات، هشّ، نصف مُختبَر في devعدّل بيئة حاوية واحدة. الـ 399 الأخرى لا تتغيّر.
  • الجار المُزعجعميل ثقيل واحد يستطيع قفل قاعدة البيانات المشتركةحصص CPU وقرص للحاوية؛ حمل مستأجر واحد يبقى في صندوقه.
  • إنهاء الاشتراكDELETE … WHERE tenant_id … زائد 12 جدولاً نسيتهااحذف الحاوية. بياناتهم تذهب معها. GDPR استدعاء HTTP واحد.
  • التكلفة عند الخمولكل صفّ يُكلّف تخزيناً حتى حين العميل نائمأوقف الحاوية — صفر CPU، صفر RAM. BTRFS يُبقي الفرق فقط.
  • لا أعمدة tenant_id
  • لا تدقيقات أمن مستوى الصفّ
  • لا YAML أسماء فضائيّة
  • احذف = انسَ

تعدّد المستأجرين يتوقّف عن كونه مشكلة معماريّة. يصبح أمر `cp`.

تسجيلPOST /containers/$TEMPLATE/copy
إنهاءDELETE /containers/$CID
تخصيص لكل مستأجرPATCH /containers/$CID [ env_vars ]
  • عزل بدرجة الأسماء الفضائيّة
  • حذف GDPR في استدعاء واحد
  • حاوية واحدة لكل حساب

ما يستبدله هذا

العزل لكل مستأجر يعني تاريخياً إمّا جملة WHERE ذكيّة أو عنقوداً مكلفاً. الحاوية لكل عميل تُزيح الحلول المعتادة:

  • تعدّد مستأجرين مشترك (عمود tenant_id)استعلام سيّئ واحد يكشف الجميع
  • وسيط عزل مستأجرين مُخصّصحارس مكتوب يدوياً تصونه إلى الأبد
  • سياسات أمن مستوى الصفّ في Postgresالإجابة الصحيحة، مكلفة لتدقيقها لكل جدول
  • اسم فضاء Kubernetes لكل مستأجرعبء على مستوى العنقود، فريق ops مطلوب
  • مخطّطات / قواعد بيانات لكل عميلمضاعف هجرة، ألم مجمّع اتّصالات
  • صفوف قياس Stripe في جدول مشتركتتبّع استخدام مُلصَق بنفس الصندوق المشترك

العملاء الخاملون لا يُكلّفون شيئاً. النشطون يتوسّعون عند الطلب. كل ذلك يعمل على معدن عارٍ بـ 49 دولاراً حتى يصبح لديك مئات المستخدمين الدافعين.

اقرأ توثيق نسخ الحاوية

اقرأ حالات أخرى