اختيار بنية الحل لسوق خدمات الشحن

Agrafreight.com هي الخدمة الأولى في روسيا لحساب التكلفة عبر الإنترنت وطلب النقل الجوي ، والسيارات والحاويات ، والبضائع بجميع وسائل النقل ، بما في ذلك أسعار النقل من الباب إلى الباب.


الصورة

حول تاريخ مشروع Agorafreight يخبر مدير المشروع Reksoft (جزء من GC "Technoserv") ديمتري Dolgikh.


بدء التشغيل Agorafreight الروسي هو سوق لنقل البضائع الدولي ، وهو مصمم لحساب تكلفة خدمات نقل البضائع التي تقدمها شركات الشحن والناقلات. النظام عبارة عن رابط بين عميل النقل (العميل) وشركات النقل ووكلاء الشحن. يسمح لك النظام بتحديد المسار والشركات والخدمات مسبقًا ، بالإضافة إلى حساب تكلفة النقل.


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


أولاً ، كان علي اختيار قاعدة بيانات ، أو بالأحرى نظام إدارة البيانات. وقع الاختيار على MongoDB - وهي قاعدة بيانات موجهة للمستندات في NoSQL مع دعم للاستعلامات الجغرافية ، والبحث عن النص الكامل في 15 لغة ، مع بنية بيانات هرمية. MongoDB متاح مجانًا بموجب ترخيص GNU 3.0. يتم تحجيمه بشكل أفقي ويمكن استخدامه كمخزن للملفات مع موازنة التحميل وتكرار البيانات.
الايجابيات


  1. التسلسل الهرمي للبيانات - القدرة على تحسين المخطط وطلبات البيانات الهرمية (تعدد اللغات ، والتعريفات ، وما إلى ذلك).
  2. مخطط بيانات أقل مخططًا غير صلب - تغييرات رخيصة وسريعة على مخطط قاعدة البيانات ، والتي لا تتطلب عمليات ترحيل.
  3. قابلة للتطوير - إنها أرخص من قواعد البيانات العلائقية ، ولا تتطلب معالجة التعليمات البرمجية المصدر أو إعادة كتابة استعلامات قاعدة البيانات.
  4. دعم للاستعلامات الجغرافية والفهارس ، البحث عن النص الكامل.
  5. نظام مفتوح المصدر مفتوح المصدر.
  6. هناك فرصة لشراء الدعم المدفوع من مؤلفي MongoDB ، ودعم المؤسسات.
  7. يمكن استخدام MongoDB كتخزين ملفات مع موازنة التحميل وتكرار البيانات.
  8. مع MongoDB ، من الأسهل والأسرع أن يتم تطبيق النماذج والخدمات.

سلبيات
1. لا يوجد دعم لـ Join'ov ، ومع ذلك ، يتم حل هذه المشكلة عن طريق التسلسل الهرمي للبيانات أو MapReduce وظيفية (ولكن ليس بنسبة 100 ٪).


  1. لا توجد معاملات ، هناك atomicity على مستوى المستند ، يمكنك تنفيذ مضاهاة المعاملة.
  2. لم يتم تنفيذ الاتساق على مستوى قاعدة البيانات ، فمن الضروري القيام بذلك في شفرة المصدر للتطبيق.
  3. لا توجد مشغلات كما في قواعد البيانات الكلاسيكية ، ولكن في كثير من الأحيان لا يتم استخدام هذه الوظيفة.

الميزات


  1. لا يتطلب تطبيق MongoDB الإدارة في البداية وبعدها بقليل ، يلزم الضبط للتحجيم.
  2. هناك مزودو خدمات استضافة يستطيعون تقديم MongoDB في السحابة بالمقياس الصحيح ، ونادراً ما يتم عرض هذه الخدمات مع MySQL أو PostgreSQL.
  3. الرائدة بين مستودعات البيانات NoSQL في الوقت الراهن.
  4. يحتوي على أدوات لبناء استعلامات MapReduce ، والتي يمكن استخدامها لإنشاء تقارير معقدة ، ولكن ليس في الوقت الفعلي.
  5. تم حل أوجه القصور الحرجة في قاعدة البيانات هذه مع إصدار الإصدار الثالث.

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


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


الاختيار المعماري الثاني كان مكتبة ReactJS لتطبيق الواجهة الأمامية. إن شعبية التكنولوجيا والمجتمع الكبير المشكّل هو الذي جعل من الممكن اختيار ReactJS.


مزايا هذا الإطار:


  1. أحد أكثر أطر تطوير العملاء شيوعًا. لديها مجتمع كبير ، وهناك العديد من الأمثلة على استخدامه ، وثائق جيدة.
  2. هؤلاء المطورين لشركتنا الذين لديهم خبرة معه يتحدثون جيدًا عنه.
  3. أكثر مرونة من حيث التنمية بالمقارنة ، على سبيل المثال ، مع الزاوي.
  4. وهو يدعم ما يسمى Server Rendering ، والذي يسمح بفهرسة صفحات أي تطبيق بواسطة محركات البحث.
  5. مناسب للتطبيقات التي تحتوي على عدد كبير من الصفحات الديناميكية. لدينا العديد من هذه الصفحات (نماذج المدخلات لأنواع مختلفة من التعريفات والرسوم الإضافية والعمولات ؛ نماذج لحساب تكلفة النقل ، وما إلى ذلك)

نتيجة لذلك ، سمح ReactJS بتغيير أجزاء الواجهة الأمامية بمرونة وديناميكية على خلفية المتغيرات والتحسينات.


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


في الوقت الحاضر ، يحتوي النظام على عشرات الآلاف من التعريفات الحالية للنقل البحري والبري والجوي. تغطي جغرافية التغطية الصين وفيتنام وكوريا الجنوبية ودول الاتحاد الأوروبي وروسيا ، وتخطط للتوسع في دول أخرى. يعمل الآن العشرات من وكلاء الشحن من الصين والاتحاد الروسي مع النظام.


الصورة

Source: https://habr.com/ru/post/ar433202/


All Articles