مهندسی داده: نیاز امروز شرکت‌های داده محور ایرانی

مهندسی داده: نیاز امروز شرکت‌های داده محور ایرانی

نوشته شده توسط: مجتبی بنائی
تاریخ انتشار: ۰۴ مهر ۱۳۹۹
آخرین بروزرسانی: ۱۹ بهمن ۱۴۰۰
زمان مطالعه: 30 دقیقه
۴
(۱)

مقدمه

پردازش داده یکی از روبه رشدترین حوزه‌های دانش و مهندسی در جهان معاصر است. ظهور نیازمندی‌های جدید در حوزه جمع‌آوری، ذخیره، تحلیل، پردازش و تصویرسازی داده، در سالیان اخیر باعث به وجود آمدن مشاغلی جدید در این اکوسیستم شده است. دانشمند داده و تحلیلگر داده که در ادامه به آنها خواهیم پرداخت، از جمله این مشاغل نوظهور هستند که از سطح یک کالای لوکس و دور از دسترس، به جایگاه شغلی تثبیت شده‌ای در خارج و داخل کشور تبدیل شده‌اند.

در یکسال گذشته اگر مشاغل مرتبط با داده را در سایت‌های معتبر داخلی مانند جابینجا ‌رصد کرده باشید، متوجه شده‌اید که اخیراً جایگاه شغلی مهندسی داده یا Data Engineer به یک نیاز روز شرکت‌های بزرگ ایرانی تبدیل شده است و ممکن است برایتان سوال پیش آمده باشد که مهندسی داده چیست؟ سوالی که با بررسی نیازمندی‌های مورد نیاز برای این جایگاه شغلی در سایتهای ایرانی، پاسخ خود را نه تنها پیدا نخواهید کرد بلکه ممکن است حتی سردرگم هم بشوید.
در این مقاله به بررسی جنبه‌های مختلف این نوپای نوظهور در حوزه پردازش داده خواهیم پرداخت. با ما همراه باشید.

جایگاه مهندسی داده در دنیای فناوری اطلاعات

به رغم نوپا بودن مهندسی داده، این شغل توانسته است در سه سال پیاپی، یعنی از سال ۲۰۱۸ تا ۲۰۲۰، عنوان رو به رشدترین مهارت کاری را در تحلیل‌های بازار سایت Dice از آن خود کرده است. (۲۰۱۹،۲۰۱۸و۲۰۲۰) عنوان مقاله مرتبط با این موضوع در سایت Dice خود گویای ماجراست: «سال ۲۰۲۰، سال شهروندی مهندسی داده». در گزارش سالیانه لینکدین از مشاغل رو به رشد دنیا(نسخه ۲۰۲۰)، مهندسی داده رتبه هشتم در بین ۱۵ جایگاه شغلی محبوب را از آن خود کرده است. در این رتبه‌بندی، متخصص هوش مصنوعی رتبه اول و دانشمند داده، رتبه سوم را به خود اختصاص داده است.
سایت کاریابی indeed که مرجعی بین المللی در این حوزه است، اخیراً بهترین مشاغل ۲۰۲۰ دنیا را در گزارشی منتشر کرده است که رتبه‌بندی مشاغل آن‌ از مواردی مانند میزان پرداختی،‌ پتانسیل پیشرفت و مورد تقاضا بودن بهره برده است. در این گزارش، هر چند رتبه ۱۲ ام به مهندسی داده رسیده است اما از لحاظ رشد تقاضا در بازه زمانی ۲۰۱۶ تا ۲۰۱۹، رتبه سوم را دارد.

بررسی یک سناریوی واقعی

قبل از تعریف و بررسی مسئولیت‌های یک مهندس داده، بهتر است با این جایگاه شغلی از طریق یک مثال ملموس و واقعی، آشنا شویم. فرض کنید به عنوان مدیر بخش بازاریابی و فروش یک فروشگاه آنلاین بزرگ، نیاز به تحلیل رفتار کاربر و پیشنهاد هوشمند محصولات به او در راستای افزایش فروش دارید. جلسه‌ای با تیم فنی و تیم مدیریت داده خود برای این منظور تشکیل می‌دهید و از آنها می‌خواهید هر چه سریعتر، مکانیزمی برای تحلیل رفتار کاربر و پیشنهاد محصولات به او، ایجاد کنند.
در این جلسه، با نگاه به آینده و فراهم کردن بستر پردازش مناسب، تصمیم بر این گرفته میشود که هر کلیک کاربر، به عنوان یک رخداد تلقی شده و توسط تیم فرانت‌اند از طریق فراخوانی یک API به بخش پردازشی ارسال شود. سپس با ایجاد یک خط پردازش داده، بتوان انواع فرآیندهای مورد نیاز تیم‌های مختلف بازاریابی و تحلیل را مدیریت کرده، داده‌های مورد نیاز آنها را تولید کرد.

