ما أجزاء منصة التداول التي تستحق أن تُكتب بـ Rust، ومن ينتمي إلى فريق مخصّص خارجي لمحرك مطابقة، وكيف تتحقق من أن شركة ما شغّلت Rust في بيئة الإنتاج.
ابحث عن شركة بنى مهندسوها أنفسهم بـ Rust محرك مطابقة أو جزءًا آخر من مسار الأوامر، وما زالوا يشغّلونه في بيئة الإنتاج. وقبل أن توقّع، تعرّف إلى الأشخاص الذين سينضمون إلى فريقك. ويستحق Rust مكانه حيث يكلّف التأخير مالًا: محرك المطابقة، وفحوص المخاطر قبل التداول، وبوابات الاتصال بالبورصات، ومعالج بيانات السوق. أما الشاشات والتقارير وأدوات المكتب الخلفي فيمكن أن تبقى باللغات التي تستخدمها شركتك أصلًا.
الجواب المختصر: ضع في قائمتك المختصرة الشركات التي تستطيع أن تصف من البداية إلى النهاية نظامًا واحدًا بـ Rust تشغّله في الإنتاج، بما في ذلك ما تعطّل بعد الإطلاق. وأعطِ الشركات التي تصل إلى المرحلة الأخيرة تجربة مدفوعة على تدفق أوامرك المسجَّل أنت. واكتب في العقد أن الكود والاختبارات وبيانات إعادة التشغيل تبقى في حسابات شركتك. وإن كانت لديك منصة تعمل بلغة أخرى، فانقل إلى Rust مكوّنًا واحدًا في كل مرة، وقارن نتائجه بنتائج المكوّن القديم قبل أن تنتقل إليه.
لا تضع هذه المقالة ترتيبًا للشركات. فالشركة المتخصصة هي التي سبق لمهندسيها أنفسهم أن سلّموا نظام تداول مكتوبًا بـ Rust ويشغّلونه لصالح عميل. أما الشركة التي ستوظّف مهندسي Rust بعد أن توقّع أنت، فما تعرضه عليك في الحقيقة خطة توظيف.
كود التداول خاص في الغالب: يملكه العملاء عادةً ويُبقونه لديهم، ولذلك قد لا تجد لدى شركة قوية سوى القليل من كود التداول على GitHub. فاطلب بدلًا من ذلك وصفًا كاملًا من البداية إلى النهاية لنظام واحد في الإنتاج: ماذا يفعل، وأي أجزائه مكتوب بـ Rust، وكيف تُقاس سرعته، ومن يشغّله اليوم، وما الذي تعطّل بعد الإطلاق. وإن كانت اتفاقية سرية تُخفي اسم العميل، فاطلب من الشركة أن ترتّب لك مكالمة مع ذلك العميل.
ثم تحقّق من الأشخاص. اطلب أسماء المهندسين الذين سيعملون على نظامك وخبرتهم في Rust، وتحدّث إليهم قبل أن توقّع. وتتناول المقالة عن الفرق المخصّصة، المرتبطة أعلاه، الفحوص العامة: الكود العلني، وتجربة مدفوعة، ومراجعة يجريها مهندس مستقل.
الأجزاء الواقعة على مسار الأمر، حيث قد يغيّر توقفٌ لبضعة أجزاء من الثانية السعرَ الذي يحصل عليه العميل:
يناسب Rust هذه الأجزاء لأنه يحرّر الذاكرة من دون جامع قمامة. فبعض اللغات تستخدم جامع القمامة لهذه المهمة، وقد يوقف البرنامج مؤقتًا في لحظات يختارها هو. ويقول كتاب Rust (الدليل الرسمي للغة، الذي جرى الاطلاع عليه في 27 أكتوبر 2026) إن الملكية، أي مجموعة القواعد التي يقوم عليها ذلك، «تمكّن Rust من تقديم ضمانات أمان الذاكرة من دون الحاجة إلى جامع قمامة».
اللغة وحدها لا تجعل النظام سريعًا. فبرنامج Rust قد يتوقف مع ذلك ليطلب ذاكرة، أو لينتظر قفلًا يمسكه خيط آخر، أو لينتظر الشبكة. وتشرح المقالة عن تصميم محرك المطابقة كيف يُبعد الفريق هذه الأمور عن مسار الأوامر.
أما بقية المنصة فليس لها موعد نهائي يُقاس بأجزاء من الثانية: شاشات الويب والهاتف، وحسابات العملاء، والتقارير، والمكتب الخلفي، وأدوات الإدارة. ويمكن أن تبقى هذه باللغات التي يستخدمها مطوّروك أو مورّدوك أصلًا. وعلى الشركة التي تقترح إعادة كتابتها بـ Rust أن تشرح ما الذي ستكسبه أنت من ذلك.
عادةً لا، ليس دفعة واحدة. فالطريق الأكثر أمانًا هو نقل مكوّن واحد له حدود واضحة، مثل فحوص المخاطر أو معالج بيانات السوق، وترك الباقي كما هو.
يمكن أن يعمل المكوّن الجديد خدمةً مستقلة تتبادل الرسائل مع بقية النظام. ويمكن أيضًا بناؤه مكتبةً يستدعيها كود C أو C++ مباشرة. ويشرح Rustonomicon، وهو دليل مشروع Rust للكود غير الآمن والمنخفض المستوى، كيفية ذلك في قسم بعنوان «Calling Rust code from C».
قبل الانتقال، شغّل المكوّن الجديد إلى جانب القديم على تدفق الأوامر المسجَّل نفسه، وقارن كل نتيجة. فمحرك المطابقة الحتمي يعطي دائمًا النتيجة نفسها للأوامر نفسها بالتسلسل نفسه. وهذا يجعل المقارنة بسيطة: إذا كان المحركان يطبّقان القواعد نفسها، فأي اختلاف يشير إلى خطأ في أحدهما.
ثم انقل سوقًا واحدة أو مجموعة أدوات واحدة في كل مرة، وأبقِ المكوّن القديم جاهزًا لاستعادة الحركة.
يعمل الفريق المخصّص على نظامك وحده أشهرًا أو سنوات، ولا يتغير أعضاؤه إلا بموافقتك. ولمحرك مطابقة أو جزء آخر من مسار الأوامر، يضم عادةً:
ولشركتك دور في ذلك أيضًا. فشخص من جانبك يحدد قواعد التداول، مثل حجم وحدة السعر، وساعات التداول، والرسوم، وما يحدث عند توقف التداول، ويجيب عن أسئلة الفريق بشأنها من دون تأخير طويل.
قد يكون العاملون المستقلون مهندسين ممتازين، لكن الاستمرارية معهم أصعب. فالمتعاقد الفرد لا أحد لديه يراجع تغييراته في مسار الأوامر، وحين يغادر يغادر معه ما كان يعرفه عن نظامك. أما الشركة فتستطيع استبدال شخص والإبقاء على المعرفة داخل الفريق، ويمكن للعقد أن يُلزمها بذلك.
لا تستطيع الشركة تقدير حجم الفريق إلا بعد أن ترى قواعد التداول لديك وأسواقك وأحجامك، فاسألها كيف وصلت إلى الرقم الذي تقترحه.
تتناول المقالة عن الشركات المتخصصة في الأنظمة منخفضة زمن الاستجابة كيفية التحقق من أرقام السرعة. أما هذه الأسئلة فتخص Rust ومسار الأوامر:
يتحقق Rust من طريقة استخدام الذاكرة عند ترجمة الكود. وداخل كتلة موسومة بـ unsafe يستطيع الكود أن يفعل خمسة أشياء يرفضها المترجم في غير ذلك، مثل تتبّع مؤشر خام إلى الذاكرة. ويضيف كتاب Rust أن unsafe «لا يوقف borrow checker ولا يعطّل أيًّا من فحوص الأمان الأخرى في Rust». والجواب الجيد يحدد أين يقع الكود غير الآمن، ولماذا يلزم هناك، ومن راجعه.
وفي الاختبار، ينبغي أن يسمّي الفريق الأدوات التي يستخدمها. فأداة cargo-fuzz، التي يصفها كتاب Rust Fuzz Book بأنها «الأداة الموصى بها لاختبار الزغب لكود Rust»، تغذّي البرنامج بكميات كبيرة من المدخلات المولّدة لتجد الحالات التي تُسقطه. أما Loom، وهي مكتبة لاختبار الكود الذي يعمل على عدة خيوط، فإنها «تشغّل الاختبارات مرات كثيرة، مبدّلةً بين عمليات التنفيذ المتزامن الممكنة لكل اختبار». وبهذا تُكتشف الأخطاء التي لا تظهر إلا حين تتصادف الخيوط في ترتيب سيئ الحظ.
الـ crates هي حزم الكود المشترك في Rust. وتسجّل قاعدة RustSec Advisory Database نشرات أمنية عن الـ crates المنشورة على crates.io. وأداتها cargo-audit تفحص ملف Cargo.lock في المشروع، وهو الملف الذي يسرد الإصدار الدقيق لكل اعتمادية، «بحثًا عن crates فيها ثغرات أمنية». وينبغي للفريق الذي يعمل على مسار أوامر أن يستطيع إخبارك هل يجري هذا الفحص مع كل بناء.
يُصدر Rust نسخة مستقرة جديدة كل ستة أسابيع، ويقول كتاب Rust: «لا ينبغي أبدًا أن تخشى الترقية إلى نسخة جديدة من Rust المستقر». ومع ذلك يستطيع الفريق أن يُبقي كل عمليات البناء على نسخة واحدة يختارها. وتصف وثائق rustup، أداة تثبيت Rust، ملف toolchain للمشاريع التي تجد نفسها «مثبّتة على إصدار محدد من Rust» وتريد تسجيل ذلك في مستودعها. وفي مسار الأوامر لا ينبغي أن تتغير النسخة إلا عن قصد، وبعد نجاح الاختبارات.
اكتب فيه هذه النقاط:
amBrain، التي تنشر هذه المدونة، تصف نفسها في سطر واحد: «amBrain شركة هندسة برمجيات في يريفان، أرمينيا، تبني منصات تداول منخفضة زمن الاستجابة ومحركات مطابقة وأنظمة مزايدة فورية بـ Rust». وفي سطر آخر: «تبني amBrain بنية تحتية للتداول الخوارزمي: تنفيذ الأوامر، وبيانات السوق، وضوابط المخاطر قبل التداول».
تبني amBrain البرمجيات منذ عام 2019. وتصف فريقها بكلماتها: «فريق يصل إلى 40 شخصًا، نحو 75% منهم من كبار المهندسين». وتعمل بثلاث صيغ: تسليم كامل، أو فريق مخصّص، أو مهندسون مدمجون في فريقك. أما في الملكية فسطرها هو: «يحتفظ العميل بالملكية الكاملة للمنتج وللكود، باستثناء مكوّناتنا القابلة لإعادة الاستخدام».
هذه المقالة ليست دراسة حالة، ولا تصف أي عمل لعميل. ولا تقول ما الأنظمة التي بنتها amBrain بـ Rust ولا لمن، ولا تذكر أسعارًا أو جداول زمنية أو أحجام فرق لـ amBrain. وإن كانت amBrain في قائمتك المختصرة، فأعطها الأسئلة نفسها التي تعطيها لأي شركة أخرى.
أحضر بنيتك الحالية وسيناريو الفشل الذي يقلقك، وسنراجعه معًا خلال نصف ساعة.
احجز مكالمة