Uber Tech Stack وهندسة البرامج - كيف تم إنشاء Uber؟
نشرت: 2022-01-17أصبح اسم أوبر اسمًا مألوفًا. تتيح المنصة المذهلة للمستخدمين حجز خدمة الكابينة في أربع خطوات بسيطة فقط. يضمن تطبيق أوبر خدمة سريعة بالإضافة إلى الراحة المثلى ، فلا عجب أنه انتشر بشكل كبير.
هل تعلم أن لدى أوبر 98 مليون مستخدم نشط شهريًا؟ أيضًا ، حققت الشركة إيرادات بقيمة 11.1 مليار دولار في عام 2020؟ وضعت أوبر مثالًا كلاسيكيًا للشركات الناشئة وخدمات سيارات الأجرة الحالية. تهدف كل مؤسسة إلى تكرار نجاح أوبر من خلال تقديم خدمات استدعاء سيارات أجرة سريعة ومريحة.
إذا كنت منزعجًا أيضًا من النجاح الهائل الذي حققته أوبر ، فهذه المقالة مناسبة لك. هنا ، سنناقش حزمة Uber الفنية وبنية البرامج ، وسيمنحك هذا فهمًا أفضل للنظام الأساسي ويساعدك على إنشاء تطبيق خدمات سيارات الأجرة الخاص بك من البداية. لذلك دعونا نبدأ.
كيف يمكنني إنشاء تطبيق في الوقت الفعلي مثل Uber؟
لإنشاء تطبيق في الوقت الفعلي مثل Uber ، يجب عليك أولاً فهم المكونات المختلفة له ، وهي كالتالي:
تطبيق الركاب
إذا كنت قد استخدمت تطبيق أوبر من قبل ، فسوف تتعرف بسهولة على وظائف تطبيق الركاب. يحتوي هذا المكون من التطبيق على جميع الميزات التي يطلبها المستخدمون لحجز سيارة أجرة ، مثل اختيار المشوار ، وحاسبة الأجرة ، والمدفوعات عبر الإنترنت ، وتتبع نظام تحديد المواقع العالمي (GPS) ، إلخ.
تطبيق السائق
يتم استخدام تطبيق السائق من قبل سائقي سيارات الأجرة الذين يعرضون طلبات سيارات الأجرة الجديدة من الركاب. باستخدام هذه اللوحة ، يمكن للسائقين إما قبول طلبات الركوب أو رفضها والتحقق من موقع الراكب الدقيق باستخدام الخريطة المدمجة.
السوق
يربط السوق بين التطبيقين - تطبيق Passenger وتطبيق Driver. يقوم بتنفيذ أكثر المهام تعقيدًا التي تتضمن مطابقة الركاب مع السائقين والتعامل مع المدفوعات.
لذلك ، إذا كنت ترغب في إنشاء تطبيق مثل Uber ، فستحتاج إلى ثلاث لوحات مختلفة. ستمكن اللوحة الأولى الركاب من حجز سيارة أجرة ، وستسمح اللوحة الثانية للسائقين بقبول طلبات الركوب. وأخيرًا ، ستتلقى لجنة ثالثة الطلبات من أول اثنين وتدير جميع العمليات عبر الإنترنت.
كيف تصنع أوبر القادم؟
أوبر هي خدمة ناجحة للغاية لاستدعاء سيارات الأجرة وتوفر الراحة المطلقة للركاب. قد يتطلب تطوير تطبيق مثل Uber مبلغًا كبيرًا من المال وفريقًا مختصًا لتطوير التطبيقات.
بصرف النظر عن ذلك ، هناك بعض الأشياء الأخرى التي يجب مراعاتها أثناء تطوير تطبيق مثل Uber.
تحقق من منافسيك.
إنها لفكرة رائعة أن تبحث عن التطبيقات التي تحاول حاليًا حل نفس المشكلة التي تسعى إلى معالجتها باستخدام تطبيقك. سيساعدك النظر إلى هذه التطبيقات في تكوين فكرة عن ميزاتها ووظائفها بالإضافة إلى الجمهور المستهدف.
بالإضافة إلى ذلك ، ستساعدك نظرة شاملة على المشهد التنافسي على فهم كيفية عمل منافسيك. على سبيل المثال ، سيمكنك التحقق من وسائل التواصل الاجتماعي الخاصة بهم من جمع رؤى حول استراتيجية التسويق وتطور المنتجات وتقييمات رضا العملاء. كل هذا سيقطع شوطًا طويلاً في مساعدتك على إطلاق تطبيق ناجح.
تعرف على المستخدمين المحتملين لديك
قبل الانتقال إلى تطوير التطبيق ، تحتاج إلى معرفة من سيستخدم تطبيقك. فقط إذا كنت تعرف جمهورك المستهدف ، فستتمكن من التواصل معهم بشكل صحيح.
يمكنك جمع جميع البيانات الديموغرافية للمستخدمين المحتملين ، مثل العمر والموقع والجنس والسلوكيات والتفضيلات وما إلى ذلك. بمجرد الانتهاء من ذلك ، يمكنك مناقشة فكرة تطبيقك مع الأشخاص الذين تفكر فيهم جيدًا.
استمر في التركيز على تجربة المستخدم.
تعد تجربة المستخدم أحد الجوانب الرئيسية للتطبيق الناجح. يريد الأشخاص استخدام التطبيقات التي توفر واجهة مستخدم وتجربة مستخدم بسيطة ولكنها بديهية. توفر واجهة المستخدم المذهلة تجربة تنقل سلسة ، وتضمن UX بديهية سهولة الاستخدام.
يؤدي توفير تجربة مستخدم جيدة إلى اكتساب مستخدم أفضل وتنزيلات أكبر.
اختبر مع MVP
الحد الأدنى من المنتج القابل للتطبيق (MVP) هو الإصدار الأساسي الأول للمنتج الذي يدعم الحد الأدنى من الميزات المهمة. يُنصح بإنشاء MVP قبل تطوير تطبيق كامل لأنه يتيح وقتًا أسرع للتسويق ، ويجذب المتبنين الأوائل ، ويحقق توافق المنتج مع السوق منذ وقت مبكر.
بمجرد إصدار MVP للمستخدمين ، يتم الحصول على ملاحظاتهم الأولية. بناءً على هذه التعليقات ، يمكنك تكرار الأخطاء وإصلاحها وإدخال ميزات جديدة توفر لمنتجك ميزة تنافسية.
كيف يعمل تطبيق أوبر تقنيًا؟

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

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

