كيف يجب أن تختار شركة أدوات لمهندسي البيانات وليس تحويل كل شيء إلى حديقة حيوانات تقنية: تجربة PROFI.RU

تحدث محرر Netology مع رئيس فريق BI في Profi.ru Pavel Sayapin حول المهام التي يحلها مهندسو البيانات في فريقه ، ونوع الأدوات التي يستخدمونها لهذا ، وكيف ، بعد كل شيء ، النهج الصحيح لاختيار الأدوات لحل مشاكل البيانات ، في بما في ذلك غير نمطي. بافيل مدرس في دورة مهندس البيانات



ما يفعله مهندسو البيانات في Profi.ru



Profi.ru هي خدمة تساعد العملاء والمتخصصين في مختلف المجالات على الالتقاء. تحتوي قاعدة البيانات الخدمية على أكثر من 900 ألف متخصص في 700 نوع من الخدمات: مدرسون ، مصلحون ، مدربون ، خبراء تجميل ، فنانون وغيرهم. يتم تسجيل أكثر من 10 آلاف طلب جديد كل يوم - كل هذا يعطي حوالي 100 مليون حدث في اليوم. من المستحيل الحفاظ على هذا الكم من البيانات بالترتيب بدون مهندسي بيانات محترفين.  



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



— -, -,  



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





مكان عملية جودة البيانات في الهيكل العام لمستودع البيانات يعتبر



التوثيق التوضيحي للعمل مع البيانات ذا أهمية كبيرة. هذا يبسط عمل كل من مهندس البيانات (لا تشتت الأسئلة) ومستخدم البيانات (يمكنه العثور على إجابات لأسئلته بنفسه). في Profi.ru يتم جمع هذه الوثائق في المنتدى الداخلي.



الملاءمة تتضمن سرعة استرجاع البيانات. السرعة = التوفر في خطوة واحدة ، انقر - لوحة القيادة. لكن في الممارسة العملية ، كل شيء أكثر تعقيدًا. 



من وجهة نظر المستخدم النهائي للوحة القيادة ، لا تسمح نفس اللوحة بعرض جميع الأبعاد الممكنة. يكتفي المستخدم بالمرشحات التي قام بها مطور لوحة القيادة. هذا يخلق سيناريوهين: 



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


الوصول هو مفهوم واسع. هذا هو توافر البيانات بالشكل المناسب ، والقدرة على الحصول على معلومات من لوحات المعلومات ، وكذلك قطع البيانات اللازمة.


تجميع البيانات من جميع المصادر في مكان واحد



يمكن أن تكون مصادر البيانات داخلية أو خارجية. على سبيل المثال ، يعتمد عمل شخص ما على تقارير الطقس التي سيتم جمعها وتخزينها - من مصادر خارجية. 



من الضروري تخزين المعلومات مع الإشارة إلى المصدر ، وكذلك حتى يمكن العثور على البيانات بسهولة. Profi.ru يحل هذه المشكلة بمساعدة التوثيق الآلي. تُستخدم ملفات YML كتوثيق لمصادر البيانات الداخلية.



اصنع لوحات القيادة



من الأفضل القيام بتصور البيانات باستخدام أداة احترافية مثل Tableau. 



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



يجعل التصور عالي الجودة للبيانات القرارات أسهل وأسرع.
 

كلما كان الشخص في موقع أعلى ، زادت الحاجة إلى الحصول على بيانات مجمعة في متناول اليد على الهاتف. لا يحتاج كبار المديرين إلى التفاصيل - من المهم التحكم في الموقف ككل ، وذكاء الأعمال أداة جيدة لذلك.





مثال على لوحة معلومات المنتج Profi.ru (إحدى الأوراق). لأغراض السرية ، يتم إخفاء أسماء المقاييس والمحاور



أمثلة على مهام حقيقية 



المهمة 1 - نقل البيانات من أنظمة المصدر (التشغيل) إلى مستودع البيانات أو ETL



إحدى المهام الروتينية لمهندس البيانات. 



لهذا يمكن استخدام:



  • نصوص مكتوبة ذاتيًا يتم تشغيلها بواسطة cron أو باستخدام منسق خاص مثل Airflow أو المحافظ ؛ 
  • حلول ETL مفتوحة المصدر: Pentaho Data Integration و Talend Data Studio وغيرها ؛
  • حلول الملكية: Informatica PowerCenter و SSIS وغيرها ؛
  • الحلول السحابية: Matillion و Panoply وغيرها. 


في إصدار بسيط ، يتم حل المهمة عن طريق كتابة ملف YML من 20 سطرًا. يستغرق الأمر حوالي 5 دقائق. 



في أصعب الحالات ، عندما تحتاج إلى إضافة مصدر جديد - على سبيل المثال ، قاعدة بيانات جديدة - يمكن أن يستغرق الأمر عدة أيام. 



