🎯 Building Decoupled Architectures — بناء بنى مفصولة
فصل مكونات البنية (Decoupling) هو نمط معماري أساسي لبناء تطبيقات مرنة وقابلة للتوسع والصيانة. يشرح هذا المقال فوائد الفصل بين مكونات التطبيق وخدمات AWS التي تمكن ذلك، مثل Amazon SQS (قوائم الرسائل) و SNS (الإشعارات) و EventBridge (التوجيه بالأحداث).
1️⃣ Decoupling Architecture Concept — مفهوم فصل البنية المعمارية
الفصل يزيل التبعيات المباشرة بين المكونات المرتبطة بحيث يمكن لكل مكون أن يعمل ويفشل ويتوسع بشكل مستقل عن الآخرين — مما يزيد مرونة النظام وقابليته للتوسع.
2️⃣ Tight Coupling in Three-Tier Architecture — الاقتران المتماسك في البنية ثلاثية الطبقات
في بنية ثلاثية الطبقات، الطبقات (عرض، منطق أعمال، قاعدة بيانات) قد تكون مطورة بشكل مستقل لكنها تبقى متماسكة مع بعضها. الاتصال بين الطبقات متزامن (Synchronous) — يرسل المصدر طلباً وينتظر الرد قبل المتابعة.
- إذا فشل خادم التطبيق أو خادم الويب، فإن النظام بأكمله يتوقف وتظهر الأخطاء للعميل.
- تحديث خادم التطبيق للصيانة يتطلب إيقاف النظام بأكمله.
- توسيع إحدى الطبقات يتطلب تحديث الكود لمعرفة عناوين IP الجديدة ومتى يتم توجيه الحركة لكل منها.
3️⃣ Tight Coupling Increases Scaling Complexity — الاقتران المتماسك يزيد تعقيد التوسع
كلما زادت المكونات المتماسكة، زادت التوصيلات التي يجب إضافتها أو إزالتها. إضافة خادم ويب جديد يتطلب 3 توصيلات جديدة. تعطل أحد خوادم التطبيق يؤثر على كل خوادم الويب المرتبطة به مباشرة.
- إضافة خادم ويب جديد: توصيلتان من Route 53 إلى الخادم الجديد + توصيلتان من الخادم الجديد إلى خادمي التطبيق = 3 توصيلات.
- إضافة خادم تطبيق جديد: توصيلة من كل خادم ويب إلى خادم التطبيق الجديد = 3 توصيلات إضافية.
- تعطل خادم تطبيق واحد: أداء كل خوادم الويب يتأثر لأنها متصلة مباشرة به.
4️⃣ Decoupling Between Layers — الفصل بين الطبقات
مع Loose coupling، تقلل التبعيات باستخدام حلول مُدارة كوسيط بين طبقات النظام — الوسيط يعالج الأعطال والتوسع تلقائياً.
- إضافة ALB أمام خوادم الويب — يوزع حركة المرور ويراقب صحة المثيلات.
- إضافة ALB بين خوادم الويب وخوادم التطبيق — إدارة تلقائية للأحمال وتوجيه الفشل.
- إضافة خادم ويب جديد الآن يتطلب توصيلتين فقط (واحدة إلى ALB1 والأخرى إلى ALB2).
5️⃣ Tight Coupling Within the Application — الاقتران المتماسك داخل التطبيق
المشكلة في وظيفة واحدة يمكن أن تبطئ أو توقف كل وظائف التطبيق الأخرى، وتغيير وظيفة واحدة يتطلب وضع التطبيق بأكمله في الصيانة.
- تباطؤ في وظيفة واحدة (مثل تحويل الصور) يضعف أداء التطبيق بأكمله.
- تعطل وظيفة واحدة يؤدي إلى توقف الاستجابة لكل الطلبات الواردة.
- تغيير وظيفة واحدة يستلزم إعادة نشر التطبيق بالكامل.
6️⃣ Decoupling: Microservices Architecture — الفصل: بنية الخدمات المصغرة
هذا ينتج بنية تطبيق بمكونات قابلة لإعادة الاستخدام وقابلة للتوسع وموثوقة. الميكروسيرفسات منفصلة (Loosely coupled) وتتواصل بشكل متزامن أو غير متزامن.
- كل ميكروسيرفس يعمل في حاوية (Container) مستقلة — يمكن توسيعه بشكل منفصل.
- فشل ميكروسيرفس واحد لا يؤثر على الميكروسيرفسات الأخرى.
- يمكن إضافة ميزات إلى مكون مع تقليل المخاطر على المكونات التي تعتمد عليه.
7️⃣ Offloading Requests: Amazon SQS and Amazon SNS — تفريغ الطلبات: Amazon SQS و Amazon SNS
يتضمن هذا النموذج مكوناً يولد الأحداث (Producer) وآخر يستهلكها (Consumer) — يتواصلان عبر وسيط بدلاً من الاتصال المباشر.
- Producer: المكون الذي يولد الأحداث — يضع رسالة في الطابور ويعود فوراً للعميل بدون انتظار.
- Consumer: المكون الذي يعالج الرسائل — يسحب الرسائل من الطابور ويعالجها بالسرعة المناسبة.
- Queue/Topic: وسيط التخزين الدائم — يفصل المنتج عن المستهلك ويمتص التقلبات في الضغط.
8️⃣ Decoupling with Amazon MQ — الفصل باستخدام Amazon MQ
Amazon MQ يخزن الرسائل عبر Amazon EFS أو Amazon EBS، ويعطي العملاء خارج AWS Cloud القدرة على إعادة استخدام الوظائف بطريقة مرنة ومتسقة.
9️⃣ Decoupling Solution Categories — فئات حلول الفصل
- Synchronous – Infrastructure level: ELB (مثل ALB بين الطبقات).
- Synchronous – Application level: Microservice architecture.
- Asynchronous – Queue based: Amazon SQS.
- Asynchronous – Topic based: Amazon SNS وAmazon MQ.
- الأنظمة المتماسكة يصعب توسيعها وتخلق اختناقات ونقاط فشل فردية.
- الفصل يزيل التبعيات المباشرة بين المكونات — يسمح بالتوسع والمرونة.
- حلول الفصل تقسم طبقات البنية التحتية أو وظائف التطبيق وتقدم مكوناً وسيطاً بينها.
- يمكن أن تكون متزامنة (ELB، Microservices) أو غير متزامنة (SQS، SNS، Amazon MQ).
- الفصل غير المتزامن يستخدم الرسائل والطوابير أو المواضيع لفصل المنتج عن المستهلك.
📖 جدول المصطلحات
| المصطلح (English) | الترجمة | المفهوم |
|---|---|---|
| Tight coupling | الاقتران المتماسك | نظام تعتمد مكوناته على بعضها البعض — تغيير أو فشل واحد يؤثر على البقية. |
| Loose coupling | الفصل / الاقتران المرن | نظام تزيل مكوناته التبعيات المباشرة — تعمل وتفشل وتتوسع بشكل مستقل. |
| Microservice | خدمة مصغرة | وحدة برمجية مستقلة تعمل في عمليتها الخاصة وتؤدي وظيفة واحدة محددة. |
| Producer | المنتج | المكون الذي يولد الأحداث والرسائل ويضعها في طابور أو موضوع. |
| Consumer | المستهلك | المكون الذي يسحب الرسائل من الطابور أو يستقبلها من الموضوع ويعالجها. |
| Synchronous | متزامن | نمط اتصال يرسل فيه المصدر طلباً وينتظر الرد قبل المتابعة. |
| Asynchronous | غير متزامن | نمط اتصال يرسل فيه المصدر رسالة دون انتظار رد فوري. |
1️⃣ Decoupling Applications with Amazon SQS — فصل التطبيقات باستخدام Amazon SQS
Amazon SQS هو خدمة طوابير رسائل مُدارة بالكامل — تتيح فصل مكونات التطبيق لتشغيلها وفشلها بشكل مستقل.
2️⃣ Point-to-Point Messaging — التراسل المباشر (Point-to-point)
يُسمى Point-to-point لأن التطبيق المُرسل يعرف التطبيق المُستقبل ويرسل الرسائل لمستهلك واحد فقط. التطبيق المُرسل = Producer (يولد الرسائل ويضعها في الطابور). التطبيق المُستقبل = Consumer (يسحب الرسائل من الطابور ويعالجها).
- المنتج يضع رسالة في الطابور ← الطابور يخزنها ← المستهلك يسحبها ويعالجها.
- الرسالة تمثل بيانات يرسلها المنتج إلى المستهلك — مثل طلبات وأوامر وفواتير وسجلات مرضى.
- طابور الرسائل هو مستودع مؤقت للرسائل التي تنتظر المعالجة.
- المستهلك يسحب الرسالة عبر آلية Pull — يستقصي الطابور دورياً لفحص وجود رسائل.
3️⃣ Amazon Simple Queue Service (SQS) — خدمة الطوابير البسيطة (SQS)
- مُدار بالكامل — يعمل على نطاق واسع ويعالج مليارات الرسائل يومياً.
- يخزن كل الطوابير والرسائل ضمن منطقة AWS واحدة عالية التوفر مع مناطق توفر متعددة.
- واجهتان للوصول: AWS Management Console وواجهة API عبر AWS SDKs.
- الحماية من الفشل: تكرار التخزين يحمي من فشل أي حاسوب أو شبكة أو منطقة توفر.
4️⃣ Amazon SQS Benefits — فوائد Amazon SQS
- Fully managed: لا حاجة لإدارة برامج الرسائل أو صيانة البنية التحتية — AWS يؤمن ويدير كل شيء.
- Reliability: توصيل كميات كبيرة من البيانات دون فقدان الرسائل — تخزينها على خوادم متعددة.
- Security: إرسال بيانات حساسة بأمان بين التطبيقات — تشفير Server-side encryption (SSE) عبر AWS KMS.
- Scalability: توسع مرن حسب الاستخدام — بدون الحاجة لتخطيط السعة أو التهيئة المسبقة.
5️⃣ Amazon SQS Core Components — المكونات الأساسية لـ Amazon SQS
- Message: يصل حجمها إلى 256 كيلوبايت (يمكن تمديدها لـ 2 جيجابايت عبر Amazon SQS Extended Client Library). تبقى في الطابور حتى تُحذف أو تنتهي مدة الاحتفاظ (افتراضي 4 أيام، حد أقصى 14 يوماً).
- Queue: نوعان — Standard Queue وFIFO Queue. معلمات قابلة للتكوين: فترة الاحتفاظ، مهلة الرؤية، زمن انتظار الاستلام.
- Dead-letter queue (DLQ): طابور مرتبط بمصدر — يستقبل الرسائل التي تعذرت معالجتها بعد تجاوز الحد الأقصى لمحاولات المعالجة.
6️⃣ Example: Decoupling with Amazon SQS — مثال على الفصل باستخدام Amazon SQS
- الطابور يعمل كممتص للصدمات — امتصاص التقلبات في حركة المرور، والتطبيقان يتوسعان بشكل مستقل.
- يمكن معالجة الطلبات بالسرعة التي تناسب إدارة التكاليف — الطلبات تُخزَّن مؤقتاً في الطابور.
- إذا حدث استثناء في التطبيق، يمكن إعادة محاولة المعالجة أو توجيه الرسالة إلى DLQ للمعالجة لاحقاً.
7️⃣ Queue Types — أنواع الطوابير
| الخاصية | Standard Queue | FIFO Queue |
|---|---|---|
| التوصيل | At-least-once (قد تصل الرسالة أكثر من مرة) | Exactly once (مرة واحدة فقط) |
| الترتيب | Best-effort (قد تختلف أحياناً) | First-in-first-out (ترتيب دقيق) |
| الإنتاجية | غير محدودة تقريباً | حتى 300 طلب API في الثانية (3,000 مع التجميع) |
| الاستخدام الأمثل | عندما يمكن معالجة الرسائل أكثر من مرة وبأي ترتيب | عندما يجب الحفاظ على ترتيب الرسائل بدقة |
8️⃣ Queue Settings: Polling Type — إعدادات الطابور: نوع الاستقصاء
- Short polling: القيمة الافتراضية (زمن انتظار = 0). يستقصي مجموعة فرعية من الخوادم فقط — استجابة سريعة لكن استجابات فارغة كثيرة ← تكلفة أعلى.
- Long polling: قيمة غير صفرية (حد أقصى 20 ثانية). يستقصي كل الخوادم — ينتظر حتى تصل رسالة أو ينتهي زمن الانتظار — استجابات أقل لكن تكلفة أقل.
9️⃣ Queue Settings: Visibility Timeout — إعدادات الطابور: رؤية الرسالة
- الافتراضي: 30 ثانية. الحد الأقصى: 12 ساعة.
- يجب أن تساوي أقصى وقت تحتاجه معالجة وحذف الرسالة.
- إذا انتهت المهلة قبل حذف الرسالة ← تصبح مرئية للمستهلكين الآخرين وقد تُعالج مرة أخرى.
- يمكن تجاوز المهلة على مستوى الرسالة عند استلامها.
🔟 How an SQS Queue Works — كيفية عمل طابور رسائل SQS
- 1. المنتج يرسل رسالة إلى الطابور ← توزع عبر خوادم الطابور بشكل متكرر.
- 2. المستهلك يسحب الرسالة ← تبدأ مهلة الرؤية (مثلاً 40 ثانية) ← الرسالة تصبح غير مرئية للمستهلكين الآخرين.
- 3. المستهلك يعالج الرسالة ويحذفها من الطابور خلال مهلة الرؤية — هذا يمنع معالجتها مرة أخرى.
- إذا انتهت المهلة: الرسالة تصبح مرئية مرة أخرى لمستهلك آخر — ضمان أن كل الرسالة تُعالج حتى لو فشل المستهلك الأول.
1️⃣1️⃣ Amazon SQS Use Cases — حالات استخدام Amazon SQS
- Work queues: فصل مكونات تطبيق موزع تعالج العمل بمعدلات مختلفة — مثلاً نظام ملاحة يجمع بيانات من آلاف السيارات.
- Buffering and batch operations: تخزين مؤقت ضد التقلبات — مثلاً تطبيق تداول أسهم يفصل تسجيل الصفقات عن تحديث أرصدة العملاء.
- Request offloading: نقل العمليات البطيئة خارج مسار الطلب التفاعلي — مثلاً تطبيق بنكي يفصل واجهة الدفع عن معالجة الفاتورة.
- Trigger EC2 Auto Scaling: استخدام عدد الرسائل في الطابور كمقياس لتحفيز التوسع — مثلاً تطبيق توصيل يضيف مثيلات إذا زادت الطلبات في الطابور عن 10.
- Amazon SQS هو خدمة طوابير رسائل مُدارة بالكامل — يفصل مكونات التطبيق لتشغيلها بشكل مستقل.
- يدعم نوعين: Standard (توصيل مرة واحدة على الأقل، ترتيب تقريبي) وFIFO (توصيل مرة واحدة، ترتيب دقيق).
- الرسائل التي لا يمكن معالجتها تنتقل إلى Dead-letter queue (DLQ).
- Long polling يقلل التكلفة عبر تقليل الاستجابات الفارغة — يُفضل في معظم الحالات.
- المنتج يرسل رسالة ← المستهلك يعالج ويحذف خلال فترة الرؤية — إذا انتهت المهلة، الرسالة تُعالج مرة أخرى.
📖 جدول المصطلحات
| المصطلح (English) | الترجمة | المفهوم |
|---|---|---|
| Amazon SQS | خدمة الطوابير البسيطة | خدمة طوابير رسائل مُدارة بالكامل لفصل مكونات التطبيقات. |
| Standard Queue | طابور قياسي | توصيل مرة واحدة على الأقل — ترتيب غير مضمون — إنتاجية غير محدودة. |
| FIFO Queue | طابور FIFO | توصيل مرة واحدة بالترتيب الدقيق — إنتاجية محدودة. |
| Visibility timeout | مهلة الرؤية | فترة منع المستهلكين الآخرين من رؤية الرسالة أثناء معالجتها. |
| Dead-letter queue (DLQ) | طابور الرسائل الميتة | طابور يستقبل الرسائل التي تعذرت معالجتها بعد عدة محاولات. |
| Long polling | الاستقصاء الطويل | استقصاء كل الخوادم والانتظار حتى تصل رسالة — يقلل التكلفة. |
| Short polling | الاستقصاء القصير | استقصاء مجموعة فرعية من الخوادم — استجابة فورية لكن تكلفة أعلى. |
1️⃣ Decoupling Applications with Amazon SNS — فصل التطبيقات باستخدام Amazon SNS
Amazon SNS هو خدمة إشعارات Pub/Sub مُدارة بالكامل — تتيح فصل التطبيقات عبر الإشعارات الفورية.
2️⃣ Publish/Subscribe (Pub/Sub) Messaging — التراسل بنشر/اشتراك (Pub/Sub)
التطبيق المُرسل يُسمى Publisher — ينشر الرسائل إلى وجهة وسيطة تُسمى Topic. التطبيقات المُستقبلة تُسمى Subscribers — تشترك في الموضوع لتستقبل الرسائل تلقائياً عبر آلية Push.
- الناشر ينشر رسالة إلى Topic واحد ← يُدفع لكل المشتركين فوراً.
- الموضوعات لا تخزن الرسائل — تدفعها فوراً للمشتركين (عكس الطوابير).
- المشتركون يؤدون وظائف مختلفة — كل واحد يفعل شيئاً مختلفاً بالرسالة بالتوازي.
- الناشر لا يعرف من هم المشتركون — والمشتركون لا يعرفون من الناشر.
3️⃣ Amazon Simple Notification Service (SNS) — خدمة الإشعارات البسيطة (SNS)
- مُدار بالكامل — لا صيانة ولا إدارة — دفع حسب الاستخدام.
- يخزن نسخاً متعددة من الرسالة عبر مناطق توفر متعددة قبل تأكيد الاستلام للناشر.
- بعد نشر الرسالة، يحذفها Amazon SNS — لا يُبقي الرسائل (على عكس SQS).
- يمكنك إنشاء Topic وضبط سياسات لتقييد من ينشر أو يشترك — دعم TLS لتأمين القناة.
4️⃣ Subscriber Types — أنواع المشتركين
- Email destination: إرسال الرسالة إلى بريد إلكتروني — نص عادي أو JSON.
- Mobile text messaging (SMS): إرسال رسالة نصية إلى رقم هاتف.
- Mobile push notifications: إشعار دفع مباشر لتطبيق جوال.
- HTTP/HTTPS endpoint: إرسال POST request إلى عنوان URL.
- AWS Lambda function: استدعاء Lambda لتنفيذ منطق أعمال مخصص.
- SQS queue: إرسال الرسالة إلى طابور SQS للمعالجة لاحقاً.
- Amazon Kinesis Data Firehose: إرسال إلى تدفق Firehose للتخزين والتحليلات.
5️⃣ Amazon SNS Use Cases — حالات استخدام Amazon SNS
- Application and system alerts: إشعار فوري عند وقوع حدث — مثل تغيير في Auto Scaling group.
- Push email and text messaging: إرسال عناوين الأخبار المستهدفة للمشتركين عبر الإيميل أو SMS.
- Mobile push notifications: إرسال إشعارات لتطبيق جوال — مثلاً "تحديث متوفر" مع رابط التحميل.
6️⃣ Example: Using Amazon SQS with Amazon SNS — مثال: استخدام Amazon SQS مع Amazon SNS
- 1. تطبيق جوال يرفع صورة إلى Amazon S3 bucket.
- 2. حدث S3 ينشر رسالة إلى SNS Topic تحتوي رابط الصورة.
- 3. Topic يدفع (fans out) الرسالة إلى 3 طوابير SQS: thumbnail، mobile size، web size.
- 4. كل طابور يُراقب من تطبيق منفصل في Auto Scaling group خاص به — يعالج الحجم المناسب.
- 5. كل تطبيق يخزن النتيجة في S3 bucket آخر — بشكل مستقل ومتوازي.
7️⃣ Amazon SNS Considerations — اعتبارات استخدام Amazon SNS
- كل رسالة تحتوي على رسالة واحدة منشورة — لا يوجد recall أو استرجاع بعد التسليم الناجح.
- نوعان من المواضيع: Standard Topic (ترتيب تقريبي) وFIFO Topic (ترتيب دقيق — إذا كان الترتيب مطلوباً).
- يمكن تخصيص سياسة التسليم لنقطة HTTP/HTTPS — التحكم بعدد مرات إعادة المحاولة وسلوك الفشل.
- عند استنفاد سياسة التسليم، SNS يتوقف عن إعادة المحاولة ويتجاهل الرسالة — ما لم يُرفق DLQ بالاشتراك.
8️⃣ Comparison: Amazon SNS vs Amazon SQS — مقارنة بين Amazon SNS و Amazon SQS
| الخاصية | Amazon SNS | Amazon SQS |
|---|---|---|
| نموذج الرسائل | Publisher-Subscriber | Producer-Consumer |
| نموذج التوزيع | One to many (واحد إلى متعدد) | One to one (واحد إلى واحد) |
| آلية التوصيل | Push (سلبي — يدفع الرسالة) | Pull (نشط — يسحب الرسالة) |
| استمرار الرسالة | لا — تُحذف بعد النشر | نعم — تبقى حتى يحذفها المستهلك |
| معرفة المستقبل | الناشر لا يعرف المشتركين | المنتج يعرف المستهلك |
🗣️ SNS (Pub/Sub): يشبه مذياع FM — المحطة (Publisher) تبث على تردد معين، وأي رايتو (Subscriber) يضبط على نفس التردد يستقبل البث فوراً. البث لا يُسجل — إذا فتحت الراديو متأخراً، فاتك البرنامج.
📬 SQS (Point-to-point): يشبه صندوق بريد شخصي — المرسل (Producer) يضع الرسالة ويرحل، المستقبل (Consumer) يفتح الصندوق ويأخذ الرسالة عندما يكون مستعداً — الرسالة تبقى في الصندوق حتى يأخذها.
- Amazon SNS هو خدمة Pub/Sub مُدارة — تنشئ Topic، تنشئ مشتركين، وتنشر رسائل إلى Topic.
- يمكن استخدام Topics لفصل الناشرين عن المشتركين و Fanout الرسائل لمستلمين متعددين.
- خدمات AWS يمكنها النشر إلى SNS Topic لتفعيل Event-driven computing.
- يدعم 7 أنواع من المشتركين: إيميل، SMS، Push، HTTP، Lambda، SQS، Kinesis Firehose.
- SNS = Push (واحد إلى متعدد، غير مستمر). SQS = Pull (واحد إلى واحد، مستمر).
📖 جدول المصطلحات
| المصطلح (English) | الترجمة | المفهوم |
|---|---|---|
| Amazon SNS | خدمة الإشعارات البسيطة | خدمة Pub/Sub مُدارة بالكامل للإشعارات الفورية. |
| Topic | الموضوع | قناة اتصال ينشر فيها Publisher الرسائل ويشترك فيها Subscribers. |
| Publisher | الناشر | التطبيق الذي يرسل الرسائل إلى SNS Topic. |
| Subscriber | المشترك | التطبيق الذي يستقبل الرسائل من SNS Topic. |
| Fanout | التوزيع المتعدد | إرسال رسالة واحدة من Topic إلى عدة طوابير/نقاط نهاية بالتوازي. |
| Push mechanism | آلية الدفع | SNS يدفع الرسالة فوراً إلى المشترك — بدون استقصاء. |
| Pull mechanism | آلية السحب | المستهلك يسحب الرسالة من الطابور — استقصاء دوري. |
1️⃣ Decoupling a Hybrid Application with Amazon MQ — فصل تطبيق هجين باستخدام Amazon MQ
2️⃣ Amazon MQ — خدمة وسيط الرسائل المُدارة (Amazon MQ)
Amazon MQ يقدم حلاً قائماً على الطوابير والمواضيع لفصل التطبيقات — يتيح لتطبيقات بلغات برمجة وأنظمة تشغيل مختلفة التواصل عبر بروتوكولات مراسلة قياسية.
- يدير التجهيز والإعداد والصيانة — يقلل مسؤولياتك التشغيلية.
- يدعم بروتوكولات قياسية: JMS، NMS، AMQP، STOMP، MQTT، WebSocket.
- يمكن الترحيل من أي وسيط رسائل يستخدم هذه المعايير — غالباً بدون إعادة كتابة كود المراسلة.
- يدعم كلاً من الطوابير (Queues) والمواضيع (Topics) — كحل هجين.
3️⃣ Use Case: Hybrid Cloud Environment — حالة استخدام: البيئة السحابية الهجينة
Amazon MQ يتيح إرسال الرسائل بين التطبيقات في السحابة والتطبيقات داخل المؤسسة — يمكن استدعاء Lambda من طوابير ومواضيع Amazon MQ لدمج الأنظمة القديمة مع البنى اللاخدمية.
4️⃣ Choosing the Right Decoupling Solution — اختيار حل الفصل المناسب
| المعيار | Amazon SQS | Amazon SNS | Amazon MQ |
|---|---|---|---|
| الاستخدام | تطبيقات سحابية | تطبيقات سحابية أصلية | تطبيقات هجينة + ترحيل |
| نموذج الرسائل | Producer-Consumer | Publisher-Subscriber | Producer-Consumer + Pub/Sub |
| API | Amazon SQS API | Amazon SNS API | بروتوكولات قياسية (JMS, AMQP...) |
| نموذج التسعير | Pay per request | Pay per request | Pay per hour + Pay per GB |
📬 SQS = شاحنة توصيل (Point-to-point): تأخذ البضائع من مستودع إلى مستودع واحد محدد.
📡 SNS = محطة راديو (Pub/Sub): تبث إشارة وكل من لديه رايتو يستقبلها — تصل للكل فوراً.
🔌 Amazon MQ = محطة قطار دولية (Standard protocols): تأتي قطارات من أنظمة مختلفة (JMS، AMQP، MQTT) وكلها تلتقي في المحطة المركزية — حتى القطارات القديمة يمكنها الوصول.
- Amazon MQ هو خدمة مُدارة لـ ActiveMQ و RabbitMQ — إعداد وتشغيل وسائط الرسائل في السحابة.
- متوافق مع بروتوكولات المراسلة القياسية المفتوحة — JMS، AMQP، MQTT وغيرها.
- يمكن استخدام Amazon MQ لدمج البيئات الداخلية والسحابية بشكل منفصل.
- يمكن الترحيل من وسائط الرسائل مفتوحة المصدر الداخلية إلى AWS دون إعادة كتابة الكود.
- SQS/SNS = تطبيقات سحابية جديدة. Amazon MQ = تطبيقات هجينة وترحيل.
📖 جدول المصطلحات
| المصطلح (English) | الترجمة | المفهوم |
|---|---|---|
| Amazon MQ | أمازون إم كيو | خدمة وسيط رسائل مُدارة لـ ActiveMQ و RabbitMQ. |
| Message broker | وسيط الرسائل | برمجية وسيطة تتيح لأنظمة مختلفة التواصل عبر الرسائل. |
| ActiveMQ | أكتيف إم كيو | وسيط رسائل مفتوح المصدر شائع في تطبيقات المؤسسات. |
| RabbitMQ | رابيت إم كيو | وسيط رسائل مفتوح المصدر خفيف ومرن. |
| Hybrid cloud | السحابة الهجينة | بيئة تجمع بين البنية التحتية الداخلية والسحابية. |
| JMS | خدمة رسائل جافا | واجهة برمجة رسائل قياسية لتطبيقات جافا. |
| AMQP | بروتوكول الرسائل المتقدم | بروتوكول مراسلة مفتوح قياسي من الطبقة السابعة. |
🚀 الخاتمة
في هذه الوحدة تعلمنا الفرق بين البنى المتماسكة (Tightly coupled) والبنى المنفصلة (Loosely coupled) — وكيف أن البنى المتماسكة يصعب توسيعها وتخلق نقاط فشل فردية. تعمقنا في Amazon SQS كخدمة طوابير تُفصل التطبيقات عبر Point-to-point messaging مع نوعي الطوابير Standard وFIFO، ومفاهيم مثل Visibility timeout وLong polling وDead-letter queue. استعرضنا Amazon SNS كخدمة Pub/Sub تدفع الرسائل فوراً لمشتركين متعددين — مع سيناريو Fanout الذي يجمع قوة SNS و SQS معاً. وأخيراً، تعرفنا على Amazon MQ كحاجتك للبيئات الهجينة — حيث يمكن ربط التطبيقات الداخلية القديمة مع التطبيقات السحابية الحديثة عبر بروتوكولات قياسية مثل JMS وAMQP.