في عام 2014 ، اعتمدت أوبر بنية الخدمات المصغرة لضمان سرعة وأداء أفضل. بشكل أساسي ، تتضمن هذه البنية مجموعة من الخدمات التي تستهدف وظائف بعضها البعض. وبالتالي ، يمكن لفريق التطوير بسهولة نشر رمز جديد بشكل مستقل مع بنية الخدمات المصغرة ، مما يضمن توسيع نطاق النظام بالكامل.
DOMA (هندسة النظام ذات المجال الموجه)
على الرغم من أن بنية الخدمات المصغرة كانت ترقية ضخمة للهندسة المتجانسة ، إلا أن فريق التطوير في أوبر لم يتوقف عند هذا الحد. لقد تبنوا نهجًا جديدًا يسمى DOMA- Domain-Oriented System Architecture مع مرور الوقت.
وفقًا لهذا النهج ، يوجه المطورون تصميمهم حول مجموعات الخدمات المصغرة ذات الصلة. وتسمى هذه المجموعات المجالات. علاوة على ذلك ، يتم تصنيف المجالات أيضًا في مجموعات مختلفة تسمى الطبقات. تحدد الطبقة المحددة التي ينتمي إليها كل مجال التبعيات التي يمكن أن تتخذها الخدمات المصغرة داخل هذا المجال. هذا يسمى تصميم الطبقة.
يقوم المطورون بعد ذلك بجعل كل مجال مستقلاً عن الآخرين باستخدام Gateway API. وبالتالي ، فإن كل مجال له منطقه الخاص ولا يرتبط بالمجالات الأخرى داخل نفس الطبقة.

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


