شاید اسم apache airflow به گوشتان خورده باشد. airflow به صورت خلاصه یکی از ابزارهای مدیریت پیشرفته ی workflowهای سازمانی است. اگر می خواهید در این رابطه بیشتر بدانید، پیشنهاد میکنم قبل از خواندن این مقاله سری به گوگل بزنید و دربارهاش سرچ کنید. چون ما میخواهیم اینجا و در این مطلب فارغ از توضیحات کلی و کلیشه ای و همچنین مباحث فنی به جایگاه airflow در دیتاک و علت به وجود آمدنش صحبت کنیم. با ما همراه باشید.
داستان از کجا شروع شد؟
از آنجا که ما در دیتاک با کلانداده (Big Data) سر و کار داریم و روزانه حجم زیادی دیتا وارد سیستم شده، پردازش میشوند و به pipelineهای مختلف برای ذخیره سازی فرستاده میشوند، یک سری workflowهای تکراری و ثابت داریم که به مرور زمان به تعداد آنها اضافه هم خواهد شد. ما از یک طرف با تعدد و تنوع workflow رو به رو بودیم و از طرف دیگر نمیدانستیم با بزرگ و پیچیده شدن هر workflow چه کنیم؟
ما اوایل از crontabها برای پیادهسازی این workflowها استفاده میکردیم. مثلا کار یک crontab انتقال دیتا از یک دیتابیس به دیتابیس دیگر بود و crontab دیگری وظیفهی تشخیص کاربران فارسیزبان را به عهده داشت.
مشکل چه بود؟
مشکل این بود که اولا هزینه ی مدیریت و مانیتورینگ این crontabها به مرور زیاده شده بود.
ثانیا با پیچیدهتر شدن و طولانیتر شدن workflowها پیادهسازی و دیباگ آنها سختتر شده بود.
ثالثا مواردی مثل استاپ یا ریاستارت کردن بخشی از workflow سخت و در مواردی غیر ممکن شده بود.
پس ما نیاز به ابزار یا ابزارهایی داشتیم که هم بتوانیم این crontabها را در یک جا متمرکز کنیم و هم بتوانیم به راحتی آنها را مانتیور و پیادهسازی و همچنین مدیریت کنیم.
چرا آپاچی ایرفلو؟
airflow دقیقا همه ی موارد بالا را یکجا حل میکرد. با ارائهی یک پنل وب، ما میتوانستیم علاوه بر مدیریت و مانیتور روالها به صورت realtime، گزارش اجرای آنها را هم در ساعات گذشته ببینیم. همچنین قادر بودیم لاگهای تولید شده توسط workflowها را به صورت متمرکز بررسی و آنالیز کنیم.
یکی دیگر از بزرگترین مزیتهای airflow امکان شکستن هر workflow (در airflow به هر workflow یک dag گفته میشود) به بخشهای کوچکتری به اسم task است. هر task به صورت مجزا قابلیت اجرا مانیتورینگ و یا عملیات مدیریتی مثل استاپ و استارت و ری استارت شدن دارد!
آخرین نکتهای هم که میشود به آن اشاره کرد، ساختارمند شدن و یکپارچه شدن تمامی کدها به دلیل استفاده از یک فریمورک ثابت در تمام کدهاست.
چه مشکلاتی داریم؟
اما این همه ی داستان نیست. ما بعد از راه اندازی apache airflow و زیر بار بردنش دچار مشکلات دیگری شدیم و در واقع از مرز رویا عبور کردیم و به واقعیت رسیدیم. بزرگترین مشکلی که در ابتدا داشتیم incubator بودن airflow بود که منجر به تولید باگهای غیر منتظرهای در پروژه میشد. مشکل دیگری که با آن رو به رو شدیم، هزینه ی نگهداری خود airflow بود. airflow هر چند ابزارهای مختلفی را به صورت یکجا در اختیار ما قرار میداد اما خود این ابزارها سنگین بودند و در نهایت منجر به افزایش هزینهی اجرا شده بودند.مشکل بعدی، مشکل ایجاد یک پارادایم جدید اسکریپتنویسی آن هم فقط مبتنی بر پایتون بود. این باعث میشد تا اعضای تیم مجبور شوند crontab ها را فقط با زبان پایتون، آن هم با یک سری اصول خاص طراحی کنند. مشکل دیگر میتواند مشکل دیباگ کردن هر workflow باشد. درairflow دیباگ کردن یک dag بزرگ به مراتب پیچیده شده است.
3 دیدگاه روشن مدیریت workflowها با apache airflow
درود اقا محمد
سپاس از به اشتراک گذاشتن دانش و تجربیات مفید و با ارزش تان،
با ارزوی موفقیت روزافزون برای شما و همکاران تان
سلام
سپاس جناب حسین زاده
very well