في Profi ، تتكون هذه المهمة البسيطة - بعملية مبسطة - من الخطوات التالية:



  • اكتشف من العميل البيانات المطلوبة ومكانها.
  • افهم ما إذا كان هناك وصول إلى هذه البيانات.
  • إذا لم يكن هناك وصول ، اسأل المسؤولين.
  • أضف فرعًا جديدًا إلى Git برمز إصدار Jira.
  • قم بإنشاء ترحيل لإضافة البيانات إلى نموذج الارتساء من خلال برنامج نصي تفاعلي من Python.
  • أضف ملفات التنزيل (ملف YML مع وصف لمكان أخذ البيانات والجدول الذي تمت كتابته فيه).
  • اختبر على المنصة.
  • تحميل البيانات إلى المستودع.
  • قم بإنشاء طلب سحب.
  • اذهب من خلال مراجعة الكود.
  • بعد اجتياز مراجعة الكود ، يتم تحميل البيانات إلى الفرع الرئيسي ويتم إدخالها تلقائيًا في الإنتاج (CI / CD).


المهمة 2 - ضع البيانات التي تم تنزيلها بسهولة



هناك مهمة شائعة أخرى وهي وضع البيانات التي تم تنزيلها بحيث يكون المستخدم النهائي (أو أداة BI) مرتاحًا للعمل معها ولا يتعين عليه القيام بحركات غير ضرورية لإكمال معظم المهام. وهذا يعني ، إنشاء أو تحديث مخزن بيانات الأبعاد (DDS). 



لهذا ، يمكن تطبيق الحلول من المهمة الأولى ، نظرًا لأن هذه أيضًا عملية ETL. في أبسط أشكاله ، يتم تحديث DDS باستخدام برامج SQL النصية.



المهمة 3 - من فئة المهام غير النمطية



تحليلات البث ولدت في Profi. يتم إنشاء عدد كبير من الأحداث من فرق المنتجات - نقوم بتسجيلها في ClickHouse. لكن لا يمكنك إدراج السجلات هناك واحدًا تلو الآخر بعدد كبير ، لذلك يتعين عليك دمج السجلات في مجموعات. هذا يعني أنه لا يمكنك الكتابة مباشرة - فأنت بحاجة إلى معالج وسيط.



نحن نستخدم محرك Apache Flink. حتى الآن ، يكون الإجراء على النحو التالي: يقوم المحرك بمعالجة تدفق الأحداث الواردة them يضيفها على دفعات في ClickHouse يحسب عدد الأحداث في 15 دقيقة يرسلها إلى الخدمة ، والتي تحدد ما إذا كانت هناك حالات شاذة - يقارن مع القيم لنفس 15 دقيقة بعمق 3 أشهر إذا كان هناك ، يرسل إشعارًا إلى Slack.





مخطط تحليلات الواجهة الأمامية (جزء التنزيل)



يضمن إطار عمل Apache Flink التسليم مرة واحدة على الأقل. ومع ذلك ، هناك فرصة للتكرار. في حالة RabbitMQ ، يمكن حل ذلك باستخدام معرف الارتباط. ثم يتم ضمان سلامة البيانات تسليم واحد.



نحسب عدد الأحداث مرة أخرى باستخدام Apache Flink ، ونعرضه من خلال لوحة معلومات مكتوبة ذاتيًا مكتوبة بلغة NodeJS و + front في ReactJS. بحث سريع لم يسفر عن حلول مماثلة. واتضح أن الكود نفسه بسيط - لم يستغرق الأمر وقتًا طويلاً للكتابة.



المراقبة تقنية نوعا ما. نحن ننظر إلى الحالات الشاذة من أجل منع المشاكل في المراحل المبكرة. لم يتم تضمين بعض المقاييس العالمية المهمة للشركة في المراقبة حتى الآن ، نظرًا لأن اتجاه تحليلات التدفق في مرحلة التكوين.



أدوات مهندس البيانات الأساسية



مع مهام مهندسي البيانات ، أصبح الأمر أكثر أو أقل وضوحًا ، والآن قليلاً حول الأدوات المستخدمة لحلها. بالطبع ، يمكن (ويجب) أن تختلف الأدوات في الشركات المختلفة - كل هذا يتوقف على كمية البيانات وسرعة استلامها وعدم تجانسها. يمكن أن يعتمد أيضًا على تحيز المتخصص تجاه أداة معينة لمجرد أنه عمل معها ويعرفها جيدًا. استقر Profi.ru على مثل هذه الخيارات →



لتصور البيانات - Tableau ، Metabase