تتضمن Base عناصر تطبيق Uber المصممة مسبقًا ، مثل الألوان والشبكات والطباعة والقوائم والأزرار والأيقونات. لقد مكّن إطار العمل فريق التصميم من إنشاء تصميمات بوتيرة أسرع مع الحفاظ على معايير واتساق UI / UX عالية.
ما هي المكدس التكنولوجي وراء تطبيق توصيل الطعام أوبر؟
في عام 2014 ، تضمنت الواجهة الخلفية لـ Uber لغات مثل Python و Mongo و MySQL. من ناحية أخرى ، استخدم نظام الإرسال Node.js و Redis ، بينما تم تشغيل تطبيقات الأجهزة المحمولة بواسطة Java و Objective-C. ومع ذلك ، مع تطور المتطلبات ، قام المطورون بتغيير جميع مكونات النظام الأساسي تقريبًا.
Marketplace Technologies Stack
يعد سوق Uber جانبًا مهمًا يدير جميع تدفق البيانات وتحليلات البيانات. وتشمل مجموعة التقنيات المستخدمة لبناء هذا السوق لغات مثل Python و Go و Java و Node. الآن دعونا نلقي نظرة على تقنيات السوق هذه بالتفصيل:
محرك تنفيذ الرحلة
نظرًا لأن محرك تنفيذ الرحلة هو جزء لا يتجزأ من السوق ، فقد تمت كتابته في الأصل في Node.js ، والتي كانت مفضلة لمعالجتها غير المتزامنة والبسيطة وذات الخيط الواحد. كما أتاح Node.js لفريق أوبر إدارة كميات كبيرة من الاتصالات المتزامنة. ومع ذلك ، الآن ، تنشئ الشركة خدمات جديدة في Go ، والتي تشتهر بكفاءتها وتزامنها وعملياتها الآمنة.
واجهة برمجة تطبيقات المواجهة
توجه واجهة برمجة التطبيقات الأمامية الطلبات من الأجهزة المحمولة للسائق والركاب إلى واجهات برمجة التطبيقات والخدمات الأخرى. هذا مكتوب في Node.js ، باستثناء الحافة. يستخدم NGINX للواجهة الأمامية ويقوم بإنهاء SSL وبعض المصادقة.
اتصال في الوقت الحقيقي
لدعم متطلبات التوفر الأعلى بسلاسة ، يجب أن يتلقى مكدس السوق المعلومات في الوقت الفعلي. وبالتالي ، يستخدم المطورون Ringpop ، وهي مكتبة لإنشاء أنظمة توزيع تعاونية. بسبب هذه المكتبة ، يحصل المطورون على اتصال متاح للغاية مع قواعد البيانات الموزعة مثل Riak و DynamoDB.
منطق المطابقة
تتم كتابة خوارزمية المطابقة ، أي النظام الذي يدير التنبيهات من السائقين والركاب في الوقت الفعلي ثم يطابقها ، في Go و Node.js. Riak هي قاعدة البيانات الموزعة الخاصة بهم ، بينما يقدم Redis التخزين المؤقت.
تحسين التسعير الديناميكي
يدير فريق السوق في Uber التحسين والتوازن من خلال التسعير الديناميكي والمطابقة الذكية وتحديد مواقع التوريد. في وقت سابق ، تم بناء معظم أجزاء هذا المكدس باستخدام Python مع Flask و uWSGI. ومع ذلك ، الآن ، يستبدل المطورون معظم Python بـ Go لتحقيق أداء أفضل.
تدفق البيانات والتعلم الآلي
تستخدم أوبر كافكا وقواعد بيانات الإنتاج الخاصة بها لتدفق البيانات. ويعتمد تخزين البيانات على خدمات الويب Hive و HDFS و Elasticsearch و MapReduce وتخزين الملفات. طورت الشركة أيضًا نظام LIDAR الخاص بها الذي يضمن المشاركة الداخلية. يقوم LIDAR بتشغيل Jupyter و JupyterHub مدمجًا مع Apache Spark ومنصة البيانات الخاصة بهما.
للمضي قدمًا ، من الجدير بالذكر أن Uber لديها منصة ML الخاصة بها. في عام 2015 ، قررت الشركة توسيع نطاق ML من أجل توحيد الأدوات وسير العمل وتجنب أنماط ML المضادة. وبالتالي ، فقد طوروا مايكل أنجلو في عام 2017.
Michelangelo عبارة عن نظام أساسي يعمل بنظام AI و ML يساعد على إدارة البيانات وتقييم النماذج ونشرها وعمل تنبؤات للاتجاهات ومراقبة التكهن. تتكون منصة ML من مزيج من أنظمة مفتوحة المصدر ومكونات داخلية مثل:
- HDFS
- سامزا
- شرارة
- MLLib
- TensorFlow
- كاساندرا
- XGBoost

