كيف أعمل معك

تطوير منصّات البرمجيات كخدمة

تطوير منصّات البرمجيات كخدمة (SaaS) هو بناء برنامج يخدم عملاء كثيرين من نشرٍ واحد: كل مستأجر معزول في بياناته وإعداداته وهويّته البصرية ونطاقه، بينما يبقى هناك نظام واحد يُشغَّل وقاعدة شيفرة واحدة تُغيَّر. والقرارات التي تحدّد هل يصمد ذلك — كيف يُنمذَج الاستئجار، وكيف تعمل الهوية، وكيف يتحرّك المال — تُحسم قبل بناء أي خاصية، لأنها المكلفة في التراجع. اتّخذت هذه القرارات ثلاث مرّات على منتجاتي الخاصة، وما زلت أُشغّل واحداً منها: مَكّوك، منصّة تجارة متعدّدة المستأجرين لتجّار السوق السوري.

منصّات متعدّدة المستأجرين تُحسم فيها مسائل الاستئجار والهوية والمال قبل أول خاصية — لأنها القرارات التي لا يمكن التراجع عنها.

من يحتاج منصّة برمجيات كخدمة متعدّدة المستأجرين؟

تحتاج منصّة برمجيات كخدمة حين يكون على البرنامج نفسه أن يخدم عملاء كثيرين في آنٍ واحد ويتوقّع كل منهم أنه له — بياناته، وإعداداته، وهويّته البصرية، ونطاقه — بينما تريد أنت نظاماً واحداً تنشره وقاعدة شيفرة واحدة تغيّرها. وهذا منتج مختلف بنيوياً عن برنامج بُني لشركة واحدة، والفرق يُحسم في الشهر الأول لا يُكتشف في السنة الثانية.

عملياً، هذه إحدى ثلاث حالات:

  • تبني منتجاً من الصفر سيُباع لأعمال كثيرة، وتريد القرارات التي تحته أن تُتّخذ مرّة واحدة وبإتقان.
  • بنيت شيئاً لعميل واحد فنجح، والآن تريده أعمال أخرى — وهي اللحظة التي يتوقّف فيها تعدّد المستأجرين عن كونه طلب خاصية ويصير إعادة بناء.
  • لديك منصّة في التشغيل الفعلي والأجزاء الموجعة هي التي تحت الخصائص: عزل المستأجرين، أو الهوية، أو سقوف الخطط، أو الفوترة، أو كلفةٌ لكل مستأجر تنمو أسرع من إيراده.

أعمل مع المؤسّسين والشركاء التقنيين ومسؤولي العمليات في الشركات الناشئة والمنشآت الصغيرة والمتوسطة، في الخليج والمنطقة العربية أساساً، بالعربية والإنكليزية.

ما الذي يشمله بناء منصّة برمجيات كخدمة؟

يغطّي بناء منصّة البرمجيات كخدمة دورة الحياة كاملة لا مرحلة البناء وحدها: تحليل الأعمال وتخطيط المنتج، والمعمارية وتصميم الأنظمة، والتطوير والتسليم، والنشر السحابي والتوسّع، وإصدارات متاجر التطبيقات حين يكون للمنتج سطح جوّال. وعلى منصّة برمجيات كخدمة تحديداً:

  • نموذج الاستئجار — ما المعزول، وما المشترك، وكم يكلّفك كل مستأجر. يُحسم مقابل نموذجك التجاري لا في المطلق.
  • الهوية والصلاحيات — من هو المستخدم، وإلى أي المستأجرين ينتمي، وما المسموح له داخل كلٍّ منها.
  • الخطط والسقوف وآليات الفوترة — ما الذي تقيّده الخطّة فعلاً وأين يُفرض ذلك، ليكون السقف خاصية من خصائص النظام لا سطراً في عرض المبيعات.
  • حدود الوحدات — الكتالوج والطلبات والمدفوعات والإشعارات والتقارير، مفصولة فصلاً صحيحاً، فلا تُلحَم الأجزاء التي تتغيّر أسبوعياً بالأجزاء التي تتغيّر مرّة في السنة.
  • إعدادات المستأجر وسِماته البصرية بالعمق الذي يحتاجه سوقك ولا أكثر، مع رسم خطّ «الإعدادات مقابل التفصيل الخاص» صراحةً.
  • التكاملات مع المزوّدين الذين يستخدمهم سوقك فعلاً — قنوات الدفع، وشركاء التوصيل، والمراسلة — كلٌّ خلف واجهة واحدة، ليرى المستأجر حالة طلب واحدة لا خمس حالات بأشكال المزوّدين.
  • النشر والبيئات والقابلية للمراقبة، بحجم يتيح لك الإجابة عن «أي مستأجر، أي استعلام، أي مزوّد» قبل أن يصير الأمر عطلاً.
  • أدوات التشغيل التي تحتاجها في الأسبوع الأول — تهيئة المستأجرين، ووصول الدعم، والقدرة على تصحيح البيانات دون عميل قاعدة بيانات.

