Function-as-a-Service (FaaS) is an event-driven serverless cloud computing model in which small, stateless functions are invoked in response to events, such as HTTP requests, new database entries, or messages. Current FaaS platform assume that each function invocation corresponds to a single event. However, from an application perspective, it is desirable to invoke functions in response to a collection of events of different types or only with every n\textsuperscript{th} event. To implement this today, a function would need additional state management, e.g., in a database, and custom logic to determine whether its trigger condition is fulfilled and the actual application code should run. In such an implementation, most function invocations would be rendered essentially useless, leading to unnecessarily high resource usage, latency, and cost for applications. In this paper, we introduce multi-event triggers, through which complex conditions for function invocations can be specified. Specifically, we introduce abstractions for invoking functions based on a set of $n$ events and joins of multiple events of different types. This enables application developers to define intricate conditions for function invocations, workflow steps, and complex event processing. Our evaluation with a proof-of-concept prototype shows that this reduces event--invocation latency by 62.5\% in an incident detection use-case and that our system can handle more than 300,000 requests per second on limited hardware, which is sufficient load for implementation in large FaaS platforms.
نموذج الدوال كخدمة (FaaS) هو نموذج حوسبة سحابية بدون خادم موجه بالأحداث، حيث يتم استدعاء دوال صغيرة بدون حالة استجابة للأحداث (مثل طلبات HTTP أو إدخالات قاعدة البيانات الجديدة أو الرسائل). تفترض منصات FaaS الحالية أن كل استدعاء دالة يتوافق مع حدث واحد. ومع ذلك، من منظور التطبيق، يرغب المطورون في أن تستجيب الدوال لمجموعات من أنواع الأحداث المختلفة أو فقط عند كل حدث n. لتحقيق ذلك، تحتاج الدوال إلى إدارة حالة إضافية (مثل قواعس البيانات) ومنطق مخصص لتحديد ما إذا كانت شروط التشغيل مستوفاة. تقترح هذه الورقة محفزات متعددة الأحداث (multi-event triggers)، والتي تسمح بتحديد شروط استدعاء دوال معقدة. تُظهر نتائج التقييم أن هذا الأسلوب يقلل من كمون الحدث إلى الاستدعاء بنسبة 62.5% في حالات الاستخدام الخاصة بكشف الأحداث، وأن النظام يمكنه التعامل مع أكثر من 300,000 طلب/ثانية على أجهزة محدودة.
تواجه منصات FaaS الحالية قيداً أساسياً: يمكن لكل استدعاء دالة أن يستجيب لحدث واحد فقط. ومع ذلك، في التطبيقات العملية، غالباً ما يكون هناك حاجة لتنفيذ أنماط تشغيل أكثر تعقيداً:
نمط المروحة الداخلة/الدمج (Fan-in/Join): الحاجة إلى جمع أحداث متعددة من أنواع مختلفة قبل تشغيل الدالة
تشغيل العد: تشغيل الدالة مرة واحدة فقط لكل n حدث مستقبل
تشغيل الشروط المعقدة: بناءً على مجموعات AND/OR من أنواع الأحداث والكميات
للحفاظ على مزايا نموذج برمجة FaaS (الاقتران الضعيف والتوسع التلقائي وسهولة التطوير)، يجب دمج منطق محفزات متعددة الأحداث في آلية التشغيل بمنصات FaaS، بدلاً من ترك مطوري التطبيقات يتعاملون معها يدوياً.
تسمح محفزات متعددة الأحداث للمطورين بتحديد قواعد تشغيل معقدة تحدد متى يتم استدعاء الدالة عند استيفاء مجموعات أحداث معينة. تتكون قواعد التشغيل من أنواع الأحداث والكميات المقابلة، وتدعم مجموعات شروط AND و OR.
يتمثل التفرد في هذا الحل في أن الدالة تُستدعى فقط عند استيفاء شروط التشغيل الكاملة، مما يقلل من التنفيذات غير الضرورية ويتجنب الحاجة إلى آليات القفل لمعالجة حالات السباق.
تستشهد الورقة بـ 34 مرجعاً ذا صلة، تغطي بشكل أساسي:
أبحاث منصات FaaS وآليات التشغيل
تنسيق سير العمل بدون خادم
إدارة الحالة ومعالجة الأحداث المعقدة
تقييم الأداء والاختبارات المعيارية
تتضمن المراجع الرئيسية تحليل معمارية AWS Lambda والمسوحات الشاملة للحوسبة بدون خادم وأنظمة تنسيق سير العمل ذات الصلة.
تقترح هذه الورقة حلاً مبتكراً لقيد مهم في منصات FaaS، وتتمتع بقيمة نظرية وعملية قوية جداً. يوازن تصميم محرك MET بين الأداء وقابلية التوسع، ويتحقق التقييم التجريبي بشكل كافٍ من فعالية الحل. على الرغم من وجود مجال للتحسين في جوانب التوزيع الجغرافي وتحمل الأعطال، إلا أنها بشكل عام عمل بحثي عالي الجودة.