صراع المطورين وصاحب الشركة: هل نبني النظام من الصفر أم نعتمد على برمجيات مفتوحة المصدر وسيرفر خاص؟
مناقشة عملية لمعضلة Build vs Open Source في الشركات الناشئة: متى تبني نظامك بنفسك، ومتى تستخدم مشروعًا مفتوح المصدر على VPS، وكيف تحسب التكلفة الحقيقية والمخاطر والوقت.
«نحتاج النظام من الصفر.»
قالها المطور وكأن القرار محسوم.
صاحب الشركة نظر إلى تقدير المشروع أمامه:
مدة التطوير:
4 إلى 6 أشهر
Backend
Frontend
Authentication
Permissions
Dashboard
Notifications
File Storage
Reports
API
Backups
Testing
ثم سأل سؤالًا أبسط:
«كم جزءًا من هذه القائمة يميز شركتنا فعلًا عن أي شركة أخرى؟»
ساد الصمت للحظات.
هذه المعضلة تظهر في مشاريع ناشئة كثيرة.
فريق التطوير يريد نظامًا يملكه ويفهمه بالكامل.
وصاحب المشروع يريد إطلاق المنتج قبل أن تنتهي الميزانية.
وبين الطرفين يوجد خيار ثالث غالبًا لا يحصل على ما يكفي من النقاش:
استخدام برمجيات Open Source ناضجة على Server خاصة، ثم بناء الجزء الذي يميز المشروع فقط.
«هل Open Source أفضل من البرمجة؟» ليس سؤالًا مفيدًا. السؤال الأفضل: «أي أجزاء من مشروعنا تستحق أن ندفع تكلفة بنائها وصيانتها بأنفسنا؟»
الاثنين، 10 صباحًا — الاجتماع الذي بدأ الخلاف
الشركة الناشئة في هذا المثال تريد بناء منصة لإدارة أعمالها وعملائها.
تحتاج:
حسابات مستخدمين
صلاحيات
إدارة ملفات
إشعارات
نظام دعم
Workflows
لوحة إدارة
تقارير
نسخ احتياطية
واجهة خاصة بمنتج الشركة
المطور ينظر إلى القائمة ويقول:
«إذا بنيناها كلها بأنفسنا، سيكون كل شيء تحت سيطرتنا.»
وهذه حجة صحيحة.
لكن صاحب الشركة يرى شيئًا آخر.
كل أسبوع يقضيه الفريق في بناء:
Password Reset
File Browser
User Roles
Notification Center
هو أسبوع لا يقضيه في بناء الشيء الذي سيدفع العميل مقابله.
حجة المطور: «النظام الجاهز سيقيدنا لاحقًا»
المطور ليس مخطئًا.
اختيار برنامج جاهز فقط لأنه مجاني قد ينتج مشكلة كبيرة مستقبلًا.
قد تكتشف بعد سنة أن:
Data Model لا يناسب مشروعك
API محدودة
التخصيص صعب
Upgrade تكسر تعديلاتك
Plugin مهمة توقفت
License لا تناسب استخدامك
البرنامج مصمم لحالة مختلفة تمامًا
ولهذا عبارة:
«مفتوح المصدر = استخدمه فورًا»
ليست قاعدة جيدة.
حجة صاحب الشركة: «لا أريد دفع المال لإعادة اختراع شيء موجود»
هو أيضًا ليس مخطئًا.
إذا احتاج المشروع نظامًا لحفظ الملفات، هل أول ميزة تنافسية للشركة هي بناء File Storage System؟
إذا احتاج Automation، هل يجب بناء Workflow Engine قبل بيع أول خدمة؟
إذا احتاج Monitoring، هل من المنطقي كتابة منصة Monitoring من الصفر؟
هناك وظائف أصبحت أقرب إلى البنية التحتية العامة:
Authentication
File Storage
Monitoring
Backups
Reverse Proxy
Automation
Analytics
Support Tools
قد تحتاج تخصيصًا، لكن ليس بالضرورة أن تحتاج إعادة اختراعها.
هنا يجب تقسيم النظام إلى قسمين
ارسم خطًا في منتصف المشروع.
على الجهة الأولى:
الشيء الذي يجعل العميل يختارك أنت.
وعلى الجهة الثانية:
الأشياء التي يحتاجها النظام حتى يعمل.
إذا كانت شركتك تبيع منصة تحليل أسعار ذكية، فإن خوارزمية التحليل وطريقة عرض النتائج قد تكون Core Product.
لكن:
إدارة Passwords
رفع الملفات
Dashboard للمراقبة
Reverse Proxy
نسخ احتياطية
ليست بالضرورة سبب شراء العميل للمنتج.
ما يستحق البناء من الصفر؟
عادة يبدأ الترشيح الجيد من سؤال:
إذا حذفنا هذه الميزة، هل نفقد شيئًا يميز المنتج في السوق؟
إذا كانت الإجابة نعم، فقد تكون مرشحة قوية للبناء الداخلي.
مثل:
منطق تسعير خاص
Algorithm تميز الخدمة
Workflow تجارية فريدة
واجهة عميل مرتبطة مباشرة بنموذج العمل
تكاملات خاصة لا يوفرها السوق
قواعد تشغيل تمثل خبرة الشركة
وما الذي يمكن أن يبدأ من Open Source؟
الأجزاء العامة التي توجد لها مشاريع ناضجة تستحق الدراسة قبل كتابة أول سطر Code.
مثلًا قد توجد حلول جاهزة لفئات مثل:
Private Cloud
Photo Management
Automation
Monitoring
Password Management
Help Desk
Analytics
Document Management
Git Hosting
Project Management
المقصود ليس تثبيت عشرة تطبيقات لمجرد أنها مجانية.
المقصود أن تسأل:
هل هناك مشروع ناضج يحل 80% من هذه المشكلة الآن؟
لكن كلمة «مجاني» مضللة
Open Source لا تعني أن التكلفة صفر.
قد لا تدفع License شهرية، لكنك ستدفع بصورة أخرى:
VPS
Storage
Backups
وقت الإدارة
Updates
Monitoring
Security
Migration
Troubleshooting
لذلك المقارنة الصحيحة ليست:
$0
مقابل
$10,000
بل:
تكلفة امتلاك Open Source وتشغيلها
مقابل
تكلفة بناء وصيانة النظام داخليًا
مقابل
تكلفة SaaS جاهزة
لنفترض أن الفريق يريد بناء Workflow System
المشروع يحتاج:
Webhooks
Scheduled Jobs
API Integrations
Retries
Execution Logs
Credentials
Conditional Logic
الخيار الأول:
بناء Engine خاصة.
الخيار الثاني:
تشغيل منصة Automation مفتوحة المصدر مناسبة على VPS وربطها بالنظام.
في الخيار الأول أنت لا تبني Workflow واحدة فقط.
أنت تبني أيضًا:
Editor
Execution Engine
Job Scheduling
Retry Logic
Logs
Credential Storage
Error Handling
Versioning
Monitoring
وهنا تتحول «ميزة صغيرة» إلى مشروع داخل المشروع.
الحساب الذي غير اتجاه الاجتماع
دعنا نستخدم أرقامًا افتراضية للتوضيح فقط.
لنفترض أن بناء مجموعة من الوظائف العامة سيحتاج:
300 ساعة تطوير
وأن التكلفة الفعلية لساعة التطوير على الشركة بعد احتساب الراتب والمصاريف هي:
$40
إذن:
300 × $40
=
$12,000
وهذه تكلفة Version 1 فقط.
لم نحسب:
Bug fixes
Security patches
Future changes
Testing
Documentation
Maintenance
إذا أمكن لمشروع Open Source ناضج أن يغطي معظم هذه الوظائف، قد تستطيع الشركة توجيه جزء كبير من تلك الميزانية إلى منتجها الأساسي.
$12,000 مثال حسابي فقط. قد يكون بناء نظامك أرخص أو أغلى بكثير. الفكرة أن وقت المطور نفسه تكلفة، حتى لو لم ترَ Invoice منفصلة باسم «تكلفة البرمجة».
لكن ماذا لو احتجنا تعديل Open Source بنسبة 40%؟
هنا تتغير المعادلة.
إذا كان التطبيق الجاهز يحل 40% فقط من مشكلتك ويجبر الفريق على Fighting Architecture في الـ60% الباقية، فقد يصبح البناء من الصفر أنظف وأقل تكلفة مستقبلًا.
هذه هي النقطة التي يفشل عندها بعض المشاريع:
يختارون Software لأنها جاهزة، ثم يقضون سنتين في إجبارها على أن تصبح منتجًا لم تُصمم لتكونه.
قاعدة 80/20 مفيدة كبداية، لا كقانون
إذا كان مشروع مفتوح المصدر يغطي:
80% أو أكثر من الاحتياج
ويمكن بناء 20% المتبقية
عبر API أو Plugins أو Integration نظيفة
فهو يستحق تجربة Proof of Concept.
أما إذا كانت كل ميزة تحتاج تعديل Core المشروع، فهذه إشارة تحذير.
التعديل على Core قد يتحول إلى دين تقني
لنفترض أن التطبيق أصدر Update أمنية.
أنت تريد التحديث.
لكن فريقك عدل عشرات الملفات الأساسية.
الآن كل Upgrade تصبح مشروع Merge جديد.
لهذا الأفضل، عندما يكون ذلك ممكنًا، التخصيص عبر:
API
Webhooks
Plugins
Extensions
Themes
External Services
بدل تحويل Fork داخلي إلى نسخة منفصلة تمامًا عن المشروع الأصلي.
«لدينا الكود» لا تعني بالضرورة «نملك السيطرة»
شركة قد تملك مليون سطر Code خاص بها، لكن لا يوجد فيها إلا مطور واحد يفهم النظام.
هل هذه سيطرة؟
وفي المقابل، مشروع Open Source موثق، وله Community، وAPI واضحة، ويمكن نقله بين Servers، قد يكون أقل اعتمادًا على شخص واحد.
السيطرة الحقيقية تتضمن:
الوصول إلى البيانات
إمكانية تصديرها
معرفة طريقة التشغيل
Backups قابلة للاستعادة
Documentation
إمكانية نقل النظام
عدم الاعتماد على شخص واحد
وماذا يعني تشغيل Open Source على Server خاصة؟
بدل الاشتراك في خدمة SaaS لكل وظيفة، تستطيع بعض الشركات تشغيل تطبيقات مناسبة على VPS أو Server تديرها بنفسها.
هذا يمكن أن يعطيك تحكمًا أكبر في:
Data location
Backups
Domains
Integrations
Access
Upgrade timing
Resource allocation
لكنك تحصل في المقابل على مسؤولية أكبر.
الحرية تأتي ومعها مسؤولية
عندما تستضيف النظام بنفسك، لا يوجد Vendor يتحمل عنك كل شيء.
أنت تحتاج خطة لـ:
Security Updates
Firewall
HTTPS
Backups
Monitoring
Access Control
Recovery
Database maintenance
إذا لم يكن لدى المشروع شخص يستطيع إدارة ذلك، قد تكون SaaS أرخص من Self-Hosting حتى لو بدت رسومها الشهرية أعلى.
السيرفر الخاص ليس بالضرورة Server في مكتبك
في هذا السياق يمكن أن تكون:
VPS
Cloud VM
Dedicated Server
تحت إدارتك.
الفكرة ليست مكان الحديد.
الفكرة أن Application Stack وبياناتها وإعداداتها تحت سيطرة المشروع بدل الاعتماد الكامل على SaaS مغلقة.
هناك سؤال أهم من سعر VPS
صاحب الشركة قد يرى:
VPS:
$30 / month
مقابل:
Several SaaS subscriptions:
$300 / month
ويعتقد أن القرار انتهى.
لكن يجب إضافة:
كم ساعة إدارة شهريًا؟
من سيعالج Failure؟
كم تكلفة Backup Storage؟
هل نحتاج High Availability؟
هل هناك Compliance Requirements؟
كم تكلفة Migration لاحقًا؟
هذا يسمى النظر إلى:
Total Cost of Ownership — TCO.
مثال لشركة من خمسة موظفين
لنفترض أن الشركة تحتاج مجموعة أدوات داخلية.
السيناريو SaaS:
Project tool $50
Automation $100
File platform $75
Monitoring $30
Other tools $45
---------------------
Total $300/month
سنويًا:
$3,600
قد تتمكن الشركة من تشغيل بدائل مناسبة لبعض هذه الوظائف على بنية أقل تكلفة مباشرة.
لكن إذا كانت تحتاج عشر ساعات إدارة تقنية شهريًا فقط للحفاظ عليها، يجب حساب هذه الساعات أيضًا.
قد يظل Self-Hosting أوفر.
وقد لا يكون.
القرار يجب أن يأتي من الأرقام لا من شعار «Open Source مجانية».
متى تكون SaaS هي الاختيار الأذكى؟
إذا كانت الوظيفة ليست مهمة استراتيجيًا، وتكلفة الاشتراك صغيرة، والخدمة موثوقة، ولا تريد تحمل تشغيلها، فإن SaaS قد تكون أفضل قرار اقتصادي.
مثال التفكير:
تكلفة الخدمة:
$20/month
تكلفة إدارة بديل Self-Hosted:
3 ساعات/month
إذا كانت ساعة الفريق أغلى بكثير من الاشتراك، فما الذي وفرته فعليًا؟
ومتى يكون Open Source + VPS خيارًا قويًا؟
عندما تجمع عدة عوامل:
الاشتراكات تتضخم مع عدد المستخدمين
تحتاج Integrations خاصة
تريد تحكمًا أكبر بالبيانات
المشروع قابل للتشغيل والصيانة
يوجد API جيدة
الخروج من المنصة ممكن
لديك قدرة تقنية لإدارة Server
ومتى نبني من الصفر بلا تردد؟
عندما تكون الوظيفة نفسها جزءًا من القيمة التجارية التي تبيعها.
إذا كان العميل يدفع لك لأن نظامك يفعل شيئًا بطريقة مختلفة عن السوق، فلا تجعل قلب منتجك مجرد طبقة رقيقة فوق Software لا تستطيع التحكم في اتجاهها.
قد تستخدم Open Source في البنية المحيطة، بينما يبقى Core Product خاصًا بك.
هذا ما أنهى الخلاف: النظام ليس قرارًا واحدًا
بدل:
نبني كل شيء
أو
نستخدم Open Source لكل شيء
أصبح التصميم:
Core Business Logic
→ Custom Development
Authentication
→ Framework / proven component
Automation
→ Existing platform
Monitoring
→ Existing platform
Object / File Storage
→ Existing solution
Backups
→ Existing tooling
Special customer workflow
→ Custom Development
Integration between everything
→ APIs + Webhooks
هنا أصبح المطور يحتفظ بالسيطرة على الجزء المهم.
وصاحب المشروع لا يدفع مقابل إعادة اختراع كل طبقة تقنية.
لكن قبل تثبيت أي مشروع Open Source، افحص الرخصة
وجود Source Code على GitHub لا يعني أن كل استخدام مسموح بلا شروط.
هناك Licenses مختلفة مثل:
MIT
Apache-2.0
GPL
AGPL
وغيرها
ولكل منها شروط مختلفة.
خصوصًا إذا كنت:
تعدل البرنامج
تعيد توزيعه
تدمجه داخل منتج
تقدمه كخدمة تجارية
راجع الترخيص الفعلي للمشروع، وإذا كان الاستخدام التجاري مهمًا قانونيًا للشركة فاستعن بمختص عند الحاجة.
افحص المشروع نفسه، لا عدد Stars فقط
قبل الاعتماد على مشروع في Production اسأل:
متى كان آخر Release؟
هل Security Issues تعالج؟
هل Documentation جيدة؟
هل يوجد Backup/Restore واضح؟
هل توجد Migration Path؟
هل API مستقرة؟
هل المشروع يعتمد على Maintainer واحد؟
هل Export للبيانات ممكن؟
هل Docker Image رسمية أو موثوقة؟
هل Upgrade موثقة؟
مشروع مشهور ليس بالضرورة مناسبًا لشركتك.
أصعب سؤال: ماذا يحدث لو توقف المشروع غدًا؟
هذا السؤال يجب طرحه قبل الاعتماد على أي Dependency كبيرة.
إذا توقف التطوير:
هل نستطيع الاستمرار بالإصدار الحالي؟
هل نستطيع Fork المشروع؟
هل البيانات قابلة للتصدير؟
هل نستطيع Migration إلى بديل؟
هل لدينا Documentation لإعدادنا الحالي؟
نفس السؤال ينطبق أيضًا على SaaS.
ماذا لو:
رفعت الأسعار 300%؟
أغلقت المنتج؟
حذفت Feature تعتمد عليها؟
أوقفت API؟
الـVendor Lock-in لا يحدث فقط مع البرامج المغلقة
يمكنك أن تحبس نفسك داخل Open Source أيضًا.
إذا بنيت مئات Integrations حول Database الداخلية لتطبيق معين، قد يصبح الخروج منه صعبًا جدًا.
لذلك استخدم:
APIs واضحة
Data formats مفتوحة
Backups قابلة للقراءة
طبقات Integration منفصلة
قدر الإمكان.
Proof of Concept قبل القرار الكبير
بدل عقد اجتماعات لمدة شهر حول:
«هل هذه المنصة ستناسبنا؟»
خصص أيامًا قليلة لبناء PoC.
اختبر:
Install
API
Authentication
Backup
Restore
Upgrade
Customization
Performance
Integration
إذا فشل المشروع في PoC بسيطة، اكتشفت ذلك قبل أن تبني شركتك حوله.
مصفوفة القرار التي يستطيع صاحب المشروع والمطور استخدامها معًا
| السؤال | يميل إلى Build | يميل إلى Open Source |
|---|---|---|
| هل الوظيفة تميز المنتج؟ | نعم جدًا | لا، وظيفة عامة |
| هل يوجد مشروع ناضج يغطي الاحتياج؟ | لا | نعم بدرجة كبيرة |
| هل نحتاج تعديل Core باستمرار؟ | نعم | لا، API/Plugins تكفي |
| هل لدينا وقت تطوير؟ | متوفر | نحتاج إطلاقًا أسرع |
| هل لدينا قدرة تشغيل Servers؟ | غير مؤثر كثيرًا | مهم للـSelf-Hosting |
| هل البيانات حساسة أو نحتاج تحكمًا خاصًا؟ | قد يفيد | Self-Hosting قد يفيد أيضًا |
ماذا فعلت الشركة في النهاية؟
لم تنتصر وجهة نظر المطور.
ولم تنتصر وجهة نظر صاحب الشركة.
تم حذف السؤال الأصلي بالكامل.
بدل:
«نبني أم نستخدم Open Source؟»
أصبح السؤال لكل Component:
هل هذا الجزء Core Business؟
هل توجد أداة ناضجة له؟
كم تكلفة بنائه؟
كم تكلفة تشغيل البديل؟
كم تكلفة الخروج منه مستقبلًا؟
ما المخاطر؟
هل نستطيع استبداله لاحقًا؟
ثم بني الفريق فقط الأجزاء التي تستحق فعلًا أن تكون ملكًا فكريًا وتشغيليًا خاصًا بالمشروع.
النتيجة الأهم ليست توفير المال
التوفير مهم.
لكن الشركة الناشئة لديها مورد أخطر من المال:
الوقت.
إذا كان لديك ستة أشهر قبل أن تنفد الميزانية، وقضيت أربعة منها في بناء Infrastructure لا يراها العميل، فقد تصل إلى منتج ممتاز تقنيًا بعد فوات الفرصة التجارية.
وفي المقابل، إطلاق منتج مبني بالكامل على أدوات لا تستطيع السيطرة عليها قد يصنع مشكلة مؤجلة.
الموازنة هي الهدف.
لو بدأ المشروع اليوم
الخطة الأكثر عقلانية لكثير من الشركات الناشئة ستكون:
استخدم مكونات ناضجة لما هو Commodity
ابنِ ما يميز المنتج
اربط المكونات عبر API وWebhooks
احتفظ ببيانات قابلة للتصدير
وثق البنية
اختبر Backups والاستعادة
راقب Security Updates
وأعد تقييم القرار مع نمو الشركة
فما كان قرارًا ممتازًا لشركة من ثلاثة أشخاص قد لا يكون أفضل Architecture عندما يصبح لديها خمسون موظفًا وآلاف العملاء.
وإذا اخترت Self-Hosting؟
ابدأ ببنية تستطيع فهمها وإدارتها.
لا تجمع عشرين Container في VPS فقط لأن تشغيلها ممكن.
احسب:
RAM
CPU
Storage
Backups
Traffic
Database
Monitoring
Security
Growth
ثم اختر Server بناءً على الحمل الفعلي.
إذا قررت تشغيل أدوات Open Source أو أجزاء من بنية مشروعك على Server تحت إدارتك، يمكنك الاطلاع على باقات VPS Linux في روافد واختيار الموارد حسب التطبيقات التي ستشغلها بدل البدء بمواصفات عشوائية.
في النهاية، أفضل Code للشركة الناشئة ليس دائمًا الـCode الذي كتبته بنفسها.
وأفضل Open Source ليست التي وفرت أكبر مبلغ اليوم.
الأفضل هو القرار الذي يسمح للفريق بتركيز وقته وماله على الشيء الذي سيجعل العميل يختار المشروع أصلًا.
قررت تشغيل جزء من مشروعك على بنية تحت إدارتك؟
إذا كان خيارك هو تشغيل أدوات Open Source أو خدمات مشروعك على VPS، ابدأ بحساب التطبيقات وRAM وCPU والتخزين والنسخ الاحتياطية، ثم اختر الموارد المناسبة بدل شراء سيرفر أكبر من حاجتك أو أصغر منها.