تم اختيار Tableau لفترة طويلة. يتيح لك هذا النظام تحليل كميات كبيرة من البيانات بسرعة ، مع عدم الحاجة إلى تنفيذ مكلف. بالنسبة لنا ، فهي مريحة وجميلة ومألوفة - غالبًا ما نعمل فيها.



قلة من الناس يعرفون عن قاعدة التعريف ، وفي الوقت نفسه فهي جيدة جدًا للنماذج الأولية. 



من أدوات التصور ، يمكنك أيضًا التحدث عن مجموعة Airbnb's Superset. ميزتها الخاصة هي العديد من اتصالات قواعد البيانات وقدرات التصور. ومع ذلك ، بالنسبة للمستخدم العادي ، فهي أقل ملاءمة من قاعدة التعريف - لا يمكنك ضم الجداول فيها ، لذلك تحتاج إلى إنشاء طرق عرض منفصلة. 



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



هناك الكثير من الأدوات - فقط اعثر على أدواتك.



لتخزين البيانات - ClickHouse، Vertica



ClickHouse هي أداة سريعة مجانية لتخزين أحداث البقالة. يقوم المحللون أنفسهم بإجراء تحليلات منفصلة (إذا كان لديهم بيانات كافية) أو يقوم مهندسو البيانات بأخذ مجاميع وإعادة تحميلها إلى Vertica لبناء واجهات المحلات.



يعتبر Vertica منتجًا رائعًا وسهل الاستخدام لعرضه في المتجر النهائي. 



للتحكم في تدفق البيانات والحساب - تدفق الهواء



نقوم بتحميل البيانات من خلال أدوات وحدة التحكم. على سبيل المثال ، من خلال عميل يأتي مع MySQL ، يصبح أسرع. 



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



لغة البرمجة الرئيسية هي Python



بايثون لديها عتبة دخول أقل بكثير + الشركة لديها الكفاءة في هذه اللغة. سبب آخر هو أنه تحت Airflow DAGs مكتوبة بلغة Python. هذه البرامج النصية هي مجرد غلاف حول التنزيلات ، ويتم معظم العمل عبر البرامج النصية لوحدة التحكم. 



نحن نستخدم Java لتطوير التحليلات في الوقت الفعلي.



نهج لاختيار أدوات البيانات - ما يجب القيام به من أجل عدم تكاثر حديقة حيوانات التكنولوجيا



هناك العديد من الأدوات في السوق للعمل مع البيانات في كل مرحلة: من مظهرها إلى الإخراج إلى لوحة القيادة لمجلس الإدارة. ليس من المستغرب أن يكون لدى بعض الشركات عدد من الحلول غير ذات الصلة - ما يسمى بحديقة حيوان التكنولوجيا.



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





خريطة التقنيات والشركات في مجال البيانات والذكاء الاصطناعي - يمكنك معرفة عدد الحلول المكررة التي يمكن أن تكون



أيضًا ، يمكن للكثيرين استخدام أدوات ETL المختلفة للأغراض الشخصية. في Profi ، هذا هو الوضع بالضبط. ETL الرئيسي موجود على Airflow ، لكن شخصًا ما يستخدم Pentaho للتحميلات الشخصية. إنهم يختبرون الفرضيات ، ولا يحتاجون إلى تشغيل هذه البيانات من خلال المهندسين. في الأساس ، يتم استخدام أدوات الخدمة الذاتية من قبل المتخصصين ذوي الخبرة إلى حد ما الذين يشاركون في أنشطة البحث - استكشاف طرق جديدة لتطوير المنتج. مجموعة بياناتهم للتحليل تهمهم بشكل أساسي ، علاوة على ذلك ، فهي تتغير باستمرار. وفقًا لذلك ، ليس من المنطقي إضافة هذه الأحمال إلى المنصة الرئيسية. 



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



, . , . 


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



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

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

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



انتهت المعاناة بعد التحول إلى Airflow ، وهي أداة شائعة لدى مجتمع كبير. 

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



إذا تحدثنا عن نهج الاختيار ، فإن Profi يلتزم بالمبادئ التالية:



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


الكفاءات الداخلية كبديل فعال لمقدم خدمة خارجي



يمكن أيضًا اعتبار نهج اختيار الأدوات هو استخدام الكفاءات الداخلية للشركة. 



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



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



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



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



استمرت المرحلة الرئيسية - الساخنة - عندما تم بناء كل شيء وبلورة ، لمدة عام تقريبًا. والمشروع لا يزال قيد التطوير. 

عند بناء مستودع بيانات الشركة ، من المهم الالتزام بالمعايير العالية ، والدفاع عن مركزك ، وعدم القيام بأي شيء لإرضاء العمل. 



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



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



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



إذا أراد أي شخص مشاركة حل المشكلة الثالثة الموضحة أعلاه - مرحبًا :-)



All Articles