AWS Lambda وStep Functions ببساطة: دليل للمبتدئين
تعرّف على AWS Lambda وStep Functions، وهما خدمتان أساسيتان من خدمات AWS بدون خوادم (serverless)، وحالات استخدامهما وكيفية استخدامهما معًا لإنشاء سير عمل آلي.
InSkillCoach
AWS Lambda وStep Functions ببساطة: دليل للمبتدئين
مقدمة
يُعد AWS Lambda وAWS Step Functions من الخدمات الأساسية في AWS التي تعمل بدون خوادم (serverless)، وتتيحان تنفيذ الشيفرة البرمجية دون إدارة أي بنية تحتية. سيساعدك هذا المقال على فهم هاتين الخدمتين والفروق بينهما، وكيفية استخدامهما معًا لإنشاء سير عمل آلي.
AWS Lambda: تنفيذ الشيفرة عند الطلب
ما الغرض منه؟
يُستخدم Lambda لتنفيذ دالة قصيرة (مثل مهمة صغيرة)، فقط عند الحاجة إليها. لا حاويات ولا خوادم.
متى تستخدمه؟
- عندما تريد الاستجابة لحدث فقط (مثل: استدعاء API، أو وصول صورة إلى S3…)
- عندما تكون شيفرتك قصيرة ولا تعمل إلا لبضع ثوانٍ في كل مرة
- عندما تريد الدفع مقابل الاستخدام الفعلي فقط
مثال عملي:
يرسل أحدهم نموذجًا على موقعك، وتريد إرسال بريد إلكتروني تلقائيًا.
تكتب دالة تقوم بذلك (بلغة Python أو Node)، ثم تقول لـ Lambda:
“نفّذ هذه الشيفرة فقط عند إرسال النموذج.”
AWS Step Functions: تنسيق سير العمل
ما الغرض منه؟
تتيح Step Functions التنسيق بين عدة دوال Lambda وخدمات AWS الأخرى ضمن سير عمل مرئي ودون كتابة شيفرة.
متى تستخدمه؟
- عندما يتطلب لديك إجراء ما عدة خطوات
- عندما تريد التعامل مع الأخطاء وإعادة المحاولات (retries) بأسلوب أنيق
- عندما تريد عرض تنفيذ سير العمل ومتابعته بصريًا
مثال عملي:
لديك عملية تسجيل مستخدم تتطلب عدة خطوات:
- التحقق من المعلومات
- إنشاء حساب في قاعدة البيانات
- إرسال بريد إلكتروني للتأكيد
- إنشاء ملف شخصي افتراضي
يمكنك تنسيق كل ذلك باستخدام Step Functions دون كتابة أي شيفرة تنسيق.
المقارنة مع Fargate
| الخاصية | Fargate | Lambda |
|---|---|---|
| نوع التطبيق | تطبيق كامل | دالة قصيرة / مهمة واحدة |
| صيغة النشر | حاوية Docker | شيفرة (ملف .js، .py، إلخ) |
| متى يبدأ العمل؟ | يعمل دائمًا أو عند الطلب | فقط عند حدوث شيء ما |
| مدة التنفيذ | مدة طويلة (دقائق، ساعات، أيام) | مدة قصيرة (بضع ثوانٍ، بحد أقصى 15 دقيقة) |
| الاستخدام المعتاد | واجهات API للويب، الواجهة الخلفية، المواقع، الخدمات المصغّرة | المهام المتقطعة، الأتمتة، واجهات API الخفيفة |
| مستوى التحكم | متوسط (تدير حاويتك بنفسك) | ضعيف جدًا (تدير الشيفرة فقط) |
| الدفع | بالدقيقة لكل حاوية | بحسب عدد الاستدعاءات ومدة التنفيذ الدقيقة |
حالات استخدام عملية
مثال لموقع تجارة إلكترونية:
- لديك واجهة خلفية كاملة تتضمن سلة المشتريات وتسجيل الدخول والدفع → Fargate
- عندما يُجري أحدهم عملية شراء، تريد إرسال إيصال عبر البريد الإلكتروني → Lambda
- تريد تنسيق عملية الشراء بأكملها → Step Functions
مثال لنظام معالجة الصور:
- تريد معالجة الصور عند رفعها → Lambda
- تريد تنسيق عدة مراحل (تغيير الحجم، الضغط، التحليل) → Step Functions
كيف يعمل Lambda وStep Functions معًا
تستخدم Step Functions خدمة Lambda كإحدى “الحالات” (steps) الممكنة فيها. إليك كيفية تكاملهما:
- تنشئ عدة دوال Lambda لمهام مختلفة
- تحدد سير عمل في Step Functions يستدعي هذه الدوال بترتيب معيّن
- تتولى Step Functions إدارة التنفيذ وإعادة المحاولات ومعالجة الأخطاء
مثال على سير عمل في Step Functions
{
"Comment": "Un workflow de traitement de commande",
"StartAt": "VérifierCommande",
"States": {
"VérifierCommande": {
"Type": "Task",
"Resource": "arn:aws:lambda:region:account:function:VerifierCommande",
"Next": "TraiterPaiement"
},
"TraiterPaiement": {
"Type": "Task",
"Resource": "arn:aws:lambda:region:account:function:TraiterPaiement",
"Next": "PréparerLivraison"
},
"PréparerLivraison": {
"Type": "Task",
"Resource": "arn:aws:lambda:region:account:function:PreparerLivraison",
"End": true
}
}
}
أفضل الممارسات
بالنسبة إلى Lambda
- اجعل الدوال صغيرة ومركّزة: دالة واحدة = مهمة واحدة
- استخدم مهلات زمنية (timeouts) مناسبة: الحد الأقصى 15 دقيقة لـ Lambda
- عالج الأخطاء بشكل صحيح: أعد رموز أخطاء مناسبة
- استخدم متغيرات البيئة للإعدادات
- حسّن حزمة النشر لتقليل أزمنة بدء التشغيل
بالنسبة إلى Step Functions
- صمّم سير عمل متماثل الأثر (idempotent): يجب أن يكون من الممكن تنفيذه عدة مرات دون مشكلة
- استخدم مهلات زمنية مناسبة لكل حالة
- طبّق معالجة قوية للأخطاء مع حالات للاسترداد
- استخدم الفروع الشرطية للتعامل مع سيناريوهات مختلفة
- قلّل من تعقيد سير العمل للحفاظ على سهولة قراءته
الخاتمة
يُعد AWS Lambda وStep Functions خدمتين قويتين تتيحان إنشاء تطبيقات serverless متطورة دون إدارة أي بنية تحتية. يُعد Lambda مثاليًا لتنفيذ الشيفرة عند الطلب، بينما تتيح Step Functions تنسيق عدة دوال وخدمات ضمن سير عمل معقد.
بفهم نقاط قوة كل خدمة وحالات استخدامها، ستتمكن من تصميم بنى serverless فعّالة وقابلة للتوسع.
موارد إضافية
نبذة عن InSkillCoach
خبير في التدريب والتقنيات
مدرّب متخصص في التقنيات المتقدمة والذكاء الاصطناعي، تدعمه شركة GNeurone Inc.
الشهادات:
- AWS Certified Solutions Architect – Professional
- شهادات Google Cloud
- Microsoft Certified: DevOps Engineer Expert
- Certified Kubernetes Administrator (CKA)
- CompTIA Security+
التعليقات
التعليقات مدعومة عبر GitHub Discussions
سجّل الدخول باستخدام GitHub للمشاركة في النقاش