AWS Certified Cloud Practitioner
خدمات تكامل التطبيقات
تعرّف على خدمات تكامل التطبيقات في AWS التي تربط المكوّنات المفصولة: Amazon SQS لطوابير الرسائل، و Amazon SNS للنشر والاشتراك، و Amazon EventBridge لتوجيه الأحداث، و AWS Step Functions لتنسيق سير العمل.
- اشرح كيف تساعدك خدمات تكامل التطبيقات على بناء أنظمة مفصولة ومدفوعة بالأحداث
- صِف وظيفة كل من Amazon SQS و Amazon SNS و Amazon EventBridge و AWS Step Functions
- قارن بين طابور الرسائل (SQS) وموضوع النشر والاشتراك (SNS)
- طابِق حاجة تكامل موصوفة بالخدمة الصحيحة في AWS
لماذا يهم هذا
التطبيق الحديث نادراً ما يكون برنامجاً واحداً. هو أجزاء صغيرة كثيرة يسلّم كلٌّ منها العمل إلى الآخر: طبقة الويب تستقبل الطلب، ومكوّن آخر يخصم من البطاقة، وثالث يحدّث المخزون، ورابع يرسل بريداً. فإذا استدعت هذه الأجزاء بعضها مباشرة، يستطيع مكوّن واحد بطيء أو متعطّل أن يجمّد النظام كله.
تحلّ خدمات تكامل التطبيقات هذه المشكلة. تتيح لأجزاء التطبيق أن تتخاطب دون ارتباط وثيق، وهو ما نسمّيه الفصل (decoupling). تمرّر المكوّنات الرسائل أو الأحداث عبر خدمة مُدارة بدلاً من استدعاء بعضها مباشرة، فيستطيع جزء أن يتعطّل أو يبطئ أو يتوسّع وحده دون أن يكسر البقية. يختبر CLF-C02 أربعاً من هذه الخدمات على مستوى التعرّف: Amazon SQS و Amazon SNS و Amazon EventBridge و AWS Step Functions. ومهمّتك أن تطابق الحاجة الموصوفة بالخدمة الصحيحة.
Amazon SQS: طوابير الرسائل
Amazon Simple Queue Service (Amazon SQS) طابور رسائل مُدار بالكامل. يضع المنتِج الرسائل في الطابور، ويسحبها المستهلك ليعالجها واحدة تلو الأخرى بإيقاعه الخاص. يخزّن الطابور الرسائل بينهما، فلا يحتاج المنتِج والمستهلك إلى أن يكونا متاحين في اللحظة نفسها.
هذه هي الطريقة الكلاسيكية لفصل واجهة سريعة عن عمل خلفي أبطأ. تخيّل موقعاً يقبل رفع الصور. بدلاً من إبقاء المستخدم ينتظر تغيير حجم كل صورة، يضع الموقع رسالة في طابور SQS ويردّ فوراً. ثم يقرأ عاملٌ منفصل الطابور ويغيّر حجم الصور حين يستطيع. وإذا تأخّر العامل أو أُعيد تشغيله، تنتظر الرسائل بأمان في الطابور.
يقدّم SQS نوعين من الطوابير ينبغي أن تعرفهما بالاسم:
- الطوابير القياسية (Standard) تمنح أقصى إنتاجية وتسليماً مرة واحدة على الأقل، مع ترتيب بأفضل جهد.
- طوابير FIFO (الوارد أولاً يخرج أولاً) تضمن معالجة الرسائل مرة واحدة بالضبط، وبالترتيب الذي أُرسلت به تماماً.
فكّر في SQS على أنه من نقطة إلى نقطة: كل رسالة موجَّهة ليعالجها مستهلك واحد.
Amazon SNS: النشر والاشتراك (fan-out)
Amazon Simple Notification Service (Amazon SNS) خدمة رسائل مُدارة بنمط النشر والاشتراك (pub/sub). يرسل الناشرون الرسائل إلى موضوع (topic)، فيدفع الموضوع نسخة من كل رسالة إلى كل مشترك. هذا نمط متعدّد إلى متعدّد، أو fan-out: رسالة واحدة تصل إلى وجهات كثيرة دفعة واحدة.
قد يكون المشتركون طوابير SQS، أو دوال AWS Lambda، أو نقاط HTTP/S، بل وحتى مستخدمين نهائيين عبر الرسائل النصية والبريد والإشعارات على الهاتف. فـ SNS هي الخدمة التي تلجأ إليها حين يحتاج حدث واحد إلى إطلاق عدة تفاعلات بالتوازي، أو حين تحتاج إلى إرسال إشعارات للأشخاص.
من أكثر التصاميم شيوعاً جمع SNS و SQS معاً. يرسل الناشر رسالة واحدة إلى موضوع SNS، فيسلّمها الموضوع إلى عدة طوابير SQS. ويغذّي كل طابور مستهلكاً مختلفاً، فتتفاعل الفوترة والشحن والتحليلات كلها مع حدث الطلب نفسه دون أن يعرف أحدها عن الآخر.
أسرع طريقة للتفريق بين SNS و SQS: SQS طابور يسحب منه مستهلك واحد، بينما SNS يدفع كل رسالة إلى عدة مشتركين.
Amazon EventBridge: ناقل الأحداث
Amazon EventBridge ناقل أحداث serverless. يستقبل ناقل الأحداث تدفّقاً من الأحداث ويوجّه كل واحد منها إلى المكان الصحيح وفق قواعد تحدّدها أنت. تطابق القاعدة الأحداث حسب محتواها، ثم ترسل الأحداث المطابِقة إلى هدف واحد أو أكثر، مثل دالة Lambda أو طابور SQS أو Step Functions.
ما يميّز EventBridge هو مصدر الأحداث. يستطيع استقبال أحداث من تطبيقاتك أنت، ومن خدمات AWS كثيرة، ومن تطبيقات SaaS خارجية مثل Zendesk أو Shopify. وهذا يجعله الخيار الطبيعي لبناء أنظمة مدفوعة بالأحداث تتفاعل مع نشاط في أدوات لا تتحكّم بها.
طريقة بسيطة لتثبيت الفرق: SNS يبثّ الرسالة إلى مشتركيه، بينما EventBridge يفحص كل حدث ويوجّهه بالقواعد، بما في ذلك أحداث شركاء SaaS.
AWS Step Functions: تنسيق سير العمل
تنقل الخدمات الثلاث الأولى رسائل أو أحداثاً فردية. أما AWS Step Functions فمختلفة: تنسّق سلسلة كاملة من الخطوات كسير عمل واحد.
تعرّف الخطوات كسير عمل مرئي (آلة حالات / state machine)، فتشغّلها Step Functions بالترتيب، وتمرّر البيانات من خطوة إلى التالية، وتعيد محاولة الخطوات التي تفشل، وتتابع حالة العملية بأكملها. هذا هو التنسيق (orchestration). ويناسب أي مهمة متعدّدة الخطوات يهمّ فيها الترتيب ومعالجة الأخطاء، مثل معالجة طلب، أو تشغيل خطّ بيانات، أو الموافقة على طلب.
تخيّل سير عمل طلب: تحقّق من الدفع، ثم احجز المخزون، ثم أرسل تأكيداً. فإذا فشل حجز المخزون، تستطيع Step Functions إعادة محاولته أو التفرّع إلى مسار آخر، دون أن تكتب أنت السباكة التي تتتبّع موضع العملية.
مقارنة سريعة
| الخدمة | ما هي | متى تلجأ إليها |
|---|---|---|
| Amazon SQS | طابور رسائل مُدار (قائم على السحب) | حين تحتاج إلى فصل المكوّنات وترك مستهلك واحد يعالج الرسائل بإيقاعه |
| Amazon SNS | رسائل نشر واشتراك (قائمة على الدفع) | حين يجب توزيع رسالة واحدة على عدة مشتركين، أو إشعار الأشخاص عبر الرسائل النصية أو البريد أو الإشعارات |
| Amazon EventBridge | ناقل أحداث serverless | حين تحتاج إلى توجيه الأحداث بالقواعد، خاصة من خدمات AWS أو تطبيقات SaaS |
| AWS Step Functions | تنسيق سير العمل | حين تحتاج إلى تشغيل عملية متعدّدة الخطوات بالترتيب، مع إعادة المحاولة ومعالجة الأخطاء |
نصائح للاختبار
- توجد خدمات تكامل التطبيقات لفصل أجزاء التطبيق حتى تتعطّل وتتوسّع باستقلالية.
- Amazon SQS طابور رسائل. يسحب مستهلك واحد كل رسالة. الطوابير القياسية تفضّل الإنتاجية، وطوابير FIFO تضمن الترتيب والمعالجة مرة واحدة بالضبط.
- Amazon SNS نشر واشتراك. يوزّع رسالة واحدة على عدة مشتركين (طوابير SQS، و Lambda، و HTTP، والرسائل النصية، والبريد، والإشعارات). وجمع SNS مع SQS هو نمط fan-out الكلاسيكي.
- فرّق بين SQS و SNS: SQS طابور يقرأ منه مستهلك واحد، و SNS يدفع إلى عدة مشتركين دفعة واحدة.
- Amazon EventBridge ناقل أحداث serverless يوجّه الأحداث بالقواعد ويستطيع استيعاب أحداث من تطبيقات SaaS.
- AWS Step Functions تنسّق سير العمل متعدّد الخطوات بترتيب وإعادة محاولة ومعالجة أخطاء مدمجة. اخترها حين يصف السيناريو تنسيق عدة خطوات.