با فشردن دکمه افزودن به سبد خرید، رخداد «افزودن محصول به سبد خرید» و با حذف یک کالا از سبد، رخداد «حذف محصول از سبد» ایجاد شود. به همین منوال، هر کلیک کاربر یک رخداد به سامانه پردازشی ما ارسال خواهد کرد. با این رهیافت، می‌توان به ازای هر رخداد و بسته به نیاز واحدهای مختلف شرکت، یک جریان کاری ایجاد کرد. مثلاً در انتهای هر ماه، محصولاتی را که کاربر از سبد خود حذف کرده یا به سبد خود اضافه کرده اما آنها را نهایی نکرده است، با تخفیفی وسوسه انگیز برای کاربر ارسال کرد.

«نهایی کردن سفارش» هم رخدادی است که باید ذخیره شود حتی اگر نهایی کردن سفارش به خرید نهایی و پرداخت پول منجر نشود چون با نهایی کردن سفارش، (رخداد کلیک کاربر بر روی دکمه نهایی کردن سفارش) دو حالت پیش خواهد آمد : اگر خرید انجام شود، میتوان محصولات جانبی موردنیاز را به کاربر در انتهای ماه از طریق ایمیل یا پیامک با تخفیف مناسب اطلاع داد و اگر نهایی کردن سفارش به پرداخت پول ختم نشده باشد، می‌توان رتبه اعتباری فرد را بررسی کرده، در صورت تایید، خرید اقساطی یا اعتباری به کاربر اطلاع داده شود.
از طرفی، هر رخداد، یک داده مهم برای بخش تحلیل و آنالیز شرکت است و باید در دیتابیس‌های تحلیلی و یا انباره‌های داده، ذخیره شود. این کار می‌تواند در انتهای روز یا به ازای هر رخداد، انجام شود.

سناریوی زیر را که برای ارسال ایمیل تخفیف سفارشی به مشتریان در انتهای هر ماه باید انجام شود را در نظر بگیرید: محصولات حذف شده یا محصولات نهایی نشده به ازای کاربران مختلف از دیتابیس اصلی استخراج شده (فرآیند استخراج یا Extract)، به کمک مدل‌های ایجاد شده توسط دانشمندان داده شرکت، محصولات به دست آمده پالایش و میزان تخفیف، مشخص شده و به کاربر اطلاع داده شود. (فرآیند تغییر شکل یا Transform) در انتهای کار هم اطلاعات ایجاد شده، مانند پیشنهاد ارسال شده به کاربر، وارد دیتابیس‌های تحلیلی و انباره‌های داده شرکت شود (فرآیند بارگذاری یا Load) تا تحلیلگران داده هم بتوانند تحلیل‌های بعدی را روی آنها انجام دهند.
ارسال ایمیل محصولات تخفیف دار به مشتریانی که آنها را از سبد خرید خود حذف یا نهایی نکرده‌اند، یکی از ده ها جریان‌کاری (Workflow) است که روزانه، ماهیانه و یا به ازای هر رخداد باید انجام شود.طراحی، نظارت و مدیریت این فرآیند پردازش داده، بر عهده مهندسین داده شرکت است. اینکه از چه فناوری ای استفاده شود، چه صف توزیع شده ای به کار رود، چگونه اطلاعات اولیه از دیتابیس رابطه‌ای به کمک SQL‌ استخراج شود، افزایش کاربران و افزایش رخدادها و جریان کارها باعث رخداد خطا یا کندی در سیستم نشود و در یک کلام، همه چیز به خوبی و نظارت شده پیش برود و چیزی از قلم نیفتد، همه و همه بر عهده مهندس داده است. وظیفه‌ای که در عمل، بسیار سنگین و طاقت فرساست.
با این توصیف، مهندس داده، مهندسان آچار به دست شرکت در حوزه داده خواهند بود که تضمین می‌کنند خوراک داده مورد نیاز بخش‌های مختلف شرکت همواره و با کیفیت لازم برقرار باشد.

مهندسی داده چیست؟

موسسه استاندارد آمریکا در نسخه سوم استاندارد بیگ‌دیتا که در اکتبر ۲۰۱۹ منتشر شده است، مهندس کلان‌داده را اینگونه تعریف می‌کند:

Big Data engineering is the discipline for engineering scalable systems for data-intensive processing
مهندسی (کلان) داده، رشته ایست با محوریت مهندسی سامانه‌های مقیاس‌پذیر پردازش داده.