تقنيات المكدس لتطبيق الويب
بالنسبة للتطبيق المستند إلى الويب ، يستخدم مطورو Uber Node.js ، وهو نظام أساسي مفتوح المصدر يضم مجتمعًا ضخمًا من مهندسي الويب. يتيح Node.js أيضًا للمطورين مشاركة كود JavaScript بين الخادم والعميل لإنشاء تطبيقات ويب عالمية. أخيرًا ، يستخدمون Browserify لجميع الحزم من جانب العميل لأنها تأتي مع Node. متطلبات الوحدة المستندة إلى شبيبة.
تم بناء خادم الويب الخاص بـ Uber المسمى Bedrock على Express.js ، وهو إطار عمل ويب شائع يوفر أمانًا كاملاً واستيعابًا. تقوم طبقة اتصالات الخدمة الداخلية الخاصة بهم ، والمعروفة باسم Atreyu ، بإدارة جميع الاتصالات مع خدمات الواجهة الخلفية بالإضافة إلى دمجها مع Bedrock. تمكّن طبقة الاتصال هذه الشركة أيضًا من تقديم طلبات إلى واجهات برمجة تطبيقات خدمة SOA الخاصة بهم بسهولة وسرعة.
تستخدم Uber معيار Flux و React.js لعرض التطبيقات ومعالجة الحالة. نظام الإنشاء ، Core Tasks ، عبارة عن مجموعة محددة مسبقًا من البرامج النصية لتجميع أصول الواجهة الأمامية وإصدارها المبنية على Gulp.js.
تقنيات المكدس لتطبيقات الهاتف المحمول
لتطوير تطبيق مثل Uber ، تحتاج إلى إنشاء أربعة تطبيقات مختلفة للهاتف المحمول: Android للركاب ، وسائق Android ، وراكب iOS ، وسائق iOS. ينشئ المطورون تطبيقات IOS باستخدام لغة برمجة Objective-C و Swift ، بينما تم تطوير تطبيق Android باستخدام Java. ولكن بصرف النظر عنهم ، هناك عدد قليل من التقنيات الأخرى التي يستخدمها المطورون. وتشمل هذه:
مكدس تكنولوجيا تطبيقات Android
- جرادل
- OkHttp / Gson / التعديل التحديثي
- سكين زبدة
- خنجر
- إسبرسو
- رسام
- RxJava
- الأخشاب
مكدس تكنولوجيا تطبيقات iOS
- دولار
- الماسونية / سناب كيت
- كسكراش
- OCMock
ما هي لغات البرمجة التي يمكنني استخدامها لإنشاء تطبيق لتوصيل الطعام مثل أوبر؟
إذا كنت ترغب في تطوير تطبيق مثل Uber ، يمكنك اختيار دمج التقنيات التالية:
- Node.js - لتطبيق الويب الخاص بـ Marketplace
- Python - لتطبيق الحجز على شبكة الإنترنت
- Go- لتحسين الأداء والسرعة
- Browserify - للتجميع من جانب العميل
- Java - لتكاملات خدمات الجهات الخارجية
- مستودع بيانات Apache Hive - للتحليلات والاستعلام عن البيانات
- ELk - لتخزين السجلات والمعالجة والشحن
- Apache Cassandra - لإدارة كميات ضخمة من البيانات
- خدمة قاعدة بيانات MySQL - لإدارة قواعد البيانات العلائقية
- Docker - للبنية التحتية لمركز البيانات
- HAProxy - للخادم الوكيل وموازن التحميل
هذه تقرير موجز سريع عن مجموعة تقنيات Uber. ومع ذلك ، فإن مجرد نسخ هذه المجموعة التقنية دون إجراء البحث الخاص بك يمكن أن يكون ضارًا بنموذج عملك. كما أن تطبيق نفس التقنيات لن يضمن نجاح أعمال سيارات الأجرة الخاصة بك.
لذلك ، يُنصح ببناء تطبيقك باستخدام بعض التقنيات قدر الإمكان. تدريجيًا ، مع توسع أعمالك ، يمكنك الاستمرار في إضافة ميزات جديدة من خلال الاستفادة من أحدث التقنيات. يجب أن تستخدم مكدس Uber التقني فقط كمصدر للإلهام للبدء.
