خدمة AWS Lambda

خدمة AWS Lambda هي خدمة وظائف كخدمة (FaaS) تعتمد على الأحداث ولا تتطلب خوادم ، وهي مقدمة من أمازون كجزء من خدمات أمازون السحابية (AWS ). صُممت هذه الخدمة لتمكين المطورين من تشغيل التعليمات البرمجية دون الحاجة إلى توفير الخوادم أو إدارتها. تقوم الخدمة بتنفيذ التعليمات البرمجية استجابةً للأحداث ، وتدير تلقائيًا موارد الحوسبة اللازمة لتلك التعليمات. تم إطلاقها في 13 نوفمبر 2014. [ 1 ]

مواصفة

تعمل كل نسخة من AWS Lambda ضمن بيئة معزولة وخفيفة الوزن مدعومة بأجهزة افتراضية مصغرة Firecracker . تُهيأ هذه الأجهزة الافتراضية المصغرة ببيئة تشغيل مبنية على Amazon Linux (Amazon Linux AMI أو Amazon Linux 2). يوفر Firecracker عزلًا قائمًا على المحاكاة الافتراضية للأجهزة، بهدف تحقيق أداء قريب من أداء الأجهزة الفعلية مع أقل قدر من الحمل الزائد. تدّعي AWS أنه على عكس الأجهزة الافتراضية التقليدية، يتم تشغيل هذه الأجهزة الافتراضية المصغرة في أجزاء من الثانية، مما يتيح تنفيذًا سريعًا وآمنًا للوظائف مع استهلاك ضئيل للذاكرة. تم تحسين Amazon Linux AMI خصيصًا لأحمال العمل السحابية الأصلية وأحمال العمل بدون خوادم، بهدف توفير بيئة تشغيل خفيفة الوزن وآمنة وعالية الأداء. [ 2 ] [ 3 ] [ 4 ]

اعتبارًا من عام 2025تدعم خدمة AWS Lambda لغات Node.js و Python و Java و Go و .NET و Ruby وبيئات التشغيل المخصصة. [ 5 ]

اعتبارات الأداء عند بدء التشغيل البارد والنشر

تتميز لغتا Rust وGo عمومًا بأوقات بدء تشغيل باردة أقل في AWS Lambda مقارنةً بـ Java وC# [ 6 وذلك لأنهما تُترجمان إلى ملفات ثنائية ثابتة أصلية، مما يُلغي الحاجة إلى آلة افتراضية (JVM أو .NET CLR) ويُقلل من عبء تهيئة وقت التشغيل. تتضمن Go بعض عمليات التهيئة البسيطة لوقت التشغيل، بما في ذلك جمع البيانات المهملة وإدارة الروتينات الفرعية، ولكن تأثيرها على وقت بدء التشغيل البارد منخفض نسبيًا. أما Rust، التي تُترجم بالكامل مسبقًا (AOT) ولا تتطلب وقت تشغيل، فغالبًا ما تُحقق أقل زمن استجابة لبدء التشغيل البارد بين اللغات المدعومة. [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ]

تعمل لغتا Java وC# على بيئات تشغيل مُدارة، مما يُضيف زمن استجابة إضافيًا لبدء التشغيل البارد نتيجةً لتهيئة وقت التشغيل والترجمة الفورية (JIT). مع ذلك، ساهمت التحسينات الحديثة في التخفيف من بعض هذه التحديات. يدعم .NET 7 و.NET 8 الترجمة المسبقة (AOT)، مما يُقلل من أوقات بدء التشغيل البارد عن طريق الترجمة المسبقة للتعليمات البرمجية. [ 13 ] [ 14 ] بالإضافة إلى ذلك، تُهيئ خدمة AWS Lambda SnapStart لـ Java 11 و17 وقت التشغيل وتُنشئ لقطات لحالة التنفيذ، مما يُقلل بشكل كبير من زمن بدء التشغيل البارد للوظائف المُعتمدة على Java. [ 15 ] [ 16 ] على الرغم من هذه التحسينات، تحافظ لغتا Rust وGo عادةً على أوقات بدء تشغيل بارد أقل نظرًا لاعتمادهما المحدود على وقت التشغيل. [ 7 ] [ 8 ]

