
Andrew Hanna

Andrew Hanna

الإجابة باختصار: تجمّع الـ scratch orgs المُسخَّنة مسبقًا هو مجموعة بيئات تُنشأ وتُجهَّز بالكامل قبل الطلب، فيسحب البناء أو المطوّر بيئة جاهزة بدل أن ينتظر إنشاء واحدة. الأمر يهم فرق الـ ISV أكثر من فرق الأورج إلى الأورج، لأن كل عملية تحقق من حزمة تدفع كامل تكلفة إنشاء البيئة وتثبيت سلسلة الاعتماديات قبل تشغيل أول اختبار. التجميع ينقل تلك التكلفة خارج المسار الحرج.
لا أحد يضع "زمن إنشاء الـ scratch org" على شريحة خارطة الطريق. ومع ذلك هو ما يحدد سقف عدد المرات التي يستطيع فيها الـ ISV التحقق من حزمة، ومعظم الفرق لا تراه لأن الانتظار موزّع على كل طلب دمج بدل أن يظهر كبند واحد واضح.
التجمّع مهمة خلفية تُبقي عددًا من البيئات حيّة وجاهزة، كل واحدة تحمل مسبقًا ما يحتاجه البناء: الإصدار والخصائص الصحيحة، وحزم الاعتماديات مثبّتة، وبيانات التجربة محمّلة، ومجموعات الصلاحيات مُسندة. وحين يطلب خط الإنتاج أو المطوّر بيئة، يسلّمه التجمّع واحدة ويبدأ بهدوء في تجهيز البديل.
التعريف ممل، لكن النتيجة ليست كذلك: الزمن حتى الحصول على بيئة صالحة يهبط إلى زمن سحبها فقط، ويتوقف عن التغيّر مع تعقّد شجرة الحزم عندك.
تأمّل ما تفعله عملية تحقق واحدة من حزمة:
الخطوات من الأولى إلى الرابعة كلها انتظار. تعطي النتيجة نفسها في كل تشغيل، وعند ISV له شجرة اعتماديات حقيقية تلتهم عادةً معظم الزمن. هذا هو السقف الصامت: كلما كبرت شجرة الحزم تباطأت التغذية الراجعة رغم أن مجموعة الاختبارات لم تتغير، فتتحقق الفرق أقل، وتجمّع تغييرات أكثر في كل عملية تحقق، وتكتشف التعارضات متأخرًا. لا أحد يقرر التباطؤ، بل يحدث من تلقاء نفسه.
والتكلفة تقع في المكان الذي يشعر به الـ ISV تمامًا: فحوصات طلبات الدمج، والانحدار الليلي عبر عدة إصدارات، والتشغيل السابق للإطلاق مقابل كل نسخة ما زلت تدعمها لدى المشتركين.
هنا تلتقي الخطة بالحصة المتاحة. توثّق Salesforce حدود الشركاء: الـ Partner Business Org النشطة تحصل على 150 بيئة نشطة و300 يوميًا، وحساب التجربة يحصل على 20 نشطة و40 يوميًا (راجع وثائق حصص الشركاء). ومن هنا نتيجتان.
الأولى أن الحصة اليومية تقارب ضعف الحصة النشطة، وهي رسالة من Salesforce بأن الدوران متوقع وأن التكديس غير مرغوب. والثانية أن التجمّع ليس مجانيًا: كل بيئة تبقى ساخنة هي بيئة نشطة لا يمكنك استخدامها في مكان آخر. احسب الحجم على أساس ذروة الطلب المتزامن مع هامش صغير، لا على أساس عدد الموظفين.
لا، والفرق يستحق الدقة لأنهما يعالجان مشكلتين متجاورتين. اللقطة نسخة لحظية من بيئة تشمل الحزم المثبتة والخصائص والتراخيص والبيانات الوصفية والبيانات، وتنشئ منها بيئات جديدة. هذا يلغي عمل الإعداد، لكنه لا يلغي انتظار توفير البيئة نفسها.
وللّقطات قيودها: تنتهي صلاحيتها بعد 90 يومًا، والحصة تبدأ من 3 في Developer Edition وتصل إلى 100 في Unlimited وPerformance، ولا تُنسخ معها التطبيقات المتصلة ولا بيانات الاعتماد الخارجية والمسمّاة. وبالنسبة للـ ISV هذا يعني أن اللقطة تتقادم مع أول تغيّر في إصدار اعتمادية.
الاثنان يتكاملان جيدًا. ابنِ التجمّع انطلاقًا من لقطة، فتوفّر عمل الإعداد والانتظار معًا.
يمكنك بناؤه بنفسك عبر أدوات sfp مفتوحة المصدر التي يوثّقها مشروع flxbl، وهكذا بدأ أوائل المتبنّين. أما في Serpent فالـ scratch orgs متاحة في كل الخطط، والتجميع المُسخَّن مسبقًا متوفّر في خطتَي Scale وEnterprise، إلى جانب مسارات 1GP و2GP وحل الاعتماديات عبر الحزم وبوابات الإصدار على AppExchange التي تحتاجها فرق الحزم على المنصة نفسها. وأيًا كان الطريق، أصرّ على أن يفهم التجمّع شجرة اعتمادياتك؛ فتجمّع بيئات فارغة يحل النصف الأصغر من المشكلة.
لو كنت ISV وزحفت فحوصات طلبات الدمج عندك من أربع دقائق إلى عشرين، فانظر أين تذهب هذه العشرون قبل أن تحسّن اختبارًا واحدًا. Serpent مبني لهذا الفريق تحديدًا.
ما الحجم المناسب لتجمّع الـ scratch orgs؟
ابدأ بذروة الطلب المتزامن زائد اثنتين. راقب كم مرة يصل التجمّع إلى الصفر ولا تزد السعة إلا عندها، لأن كل بيئة ساخنة تستهلك حصتك النشطة.
هل تُحتسب البيئات المجمّعة ضمن حدود Salesforce؟
نعم. البيئة تُعد نشطة من لحظة إنشائها حتى انتهاء صلاحيتها أو حذفها، فالتجمّع الساخن يستهلك الحصة طوال فترة سكونه.
لقطات أم تجميع؟
الاثنان معًا إن أمكن. اللقطة تختصر الإعداد داخل البيئة، والتجميع يختصر انتظار البيئة نفسها. وبناء التجمّع من لقطة يمنحك الاثنين.
هل يفيد التجميع فرق الأورج إلى الأورج أيضًا؟
بدرجة أقل. من دون سلسلة اعتماديات تُثبَّت، يصبح الإنشاء البارد أرخص بكثير، فيقل العائد مقارنةً بفرق الحزم.
بدون التزام.