چطور تسک‌های مهندسی داده خود را درک کنیم؟

چطور تسک‌های مهندسی داده خود را درک کنیم؟

نوشته شده توسط: تیم فنی نیک آموز
تاریخ انتشار: ۲۰ آذر ۱۴۰۰
آخرین بروزرسانی: 27 بهمن 1400
زمان مطالعه: 20 دقیقه
۰
(۰)

مقدمه

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

  • در شغل مهندسی داده خود احساس مبتدی بودن می‌ کنید
  • احساس می ‌کنید در پایه کد و مؤلفه‌هایی که نمی ‌دانید غرق شده ‌اید
  • حس می ‌کنید وظایف خود را ضعیف انجام می ‌دهید

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

  • فرایندهای بالا دستی: هر فرایندی که قبل از تسکی که روی آن کار می ‌کنید انجام می ‌شود.
  • فرایندهای پایین دستی: هر فرایندی که بعد از تسکی که روی آن کار می ‌کنید اجرا می ‌شود.
  • کاربر نهایی: برای سادگی، ما به هر برنامه کاربردی، فرایندهای خودکار و افرادی که از داده ‌های شما به عنوان کاربر نهایی استفاده می‌ کند تحت این عنوان اشاره خواهیم کرد.

تسک‌ های مهندسی داده خود را بفهمید

درک خوب از تسک، یک شرط حیاتی در تحویل یک کار خوب است.

  • دید کلی از زیر ساخت داده

برای درک سریع زیرساخت داده شرکت خود، کامپوننت ‌ها و اینترفیس ‌های موجود را شناسایی کنید.
به طور معمول، کامپوننت‌ ها عبارتند از:

  • پایگاه داده برنامه (به عنوان مثال MySQL، Postgres)
  • انبار داده (به عنوان مثال Redshift، Snowflake، BigQuery)
  • ابزار بصری ‌سازی داده‌ ها (به عنوان مثال Apache Superset، Looker)
  • موتور هماهنگ‌ سازی خط پردازش داده (به عنوان مثال Apache Airflow، DBT، Prefect)
  • موتور اجرایی (به عنوان مثال Airflow workers، K8S tasks)
  • سیستم جریان رویداد (به عنوان مثال Apache Kafka, RabbitMQ )
  • فضای ذخیره سازی ابری (به عنوان مثال GCP Cloud Storage، AWS S3 )
  • سیستم پردازش توزیع شده (به عنوان مثال Apache Spark، Apache Flink، Apache Heron)

برخی از این کامپوننت‌ها ممکن است توسط یک سرویس مدیریت شوند، به عنوان مثال EMR برای Spark و Flink، Stitch برای Singer، Astronomer برای Airflow و غیره.

اینترفیس ‌ها ممکن است شامل موارد زیر باشند:

  • کتابخانه‌ ها (به عنوان مثال psycopg2, boto3, pysftp )
  • REST API ها

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

  • تسک دقیقا چه کاری را از شما می‌ خواهد؟

هنگامی که سعی می ‌کنید بفهمید تسک چه کاری را می ‌خواهد، تسک را در یکی از موارد زیر می ‌توانید طبقه ‌بندی کنید.

  1. درخواست دریافت یا ایجاد داده‌ های جدید
  • افزودن فیلدها یا ستون‌ های جدید به داده ‌های خروجی
  • ورود داده‌ ها از منابع دیگر به انبار داده
  1. درخواست داده ‌های ETL بین سیستم ‌ها
  • ساخت یا تغییر خطوط پردازش داده برای ارسال داده به مشتریان خارجی
  • ایجاد یا تغییر خطوط پردازش داده جهت داده‌ های ETL بین پایگاه داده‌ های برنامه، موتورهای جستجو، انبار داده و غیره
  1. تغییر زمان بندی خط پردازش داده
  • افزایش یا کاهش فرکانس اجرای خط پردازش داده
  • اضافه کردن منطق اجرای کد مبتنی بر زمان به خط پردازش داده
  1. تغییر نوع یا فرمت داده‌ ها
  • رمزگذاری، فشرده ‌سازی یا پارتیشن ‌بندی داده‌ ها
  • تغییرات در قالب داده یا شِما
  1. قابلیت نظارت بر داده‌ ها
  • اضافه کردن لاگ ‌ها، مانیتورینگ یا هشدار
  • ایجاد هشدار بر اساس معیارهای تجاری سفارشی
  1. بهبود عملکرد خط پردازش داده
  • افزایش حجم داده ‌های پردازش شده یا سرعت پردازش
  • کاهش مشکلات خطوط پردازش داده
  1. تغییرات معماری
  • مهاجرت به یک ارائه دهنده جدید (مانند EMR به Databricks و غیره)
  • اضافه کردن جداول متا دیتا و نقاط پایانی API آنها
  • خودکارسازی فرایندهای اجرا شده به صورت دستی، مانند اسکریپت‌های one-off، تسک‌های ورود داده و غیره

از این لیست به عنوان نقطه شروع استفاده کنید تا به یک دید صحیح برسید که دقیقاً تسک چه کاری را از شما می‌خواهد.

  • تسک مورد نظر دقیقا چرا طراحی شده؟

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

  • آیا انجام این تسک لازم است؟
  • چرا انجام این تسک ضروری است؟ چه تاثیری برای کسب و کار، تیم داده، کیفیت داده، تازگی داده ‌ها، سایر توسعه دهندگان، پایگاه کد و غیره دارد؟
  • آیا با استفاده از داده ‌ها یا کدهای قبلی که در حال حاضر وجود دارد می ‌توان تسک را به انجام رساند؟

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

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

به یاد داشته باشید که اگر در مورد چرایی انجام یک تسک دچار سردرگمی شده‌اید می‌توانید با همکاران با تجربه در شرکت صحبت کنید و نظر آنها را در این مورد جویا شوید. همیشه افرادی در اطرافتان هستند که می ‌توانند با صرف کمترین زمان بزرگ ‌ترین کمک و راهنمایی ‌ها را به شما بدهند. از این نکته غافل نشوید.

  • تاثیرات انجام تسک روی فرایندهای پایین دستی

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

مرحله تحویل تسک مهندسی داده

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

  • چگونگی انجام

اگر در حال طراحی یک خط پردازش داده جدید هستید و هیچ گونه مشابهی در پایگاه کد شرکت وجود ندارد، یک رویکرد خوب را با توجه به نکات زیر در نظر بگیرید.

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

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

  • تحویل تسک انجام شده

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

نتیجه ‌گیری

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

منابع

https://www.startdataengineering.com/post/how-to-deliver-on-your-de-tasks/

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

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

اولین نفر باش

title sign
معرفی نویسنده
تیم فنی نیک آموز
مقالات
401 مقاله توسط این نویسنده
محصولات
0 دوره توسط این نویسنده
تیم فنی نیک آموز
title sign
دیدگاه کاربران

close-image