في أحمال العمل طويلة الأمد، قد يُحسّن تجميع JIT في Java و.NET سرعة التنفيذ من خلال التحسينات الديناميكية. مع ذلك، تعتمد هذه الفائدة على نوع حمل العمل، وغالبًا ما يوفر تجميع AOT في Rust أداءً أكثر اتساقًا، خاصةً للمهام التي تعتمد بشكل كبير على وحدة المعالجة المركزية. [ 17 ] أما بالنسبة لاستدعاءات Lambda قصيرة الأمد، فيُحافظ Rust وGo عمومًا على أداء أكثر قابلية للتنبؤ، حيث قد لا يتوفر الوقت الكافي لتحسينات JIT للتأثير. [ 8 ] [ 18 ]

تاريخيًا، تطلّب نشر لغتي Rust وGo جهدًا إضافيًا نظرًا لتحديات الترجمة المتقاطعة والربط الثابت. غالبًا ما تتطلب Rust، على وجه الخصوص، ربطًا ثابتًا قائمًا على MUSL لضمان التوافق مع AWS Lambda. مع ذلك، ساهمت التطورات في أدوات النشر، بما في ذلك نموذج تطبيقات AWS بدون خادم (AWS SAM) وGitHub Actions وصور حاويات Lambda، في تبسيط هذه العملية. تستفيد Go من دعم الربط الثابت الأصلي، مما يجعل عملية نشرها سهلة نسبيًا. كما يُقلل دعم AWS Lambda لصور الحاويات من مخاوف التوافق مع وقت التشغيل، مما يُتيح استخدام أوقات تشغيل وتوابع مُخصصة. [ 7 ] [ 8 ] [ 19 ] [ 20 ] [ 21 ] [ 22 ]

سمات

نماذج التزامن

تحدد خاصية التزامن المحجوز الحد الأقصى لعدد عمليات التنفيذ المتزامنة لوظيفة معينة، وتحجز هذه السعة من الحد الإجمالي للتزامن في الحساب. مع ذلك، فهي لا تُبقي بيئات التنفيذ مُهيأة، ولا تضمن استمرار تشغيل أي من مثيلات الوظيفة عندما تكون في وضع الخمول. [ 23 ]

وعلى النقيض من ذلك، تحافظ خاصية التزامن المُهيأ مسبقًا على عدد محدد من بيئات التنفيذ المُهيأة مسبقًا، مما يضمن عدم تعرض الوظيفة لبداية باردة وعدم انخفاضها إلى الصفر. [ 24 ]

عنوان URL لوظيفة لامدا

يمنح عنوان URL الخاص بوظيفة Lambda برنامج Lambda عنوان URL فريدًا ودائمًا يمكن الوصول إليه من قبل المستخدمين المصادق عليهم وغير المصادق عليهم على حد سواء. [ 25 ]

طبقة لامدا

طبقة AWS Lambda عبارة عن ملف مضغوط (ZIP) يحتوي على مكتبات أو أطر عمل أو تعليمات برمجية مخصصة يمكن إضافتها إلى وظائف AWS Lambda. [ 26 ] اعتبارًا من ديسمبر 2024، تعاني طبقات AWS Lambda من قيود كبيرة: [ 8 ] [ 27 ]

  • لا يوجد دعم للترقيم الدلالي للإصدارات.
  • عدم التوافق مع أدوات فحص الأمان الرئيسية.
  • المساهمة في الحد الأقصى لحجم البيانات في لامدا وهو 250 ميجابايت.
  • أعاق إجراء الاختبارات المحلية.
  • لا توجد تحسينات من نوع "التخلص من الأشجار" .

سهولة الحمل

يمثل الانتقال من AWS Lambda إلى خدمات الحوسبة الأخرى التابعة لـ AWS، مثل Amazon ECS، تحدياتٍ نظرًا للتكامل الوثيق مع واجهات برمجة تطبيقات AWS Lambda، وهو ما يُعرف غالبًا باسم "تقييد الخدمة". [ 28 ] [ 29 ] توفر أدوات مثل AWS Lambda Web Adapter مسارًا قابلًا للنقل ، حيث تُمكّن المطورين من بناء تطبيقات ويب باستخدام أُطر عمل مألوفة ضمن نمط تصميم Lambda المتجانس. [ 28 ] [ 29 ] مع ذلك، يُفرض هذا النهج قيودًا، بما في ذلك ضعف دقة التنبيهات وضوابط الوصول، واحتمالية حدوث تأخيرات في بدء التشغيل البارد مع التبعيات الكبيرة، ومحدودية ملاءمته لواجهات برمجة التطبيقات غير HTTP. [ 8 ]