این تعریف کلی است اما جامعیت لازم را برای شناخت مهندسی داده دارد. ماکسیم بیچمین در مقاله‌‌ تحسین شده خود در سال ۲۰۱۷ با عنوان ظهور مهندسی داده، این رشته جدید را تلفیقی از مهندسی نرم‌افزار، هوش تجاری و انبارش داده می‌داند که فرآیندهای مهندسی نرم‌افزار (طراحی، تولید، پایش و توسعه نرم افزار) در آن کاملا مشهود است و در کنار اینها، پردازش توزیع شده، پردازش جریان‌های داده و در یک کلام، کار با کلان‌داده را هم شامل می‌شود.

تعبیر بیچمین از مهندسی داده به عنوان فرزندنوپای حوزه پردازش داده که در کنار برادر بزرگتر خود یعنی علم داده، راه رفتن آغاز کرد و به تدریج هویتی مستقل برای خود دست و پا کرده، سری در سرها درآورد، به نظرم بسیار گویا و آگاهی بخش است.
جیمز فوربوش در مقاله‌ای منتشر شده در انتشارات معروف اُریلی، به تاریخ جولای ۲۰۱۸، مهندس داده را فردی می‌داند که مسوولیت اصلی او ساخت و نگهداشت خطوط پردازش داده و تضمین کیفیت داده است.

و اشاره می‌کند که طراحی، ساخت و نگهداشت خطوط پردازش داده، نیازمند ترکیب حدود ۱۰ تا ۳۰ کتابخانه و چارچوب پردازشی است. این موضوع خود نشانگر نیاز به تسلط فنی یک مهندس داده به اکوسیستم پردازش داده و بخصوص کلان‌داده است.
در هرم نیازمندی‌های علم داده که توسط مونیکا روگاتی پیشنهاد شده است، می‌توان مهندسی داده را شامل سطح دوم و بخشی از سطح یک و سه این هرم در نظر گرفت :

مهندس داده/تحلیلگر داده/دانشمند داده

قبل از بررسی مهارت‌های مورد نیاز یک مهندس داده، باید به صورت مختصر راجع به دو جایگاه شغلی مشابه و همراه با مهندسی داده یعنی دانشمند داده و تحلیلگر داده توضیح دهیم و ارتباطات این سه حرفه به نسبت جدید را بیان کنیم.
تحلیل‌گر داده که قدمتی به درازای خود مفهوم داده در ادبیات معاصر فناوری اطلاعات دارد، به بررسی داده‌های موجود، استخراج ویژگی‌های جدید و تصویر سازی مناسب از آنها می‌پردازد. کاری که معمولاً در بخش هوش تجاری یک سازمان انجام می‌شود. (جنبه تجاری و کاربردی داده)
دانشمند داده که قدمتی حدودا ده ساله دارد، به ساخت مدل‌های پیش‌بینی کننده و واکاوی علمی داده‌ها برای کشف روابط پنهان بین داده‌ها می‌پردازد که با جنبه علمی و تحقیقاتی داده‌ها سروکار دارد.
مهندس داده، با طراحی زیرساخت‌ها و معماری پردازش داده و تضمین اجرای بدون عیب و نقص خطوط پردازش داده در سازمان سروکار دارد. (جنبه مهندسی و زیرساختی داده)

مهارتهای مورد نیاز یک مهندس داده

برای طراحی، پیاده سازی، پایش و توسعه بسترپردازش داده، یک مهندس داده باید با موارد زیرآشنا باشد:

  • لینوکس و دستورات کاربردی و اصلی آن بخصوص نوشتن اسکریپت‌های bash
  • آشنایی با یک زبان برنامه نویسی مناسب برای پردازش داده مانند پایتون و اسکالا
  • آشنایی با SQL و نوشتن کوئری‌های پیچیده .
  • آشنایی کلی با طراحی و پیاده سازی سیستم های توزیع شده
  • آشنایی با ابزارهای دریافت و توزیع داده مانند کافکا ، چارچوب‌های پردازش داده مانند هدوپ و اسپارک، مکانیزم‌‌های ذخیره‌سازی داده مانند HDFS و Parquet
  • آشنایی با مفاهیم انباره‌های داده، دیتابیس‌های تحلیلی نوین (دیتابیس‌های ستونی) و توانایی کار با آنها
  • آشنایی با پایگاه های داده‌ای رابطه ای و NoSQL و نحوه مدلسازی داده‌ها در هر پارادایم.

