نجاح شركة ناشئة باستخدام C++: كيف ساعدت لغة المستوى المنخفض شركة NimbusData على غزو سوق معالجة البيانات
في عالم الشركات الناشئة، من الشائع اعتبار سرعة الوصول إلى السوق والمرونة من الأولويات الرئيسية. تهيمن لغات Python وJavaScript وRuby على معظم قصص النجاح. ومع ذلك، هناك قطاعات تأتي فيها الأداء والتحكم في الموارد في المقدمة. في هذه الفئة بالتحديد، وُلدت شركة NimbusData الناشئة، التي راهنت على لغة C++ وفازت بعقد ضخم مع عملاق مالي.
المشكلة: السرعة هي كل شيء
كانت شركة NimbusData تطور منصة لتحليل بيانات السوق في الوقت الفعلي. كان العملاء بحاجة إلى معالجة ملايين الأحداث في الثانية مع تأخير لا يتجاوز 50 ميكروثانية. أظهر الإصدار الأول بلغة Go أداءً مقبولاً، لكنه كان غير مستقر تحت الأحمال القصوى. أعاد الفريق كتابة نواة النظام بلغة C++.
- تأخير بالميكروثانية: سمحت C++ بالتحكم في ذاكرة التخزين المؤقت للمعالج وتجنب جمع القمامة (Garbage Collection).
- التحكم في الذاكرة: أدت إدارة الذاكرة اليدوية إلى استبعاد فترات التوقف غير المتوقعة الناتجة عن GC.
- الوصول منخفض المستوى: أعطى العمل المباشر مع مآخذ الشبكة والمخازن المؤقتة زيادة في الأداء بمقدار 3 أضعاف مقارنة بلغة Go.
القرارات المعمارية باستخدام C++
المكون الرئيسي هو حلقة الأحداث (event-loop) الخاصة بهم والمبنية على epoll (لينكس) وقوائم انتظار خالية من القفل (lock-free queues). استخدم الفريق بنشاط:
- RAII (اكتساب الموارد هو التهيئة) للعمل الآمن مع الموارد.
- القوالب (Templates) لإنشاء خوارزميات عامة دون فقدان السرعة.
- تعليمات SIMD (من خلال دوال المترجم الداخلية) لتسريع تحليل البروتوكولات الثنائية.
«لم نبدأ في اختراع العجلة من جديد. استخدمنا معيار C++17 الحديث، ومكتبات folly من فيسبوك و abseil من جوجل. الكود الأساسي حوالي 80,000 سطر، لكن هذا أعطانا تفوقًا بعشرة أضعاف على المنافسين»، كما يقول المدير التقني لشركة NimbusData.
النتيجة: عقد بملايين الدولارات
بعد تطبيق حل C++، اجتازت الشركة الناشئة اختبارات الإجهاد لصندوق تحوط كبير. عالج النظام بشكل مستقر 2.5 مليون معاملة في الثانية على خادم واحد (Intel Xeon 24 نواة). في النهاية، حصلت NimbusData على استثمارات من الفئة A (12 مليون دولار) وعقد طويل الأجل لصيانة البنية التحتية للتداول.
دروس للشركات الناشئة
قصة NimbusData ليست دعوة لكتابة كل شيء بلغة C++. إنها مثال على كيف يمكن للاختيار الصحيح للأداة المناسبة للمهمة أن يحدد مصير العمل. إذا كان منتجك يصطدم بالقيود المادية، فلا تخف من استخدام C++. الأهم هو العثور على فريق خبير. في شركة NimbusData الناشئة، كان هناك فقط مطوران كبيران (Senior) بلغة C++، لكن كفاءتهما أتت بثمارها أضعافًا مضاعفة.
لأولئك الذين يريدون تكرار النجاح: ابدأوا بتحليل الأداء (profiling)، وحددوا نقاط الضعف، وأعيدوا كتابتها فقط. لغة C++ قوية ولكنها تتطلب الانضباط. في أيدي المحترفين، تتحول إلى محرك صاروخي للشركة الناشئة.