كيف يجري بناء منصّة برمجيات كخدمة؟

يبدأ بناء المنصّة من النموذج لا من الشاشات. يعني ذلك أن الاستئجار والهوية والمال تُحسم وتُكتب معك قبل وجود أي واجهة، لأن تلك الإجابات الثلاث تحدّد كم يكلّف بقية البناء.

ومن هناك تجري دورة الحياة بالترتيب الذي يجب:

  • تحليل الأعمال وتخطيط المنتج — ما هو المنتج، ومن هو المستأجر، وماذا تعني الخطّة تجارياً، وأي القيود محسوم سلفاً.
  • المعمارية وتصميم الأنظمة — نموذج الاستئجار، وحدود الوحدات، وحدود التكامل، وكل قرار يكون التراجع عنه مكلفاً، مسجَّلاً مع السبب وراءه.
  • التطوير والتسليم — يُبنى كنواة أحادية معيارية افتراضاً: حدود حقيقية، ووحدة نشر واحدة، وحدود تبقى قائمة.
  • النشر السحابي والتوسّع — البيئات، والتهيئة، والتتبّع الذي يجعل الطلب البطيء قابلاً للإجابة لا للجدال.
  • إصدارات متاجر التطبيقات حين يكون هناك سطح جوّال.

الشخص نفسه مسؤول عن الخمسة كلّها. وهذا جوهر النموذج لا حدٌّ من حدوده: فمن يختار نموذج الاستئجار هو من عليه أن يعيش معه. وفي مَكّوك ما زلت أفعل — أسّست تلك المنصّة، وصمّمت معماريّتها، وأُشغّلها اليوم، بأعطالها وعمليات ترحيلها. هذا ما تعنيه عبارة «أفهم النظام التقني والعمل التجاري الذي يخدمه» في هذه الصفحة، وهي صيغة الادّعاء التي تستطيع الذهاب والتحقّق منها.

وأُدرّب الفرق على هذه المادّة أيضاً: قدّمت محاضرتين عن معمارية تعدّد المستأجرين وكيف تُوسّع منصّة برمجيات كخدمة، كلتيهما في Arabic Dev Group Malaysia، وأُقدّم دورات عملية لعدّة أيام في المعمارية لفرق الهندسة — من بينها جهات حكومية في الخليج.

قراءات ذات صلة

المحاضرتان أعلاه مكتوبتان بالكامل:

أسئلة عن هذا العمل

ما الذي يجب حسمه قبل أول خاصية في منصّة برمجيات كخدمة؟

ثلاثة أشياء: الاستئجار، والهوية، والمال. ما المعزول لكل مستأجر وما المشترك؛ ومن هو المستخدم وإلى أي المستأجرين ينتمي؛ وكيف تعمل الخطط والسقوف والدفع فعلاً. وكل خاصية تبنيها بعد ذلك تكون سهلة أو مستحيلة تبعاً لتلك الإجابات، والثلاثة مكلفة التغيير بعد أن يحتفظ عملاء حقيقيون ببياناتهم في النظام. في مَكّوك حُسمت قبل وجود أي خاصية، وهو الترتيب نفسه الذي أعمل به مع العملاء.

