آپاچی ایرفلو 3.0: از خطوط لوله داده تا استنتاج هوش مصنوعی

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

با انتشار نسخه 3.0 این راهکار، این منبع مدیریت گردش کار متن‌باز که به طور فزاینده‌ای محبوب شده است، اکنون میزبان ویژگی‌های جدیدی برای پشتیبانی از برنامه‌های کاربردی در مقیاس سازمانی است.

کنترل‌های نسخه برای خطوط لوله داده - که گراف‌های جهت‌دار غیرمدور (Directed Acyclic Graphs) (DAGs) نامیده می‌شوند - ویژگی‌های امنیتی پیشرفته و ساختارهایی برای پشتیبانی از اجرای استنتاج هوش مصنوعی ارائه شده است.

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

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

به گفته ویکرام کوکا (Vikram Koka)، مدیر ارشد استراتژی در Astronomer و مشارکت‌کننده آپاچی ایرفلو، «با رشد پذیرش ایرفلو، اکنون می‌بینیم که 30 درصد از کاربران ما از ایرفلو برای MLOps استفاده می‌کنند. ما شاهد این هستیم که 10 درصد از کاربران ما از آن برای برنامه‌های کاربردی هوش مصنوعی مولد استفاده می‌کنند.»

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

کنترل‌های نسخه DAG

یکی از ویژگی‌های قابل استفاده در بسیاری از زمینه‌ها در نسخه 3.0 ایرفلو، نسخه‌بندی است که برای خطوط لوله داده یا DAGها ارائه می‌دهد.

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

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

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

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

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

بهبودهای امنیتی مجزا

ایرفلو 3.0 همچنین ویژگی‌های امنیتی خود را تقویت کرده است تا این پلتفرم را شایسته فرصت‌های تولید در مقیاس سازمانی کند. ارتقاء امنیتی اصلی آن، جدا کردن قابلیت‌های اجرای وظایف از قابلیت‌های مدیریت، زمان‌بندی و هماهنگ‌سازی کلی است که این راهکار ارائه می‌دهد.

اجزای سرور ایرفلو اکنون شامل "یک سرور API است که اساساً می‌تواند در پایگاه داده فراداده ایرفلو بخواند و بنویسد." کوکا گفت: "و سپس، ما چیزی به نام SDK وظیفه ارائه می‌دهیم، که یک جزء سرویس گیرنده است، که در ابتدا در پایتون است. بنابراین، تمام کد تعریف شده توسط کاربر فقط در زمینه این SDK وظیفه اجرا می‌شود."

با این الگو، کد SDK وظیفه مستقیماً به پایگاه داده فراداده ایرفلو متصل نمی‌شود و از نوشتن مستقیم فرآیندهای worker در آن جلوگیری می‌کند. در عوض، وظایف مشخص شده در رابط SDK وظیفه با سرور API تعامل می‌کنند تا وضعیت وظایف را گزارش و دریافت کنند. نتیجه "یک وضعیت کنترل دسترسی امنیتی قوی‌تر" است. کوکا توضیح داد: کوکا همچنین اشاره کرد که یک SDK وظیفه برای Golang به زودی در دسترس خواهد بود و اعضای جامعه درخواست یک SDK وظیفه با پشتیبانی از Rust را داشته‌اند.

اجرای از راه دور

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

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

سرور API هماهنگ‌سازی متمرکزی را که کوکا به آن اشاره کرد ارائه می‌دهد، در حالی که جدایی آن از SDK وظیفه، وظایف را قادر می‌سازد تا در خوشه‌های کاملاً متفاوت، در ابرهای عمومی یا خصوصی، یا هر جای دیگری که سازمان‌ها مشخص می‌کنند، اجرا شوند. کوکا اظهار داشت: "شما ممکن است برخی از وظایف ML داشته باشید که از GPUها بهره‌مند شوند."

"شما می‌توانید آنها را روی یک خوشه GPU کاملاً جداگانه اجرا کنید. شما نیازی ندارید که هزینه داشتن آن GPUها را در همان خوشه خود اضافه کنید. شما فقط می‌توانید بروید و خوشه GPU را در صورت نیاز اجاره کنید."

گزینه‌های زمان‌بندی

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

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

بلوغ سازمانی

کنترل‌های نسخه‌بندی DAG، ارتقاءهای امنیتی، قابلیت‌های اجرای از راه دور و انعطاف‌پذیری زمان‌بندی وظایف آپاچی ایرفلو 3.0، آن را برای تعداد فزاینده‌ای از موارد استفاده مفید می‌سازد. آخرین نسخه همچنین امکان backfill را فراهم می‌کند، بنابراین سازمان‌ها می‌توانند وظایف از دست رفته را به صورت ناهمزمان دوباره اجرا کنند، پیشرفت آنها را نظارت کنند و آنها را لغو کنند.

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