الفصل 01· الفصل الأول · من On-Premises إلى السحابة
البرمجيات الـ on-premises تعمل على أجهزة العميل نفسه، داخل مبناه. وهذه الحقيقة الواحدة تقرر تقريبًا كل شيء عن سلوكها.
لا يوجد تسجيل، لأنه لا يوجد غريب. فقد اشترى أحدهم البرنامج وثبته، وكل من يستخدمه ينتمي إليه أصلًا. ولا توجد تجربة مجانية، لأنك لا تجرّب شيئًا يجب تثبيته أولًا. ولا توجد فوترة داخل المنتج، لأن المال تولاه عقد قبل أن يفتح أحد شاشة. ولا يوجد سؤال حقيقي عمن يرى ماذا، لأن الجميع في المبنى يعملون في الشركة نفسها.
والانتقال إلى السحابة يُزيل هذه الافتراضات جميعًا دفعةً واحدة. فمشكلة التصميم لم تكن يومًا «ضعه على خادم»، بل: من هذا الشخص؟ وماذا يحق له أن يرى؟ ومن يدفع مقابل ما يستهلكه؟
وقيد واحد جعل الأمر أصعب: البنية القائمة كان يجب أن تنجو. فالعملاء الذين يشغلون Cervello محليًا يعرفون كيف نُظّم. ونسخة سحابية تُعيد ترتيب كل شيء كانت ستصبح منتجًا آخر يحمل الاسم نفسه.
القرار
تجربة مجانية، وـ instance تملكه
وحدة المنتج السحابي صارت الـ instance — مساحة العميل الخاصة، يُوصل إليها عبر نطاق فرعي يسميه هو بنفسه، فيدخل مباشرة إلى بيئته لا إلى باب عام.
ومعها تجربة مجانية لمدة أربعة عشر يومًا. وهذا القرار وحده هو ما يفتح المنتج لسوق كان مضطرًا للالتزام قبل أن يرى شيئًا.
وقاعدة الملكية تحتها متعمدة: يمكنك أن تنضم إلى instances كثيرة، لكنك لا تملك إلا واحدة.
وهذه القاعدة هي ما يجعل كل ما عداها قابلًا للحل. فالانضمام هو كيف تعمل داخل مساحات غيرك — مهندس لدى مُدمِج يعمل داخل بيئة عميل. والملكية هي ما تدفع مقابله. وإبقاء الملكية واحدة يجعل الفوترة وحدود الموارد والتجربة المجانية ترتبط كلها بشيء لا لبس فيه. ومن يأتي برابط دعوة يُوجّه ليختار أي ـ instance يدخل، ومن لا دعوة لديه فهو يُنشئ مساحته هو.
وأول إعداد يتم تلقائيًا. فإنشاء الـ instance يُنشئ معه أول organisation وأول team، ويجعل المستخدم جاهزًا للعمل في ثوانٍ — بدل أن يُطلب من مستخدم جديد أن يبني هرمًا فارغًا قبل أن يفعل أي شيء. فالبنية موجودة لأن المنتج يحتاجها؛ وليس على المستخدم أن يبنيها بيده ليبدأ.
القرار
تسجيل يرفض أن يؤكد من هو موجود
التسجيل يتم بالبريد مع رابط تحقق. والمهم هو ماذا يحدث حين يكون البريد مسجلًا بالفعل.
السلوك المعتاد — هذا البريد مستخدم بالفعل — تيسير صغير وثغرة حقيقية. فهو يؤكد لأي من يسأل أن شخصًا بعينه يملك حسابًا على هذه المنصة. ومن يسأل مرارًا يحصل على قائمة أهداف مؤكدة.
فالمنتج لا يجيب. المسار يبدو واحدًا في الحالتين. وإن كان العنوان مسجلًا، يذهب إشعار أمني إلى صاحبه بدلًا من ذلك: أحدهم حاول التسجيل ببريدك. فله أن يتجاهله، أو يغير كلمة مروره.
ومنع تعداد الحسابات (account enumeration) ممارسة أمنية معروفة. واللافت أنها صُممت داخل شاشة تسجيل عادية في منصة تتحكم لاحقًا في بنية تحتية مادية — حيث تكون معرفة من يشغّل نظامًا مفيدة في حد ذاتها لمهاجم.
وقرار متصل به: شاشة الملف الشخصي بعد التسجيل قابلة للتخطي. فليس كل حقل مكانه عند الباب. وما ينقص يُطلب لاحقًا، في سياقه، والمستخدم يعمل بالفعل — ومنه المنطقة، وهي أهم مما تبدو، لأن المنطقة الزمنية تحدد كيف تُقرأ أوقات الإنذارات والأحداث.
النتيجة · النسخة السحابية أُطلقت، وتعمل في عدة دول منها إسبانيا ومصر.
ولا يُدّعى أي رقم. فأنا لا أملك أرقام تبنٍّ أو استخدام لهذا المنتج، ولن أخترعها.
والذي أنتجه العمل فعلًا: منصة يستطيع غريب أن يدخلها، ويجربها أسبوعين، ثم يدفع مقابلها — بنموذج ملكية واضح بما يكفي ليحمل الفوترة، وتسجيل يرفض أن يسرّب قائمة مستخدميه.
اقرأ المزيد→الفصل 02· الفصل الثاني · معمار الصلاحيات
عملاء Cervello مُدمِجون وموردو برمجيات. وهم لا يستخدمون المنصة لإدارة مبنى واحد — بل لبناء حلول وتشغيلها لعملائهم هم، عدة حلول في وقت واحد.
فعميل واحد لـ Cervello قد يدير حل مواقف ذكية لمدينة، وحل مراقبة مرافق لمجموعة متاجر، وتجربة أولية لعميل محتمل — في آن واحد. فرق مختلفة، وعملاء مختلفون، وأشخاص يجب ألا يرى بعضهم عمل بعض.
والمشتري غالبًا ليس هو المستخدم. فمن يوقّع العقد ليس المهندس الذي يضبط الأجهزة في الثانية صباحًا. وبنية تفترض صاحب حساب واحدًا يرى كل شيء لا تصف هذا العمل إطلاقًا.
وهذا هو الجزء الذي أخذته بأكبر جدية في المشروع، والسبب بسيط: المعمار هو القرار الوحيد الذي لا يمكن التراجع عنه لاحقًا. فالبنية الخاطئة لا تُرقّع بإعادة تصميم الشاشات فوقها — وتغييرها لاحقًا يعني نقل النموذج الذهني لكل المستخدمين دفعةً واحدة. فكان يستحق أن أمنحه الوقت، وأن أغطي الحالات المربكة قبل أن يُبنى فوقه شيء.
القرار
أربع طبقات متداخلة
Instance ← Organisation ← Team ← Project.
وكل طبقة تجيب عن سؤال مختلف:
ولكل طبقة صفحة رئيسة خاصة بها، تعرض ما هو جارٍ عند ذلك المستوى — أحدث المشاريع والفرق والأعضاء مرتّبين بالنشاط. فالبنية لا تنفع إلا إذا كان كل مستوى يجيب عن سؤال «ماذا يحدث هنا؟» دون أن يضطر أحد للصعود أو النزول ليعرف.
وصفحة الـ team تعرض مشاريعه قابلة للترتيب بالاسم أو بالنشاط أو بسعة الأجهزة — وتبويب ثانٍ يعرض أعضاءه، فتُدار الصلاحيات والنشاط في المكان نفسه الذي فيه العمل، لا في لوحة إدارة منفصلة.
القرار
مشكلة الرؤية، مصوغة بوضوح
من أحدّ ما خرج من البحث، وجاء على لسان مسؤول:
وهنا الصعوبة الحقيقية في الصلاحيات المتداخلة. فالتقييد سهل البناء وسهل المبالغة فيه. وإذا أقفلت كل شيء، تتحول البنية إلى قفص: يعجز الناس عن أداء العمل الذي وُجدت أدوارهم من أجله.
لذلك جُعلت رؤية الأعضاء محدودة بالطبقة التي أنت مسؤول عنها. فقائمة أعضاء الـ instance كاملة لا يراها إلا مالكه أو مسؤوله. وأعضاء الـ organisation يُرون عند مستواها. وأعضاء الـ team داخل الـ team. أي أن كل مسؤول يرى بالضبط الفئة التي يحق له أن يتصرف فيها — لا أكثر، والأهم لا أقل.
وملف العضو يعرضه عبر الـ instance كله: الفرق والمشاريع التي يشارك فيها، ونشاطه الأخير. وهذا هو حل مشكلة التصادم — عدة أشخاص يعملون في المساحة نفسها دون معرفة من فعل ماذا. فالنشاط ليس سجلاً مدفونًا في الإعدادات؛ بل مرتبط بالشخص وبالطبقة.
القرار
الأصول، ونوعان من العلاقة
تحت بنية الصلاحيات تقع بنية ثانية، للعالم المادي.
والمشكلة: الجهاز يُبلّغ عن نفسه منفردًا. قياساته وإنذاراته وأحداثه وموقعه — كلها فردية، ولكل جهاز سمات مختلفة. لكن لا أحد يدير مدينة ذكية جهازًا جهازًا. الناس تدير طابقًا، ومبنىً، وحيًا.
لذلك تتيح الأصول (assets) للمستخدم أن يعكس بنيته الواقعية داخل النظام، وأن يتصرف في مجموعة كاملة بإجراء واحد — يطبّق على كل جهاز وكل أصل فرعي تحته.
وللهرم نوعان من الروابط: belongs وrelates. وهذا التمييز هو الجزء المثير للاهتمام. فالبنية المادية متداخلة فعلًا — الحساس ينتمي لطابق ينتمي لمبنى. لكن البنية التحتية الحقيقية فيها أيضًا علاقات تقطع الشجرة عرضًا: معدات تخدم مبنيين، أو نظام يمتد عبر عدة مواقع. ونموذج أب-وابن وحيد كان سيجبر المستخدمين على الكذب على بنيتهم التحتية لتناسب الشكل الذي يتوقعه البرنامج. ووجود نوعين من الروابط يجعل البنية تصف الواقع بدل أن تبسّطه.
والمبدأ نفسه يمتد إلى المراقبة: الإنذارات والأحداث تُعرض على خريطة حسب الموقع، مع درجة الخطورة، مجمّعة حسب الوحدات — لأن السؤال الذي يطرحه المشغّل ليس أبدًا «أي رقم جهاز أخفق؟» بل «ما الخلل، وأين، وما مداه؟»
النتيجة · البنية أُطلقت، وهي ما تعمل عليه المنصة في الإنتاج اليوم.
ولا يُدّعى أي رقم — فأنا لا أملك أرقام استخدام لهذا المنتج.
والذي يمكن ادعاؤه هو المعمار نفسه: أربع طبقات متداخلة برؤية محدودة عند كل منها، ونموذج نشاط يجيب عن من-فعل-ماذا داخل مساحة مشتركة، وهرم أصول يعترف بأن البنية التحتية لا تتخذ دائمًا شكل شجرة نظيفة.
اقرأ المزيد→