البته منظور از آشنایی، حدی از دانش است که بتوان به کمک آن، طراحی درست را انجام داد و از نقاط ضعف و قوت هر فناوری به خوبی آگاه بود.آقای جف هِیل، در مقاله‌ای تحلیلی با عنوان «پرتقاضاترین مهارتهای یک مهندس داده» بررسی داده‌های مشاغل سایت‌های کاریابی معروف SimplyHired, Indeed, and Monster، نمودار زیر را برای مهارت‌های موردنیازی که شرکت‌های مختلف برای جذب یک مهندس داده، اعلام کرده بودند، به دست آورده است:همانطور که انتظار می رفت، رتبه‌های اول تا سوم به SQL، زبان پایتون و چارچوب پردازشی اسپارک رسیده است که این سه مهارت، جزء ملزومات اصلی این رشته محسوب میشود.
در نمودار فوق، رتبه چهارم به AWS‌ (ابر پردازشی آمازون)، رسیده است و پنجمین رتبه به جاوا. با توجه به این‌که اکثر پروژه‌های متن‌باز حوزه کلان‌داده با جاوا نوشته شده است، این رتبه، دور از انتظار به نظر نمیرسد هر چند، تسلط به یک زبان برنامه نویسی مانند پایتون، برای یک مهندس داده، کافی خواهد بود.

بعد از هدوپ، به هایو میرسیم که انباره داده پیش‌فرض و رایج در اکوسیستم هدوپ (چارچوب پردازشی کلاسیک کلان‌داده) است. اسکالا، یکی از زبان‌های برنامه نویسی منشعب از جاواست که به طور خاص برای کار با اسپارک استفاده می‌شود. کافکا هم صف توزیع شده محبوب این روزهاست که نقش اصلی در طراحی سامانه‌های پردازشی کلان‌داده و ایجاد خطوط پردازش داده، ایفا می‌کند.
در انتهای طیف هم NoSQL را داریم که نسبت به SQL، تقاضای بسیار کمتری را به خود اختصاص داده است اما با این وجود، جز ده مهارت بالای مورد نیاز یک مهندس داده است. لیست بقیه مهارت‌های موردنیاز مانند SQL Server، HBase، آژور، لینوکس و R را می‌توانید با مراجعه به مقاله فوق مشاهده نمایید.

نمودار جالب دیگری که آقای هِیل رسم کرده است، تفاوت‌های مشاهده شده در بین مهارتهای مورد نیاز دانشمند داده و مهندس داده است. این نمودار که در زیر آنرا مشاهده میکنید ، حاصل تفریق تعداد تقاضاهای مهارتهای مهندس داده و دانشمند داده است، به خوبی گویای تفاوت‌های این رسته شغلی هم هست. مثلا مهارت کار با اسپارک، در جایگاه‌ شغلی مهندس داده، بیشتر از بیست درصد با همین مهارت در جایگاه شغلی دانشمند داده، اختلاف دارد.از جمله مواردی که در نمودارهای فوق مشاهده نمی‌شود اما در حوزه مهندسی داده، چه در شرکت‌های داخلی و چه در مقالات تکنیکال خارجی، به کرات دیده می‌شود، مهارت کار با یک چارچوب مدیریت جریان‌کار مانند Apache Airflow است که در مقاله‌ای جداگانه به آن خواهیم پرداخت.
اگر قصد شروع به کار در حوزه مهندسی داده را دارید، با ما همراه باشید.

چه رتبه ای می‌دهید؟

میانگین ۴ / ۵. از مجموع ۱

اولین نفر باش

title sign
معرفی نویسنده
مجتبی بنائی
مقالات
3 مقاله توسط این نویسنده
محصولات
5 دوره توسط این نویسنده
مجتبی بنائی

دانشجوی دکترای نرم‌افزار دانشگاه تهران، مدرس دانشگاه و فعال در حوزه مهندسی‌ نرم‌افزار و علم داده که تمرکز کاری خود را در چند سال اخیر بر روی مطالعه و تحقیق در حوزه کلان‌داده و تولید محتوای تخصصی و کاربردی به زبان فارسی و انتشار آنها در سایت مهندسی داده گذاشته است. مدیریت پروژه‌های نرم‌افزاری و طراحی سامانه‌های مقیاس‌پذیر اطلاعاتی از دیگر فعالیتهای صورت گرفته ایشان در چند سال گذشته است.مهندس بنائی همچنین: مدرس دوره‌های BigDataی نیک آموز، دانشجوی دکترای نرم افزار و مدرس دانشگاه تهران، مجری و مشاور پروژه‌های کلان‌داده در سطح ملی و بین المللی، فعال در حوزه تولید محتوای تخصصی در زمینه پردازش داده می باشد.

title sign
دیدگاه کاربران

    • […] مهندسی داده به عنوان یک رشته نوظهور در حوزه داده که نیاز امروز شرکتهای بزرگ و کوچک دنیاست، اخیرا مصاحبه ای صوتی با آقای دهقان مدیر کانال […]

    • […] که در این مقاله توضیح داده‌ام، مهندسی داده مجموعه مهارتهایی است که […]