هل يحصل كل عميل على قاعدة بيانات خاصة، أم يتشاركون واحدة؟

هذا قرار تجاري يرتدي ثياباً تقنية، والجواب الصادق يأتي من نموذجك التجاري لا من «أفضل ممارسة». البنية المستقلّة لكل مستأجر تمنحك أقوى عزل وأبسط رواية لعميل يطلبها، وتجعل كلفتك تنمو مع عدد عملائك. والبنية المشتركة مع انضباط دقيق في الاستعلامات تبقي كلفة المستأجر قريبة من الصفر وتضع العبء على إتقان العزل في الشيفرة. مَكّوك لديها خطّة مجانية دائمة بلا عمولة، وهذا يستبعد أي تصميم تنمو كلفته مع عدد المستأجرين — فتبعت المعمارية النموذج التجاري لا العكس.

هل أطلق لعميل واحد الآن وأضيف تعدّد المستأجرين لاحقاً؟

يمكنك، وهو عادةً أغلى المسارات المتاحة. تعدّد المستأجرين ليس طبقة تُضاف فوق نظام يعمل لعميل واحد؛ بل يمتدّ إلى نموذج البيانات، والهوية، وكل استعلام، وكل مهمّة خلفية، وكل تكامل. والأمر نفسه يصحّ على البنية ثنائية اللغة وتعدّد العملات. هذه رخيصة إن صُمِّمت من البداية ومؤلمة إن رُكِّبت لاحقاً، ولهذا أعاملها كمسائل معمارية في البداية لا كبنود في خارطة الطريق.

كم يمكن للمستأجرين التخصيص قبل أن يتوقّف هذا عن كونه منتجاً واحداً؟

الخطّ الواجب الثبات عليه هو بين الإعدادات والنشر المفصّل لكل عميل. السِّمات البصرية الحقيقية والتحكّم بالتخطيط والصور يمكن أن تكون إعدادات على مستوى المستأجر تخدمها قاعدة شيفرة واحدة — وكانت تلك مشكلة التصميم المركزية في eMenu، حيث قائمة المطعم جزء من هويّته وعلى كل مستأجر أن يبدو متمايزاً. وحين لا يمكن تلبية متطلّب عميل إلا بشيفرة تعمل لذلك العميل وحده، تكون قد بدأت بصيانة عدّة منتجات بفريق واحد. وتحديد موضع ذلك الخطّ قرار منتج، ويُتّخذ عمداً في البداية خير من اكتشافه لاحقاً.

هل أحتاج إلى الخدمات المصغّرة لبناء منصّة برمجيات كخدمة؟

ليس في اليوم الأول، وعادةً ليس بعده بوقت طويل. افتراضي هو النواة الأحادية المعيارية: حدود حقيقية بين الوحدات، ولا جداول مشتركة بينها، وشيء واحد يُنشر. المنصّة مساحتها واسعة لكنها نادراً ما تحتاج خدمات تتوسّع باستقلال مبكراً، فينالك هذا انضباط الفصل دون الكلفة التشغيلية لنظام موزّع — وتبقى الحدود قائمة، فيمكن لوحدة أن تخرج لاحقاً إن برّر الحمل ذلك. أمّا الخدمات المصغّرة المشتراة قبل الحاجة إليها فكلفة جارية تُدفع تعقيداً في النشر ووقتاً في تتبّع الأعطال.

هل يغيّر دعم العربية المعمارية، أم التنسيق فقط؟

المعمارية. المحتوى والأسعار وقواعد العمل يجب أن تكون واعية باللغة والسوق على مستوى التخزين لا مترجمة عند العرض، والتخطيط من اليمين إلى اليسار مع طباعة عربية صحيحة متطلَّبٌ بنيوي لا ورقة أنماط. تعلّمت هذا ببناء تاجر كمنصّة عربية أولاً لا كقشرة مترجمة فوق منتج إنكليزي، ولهذا صرت أعامل البنية ثنائية اللغة كقرار تصميم يُتّخذ في البداية.

تطوير منصّات البرمجيات كخدمة — أخبرني بما لديك الآن.

ابدأ محادثة

كل الخدمات ←