أدوات

AWS Lambda Powertools هي مكتبة مفتوحة المصدر طورتها AWS، توفر أدوات مساعدة لوظائف AWS Lambda. [ 30 ] تشمل الأدوات الأساسية التسجيل المنظم، والمقاييس، والتتبع. كما توفر أدوات أخرى لحالات الاستخدام الشائعة عند تطوير وظائف AWS Lambda. وهي متوفرة بلغات Python، [ 31 ] وJava، [ 32 ] وNet، [ 33 ] وTypeScript. [ 34 ] اعتبارًا من مارس 2025، تتضمن أيضًا دعمًا لإخفاء البيانات في Python. [ 35 ]

تعدد الخيوط وقابلية التوسع في AWS Lambda

اعتبارًا من مارس 2025، تدعم خدمة AWS Lambda توسعًا رأسيًا محدودًا عن طريق زيادة عدد وحدات المعالجة المركزية الافتراضية (vCPUs) من خلال تخصيص الذاكرة. ومع ذلك، لا يسمح هذا بزيادة أداء الخيوط المفردة، حيث تبقى سرعة الساعة ثابتة. عندما تُخصص دالة ما وحدة معالجة مركزية افتراضية واحدة فقط، تتشارك خيوط متعددة نفس النواة، مما يؤدي إلى تبديل السياق بدلًا من التنفيذ المتوازي الحقيقي. ونتيجة لذلك، يُعد تعدد الخيوط في بيئات وحدة المعالجة المركزية الافتراضية الواحدة مفيدًا بشكل أساسي لأحمال العمل التي تعتمد على الإدخال/الإخراج (I/O) أكثر من المهام كثيفة الحساب. [ 36 ] [ 37 ] [ 38 ] [ 39 ] [ 40 ]

يُتيح تخصيص ذاكرة إضافية في AWS Lambda استخدام وحدات معالجة مركزية افتراضية متعددة، مما يسمح بالتنفيذ المتوازي. مع ذلك، تبقى سرعة الساعة لكل نواة ثابتة، مما يحد من أداء الخيوط الفردية. يجعل هذا التكوين AWS Lambda مناسبًا لأحمال العمل التي تتوسع أفقيًا أو تستفيد من التوازي، ولكنه أقل مثالية للتطبيقات التي تتطلب أداءً عاليًا للخيط الواحد. [ 36 ] [ 37 ] [ 38 ] [ 39 ] [ 40 ]

حماية

في أبريل 2022، اكتشف الباحثون برمجية خبيثة لتعدين العملات الرقمية تستهدف خدمة AWS Lambda تُدعى "دينونيا". [ 41 ] [ 42 ] [ 43 ]

انظر أيضاً

مراجع

  1. تطوير تطبيقات بلا خوادم على AWS: بناء حلول بلا خوادم على نطاق المؤسسات . دار نشر أورايلي ميديا. 23 يناير 2024. ISBN 9781098141899.
  2. سبيغولون، مانويل؛ سينيك، ماكسيم؛ كولينا، ماتيو (9 يونيو 2023). تسريع تطوير جانب الخادم باستخدام فاستيفاي: دليل شامل لتطوير واجهات برمجة التطبيقات لبناء نظام خلفي قابل للتوسع لتطبيقات الويب الخاصة بك . دار نشر باكت. رقم ISBN 9781800568747.
  3. "Firecracker – تقنية افتراضية خفيفة الوزن للحوسبة بدون خوادم" .
  4. "أجهزة افتراضية صغيرة آمنة وسريعة للحوسبة بدون خوادم" .
  5. "أوقات تشغيل لامدا" .
  6. "تحسين امتدادات AWS Lambda في C# و Rust | مدونة AWS للحوسبة" . aws.amazon.com . 2023-04-13 . تم الاطلاع عليه بتاريخ 2025-03-20 .
  7. 1 2 3 تشابين، جون؛ روبرتس، مايك (2020). برمجة AWS Lambda: بناء ونشر تطبيقات بدون خادم باستخدام جافا . بكين، بوسطن، فارنهام، سيباستوبول، طوكيو: أورايلي. ISBN 978-1-4920-4102-3.
  8. 1 2 3 4 5 6 كوي، يان (17 أبريل 2017). بنى الحوسبة بلا خوادم على AWS: مع أمثلة باستخدام AWS Lambda . سيمون وشوستر. ISBN 9781638351146.
  9. "تشغيل لامدا: تحسين الأداء - الجزء 1 | مدونة الحوسبة في AWS" . aws.amazon.com . 2021-04-26 . تم الاطلاع عليه بتاريخ 2025-03-20 .
  10. "فهم دورة حياة بيئة تنفيذ Lambda - AWS Lambda" . docs.aws.amazon.com . تم الاطلاع عليه بتاريخ 20 مارس 2025 .
  11. "تعريف معالج دالة Lambda في Rust - AWS Lambda" . docs.aws.amazon.com . تم الاطلاع عليه بتاريخ 20 مارس 2025 .
  12. "تعريف معالجات وظائف Lambda في Go - AWS Lambda" . docs.aws.amazon.com . تم الاطلاع عليه بتاريخ 20 مارس 2025 .
  13. "بناء وظائف .NET Lambda باستخدام تجميع AOT الأصلي في AWS SAM - نموذج تطبيقات AWS بدون خادم" . docs.aws.amazon.com . تم الاطلاع عليه بتاريخ 20 مارس 2025 .
  14. "تقديم بيئة تشغيل .NET 8 لخدمة AWS Lambda | مدونة AWS للحوسبة" . aws.amazon.com . 22 فبراير 2024. تاريخ الاطلاع: 20 مارس 2025 .
  15. "تقليل عمليات بدء التشغيل الباردة لجافا على وظائف AWS Lambda باستخدام SnapStart | مدونة AWS للحوسبة" . aws.amazon.com . 29 نوفمبر 2022. تاريخ الاسترجاع: 20 مارس 2025 .
  16. "تحسين أداء بدء التشغيل باستخدام Lambda SnapStart - AWS Lambda" . docs.aws.amazon.com . تم الاطلاع عليه بتاريخ 20 مارس 2025 .
  17. "تجميع كود دالة .NET Lambda إلى تنسيق وقت التشغيل الأصلي - AWS Lambda" . docs.aws.amazon.com . تم الاطلاع عليه بتاريخ 20 مارس 2025 .
  18. "تخصيص سلوك بدء تشغيل وقت تشغيل Java لوظائف Lambda - AWS Lambda" . docs.aws.amazon.com . تم الاطلاع عليه بتاريخ 20 مارس 2025 .
  19. "بناء وظائف Lambda باستخدام Rust - AWS Lambda" . docs.aws.amazon.com . تم الاطلاع عليه بتاريخ 20 مارس 2025 .
  20. "بناء وظائف Rust Lambda باستخدام Cargo Lambda في AWS SAM - نموذج تطبيقات AWS بدون خادم" . docs.aws.amazon.com . تم الاطلاع عليه بتاريخ 20 مارس 2025 .
  21. "إنشاء مسار CI/CD مبدئي باستخدام AWS SAM - نموذج تطبيقات AWS بدون خادم" . docs.aws.amazon.com . تم الاطلاع عليه بتاريخ 20 مارس 2025 .
  22. "نقل وظائف AWS Lambda إلى معالجات AWS Graviton2 القائمة على معمارية Arm | مدونة AWS للحوسبة" . aws.amazon.com . 24 يناير 2022. تاريخ الاطلاع: 20 مارس 2025 .
  23. "تكوين التزامن المحجوز لوظيفة - AWS Lambda" . docs.aws.amazon.com . تم الاطلاع عليه بتاريخ 2025-04-08 .
  24. "تكوين التزامن المُهيأ لوظيفة - AWS Lambda" . docs.aws.amazon.com . تم الاطلاع عليه بتاريخ 2025-04-08 .
  25. "عناوين URL لوظائف Lambda - AWS Lambda" . docs.aws.amazon.com . مؤرشف من الأصل بتاريخ 2024-03-01 . تم الاطلاع عليه بتاريخ 2024-03-01 .
  26. "إدارة تبعيات Lambda باستخدام الطبقات" . مؤرشف من الأصل بتاريخ 4 فبراير 2024. تم الاطلاع عليه بتاريخ 2 فبراير 2024 .
  27. إيغار، غاريث (29 ديسمبر 2021). هندسة البيانات باستخدام AWS: تعرّف على كيفية تصميم وبناء مسارات تحويل البيانات السحابية باستخدام AWS . دار نشر Packt. رقم ISBN 9781800569041.
  28. 1 2 "محول ويب AWS Lambda" . GitHub . مؤرشف من الأصل بتاريخ 28-11-2024 . تم الاطلاع عليه بتاريخ 29-11-2024 .
  29. 1 2 "كتلة لامدا" . مؤرشف من الأصل بتاريخ 26-11-2024 . تم الاطلاع عليه بتاريخ 29-11-2024 .
  30. "تبسيط أفضل ممارسات الحوسبة بلا خوادم باستخدام Lambda Powertools | مدونة AWS مفتوحة المصدر" . aws.amazon.com . 2020-06-22 . تاريخ الاسترجاع: 2025-03-22 .
  31. "الصفحة الرئيسية - أدوات Powertools لخدمة AWS Lambda (Python)" . docs.aws.amazon.com . تم الاطلاع عليه بتاريخ 16-10-2025 .
  32. "الصفحة الرئيسية - أدوات Powertools لخدمة AWS Lambda (جافا)" . docs.aws.amazon.com . تم الاطلاع عليه بتاريخ 16-10-2025 .
  33. "Powertools for AWS Lambda (.NET) - Powertools for AWS Lambda (.NET)" . docs.aws.amazon.com . تم الاطلاع عليه بتاريخ 16 أكتوبر 2025 .
  34. "الصفحة الرئيسية - أدوات Powertools لخدمة AWS Lambda (TypeScript)" . docs.aws.amazon.com . تم الاطلاع عليه بتاريخ 16-10-2025 .
  35. "إخفاء البيانات - أدوات Powertools لـ AWS Lambda (Python)" . docs.powertools.aws.dev . تم الاطلاع عليه بتاريخ 22-03-2025 .
  36. 1 2 "تكوين ذاكرة وظائف Lambda - AWS Lambda" . docs.aws.amazon.com . تم الاطلاع عليه بتاريخ 18-03-2025 .
  37. ١ ٢ "معالجة البيانات المجمعة بكفاءة باستخدام التوازي في AWS Lambda | مدونة AWS للحوسبة" . aws.amazon.com . ٢٠٢٤-٠٨-٢٨ . تم الاطلاع عليه بتاريخ ٢٠٢٥-٠٣-١٨ .
  38. 1 2 "المعالجة المتوازية في بايثون باستخدام AWS Lambda | مدونة AWS للحوسبة" . aws.amazon.com . 2017-09-11 . تم الاطلاع عليه بتاريخ 2025-03-18 .
  39. ١ ٢ "تدعم خدمة AWS Lambda الآن ما يصل إلى ١٠ جيجابايت من الذاكرة و٦ أنوية معالجة افتراضية لوظائف Lambda" . أمازون لخدمات الويب، تم الاطلاع عليه بتاريخ ١٨ مارس ٢٠٢٥ .
  40. 1 2 "تشغيل لامدا: تصميم التطبيق - التوسع والتزامن: الجزء 2 | مدونة AWS للحوسبة" . aws.amazon.com . 2021-02-08 . تم الاطلاع عليه بتاريخ 2025-03-18 .
  41. "كادو يكتشف دينونيا: أول برمجية خبيثة تستهدف لامدا تحديدًا" . مؤرشف من الأصل بتاريخ 15 نوفمبر 2024. تم الاطلاع عليه بتاريخ 4 نوفمبر 2024 .
  42. "برمجيات خبيثة جديدة لتعدين العملات المشفرة تستهدف خدمة AWS Lambda: باحثون | أخبار التكنولوجيا - صحيفة إنديان إكسبريس" . مؤرشف من الأصل بتاريخ 15 مارس 2024. تم الاطلاع عليه بتاريخ 4 نوفمبر 2024 .
  43. «باحث يكتشف برمجية خبيثة لتعدين العملات الرقمية تستهدف خدمة AWS Lambda» . مؤرشف من الأصل بتاريخ 5 أبريل 2024. تم الاطلاع عليه بتاريخ 4 نوفمبر 2024 .