نمط تفريغ البوابة

Azure Application Gateway

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

السياق والمشكلة

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

قد تتطلب معالجة مشكلات الأمان (التحقق من صحة الرمز المميز والتشفير وإدارة شهادات SSL) والمهام المعقدة الأخرى أن يتمتع أعضاء الفريق بمهارات متخصصة للغاية. على سبيل المثال، يجب تكوين الشهادة المطلوبة من قِبَل التطبيق وتوزيعها على جميع مثيلات التطبيق. مع كل عملية توزيع جديدة، يجب إدارة الشهادة لضمان عدم انتهاء صلاحيتها. يجب تحديث أي شهادة مشتركة على وشك انتهاء الصلاحية واختبارها والتحقق منها في كل عملية توزيع للتطبيق.

قد يكون من الصعب تنفيذ وإدارة الخدمات الشائعة الأخرى مثل المصادقة أو التفويض أو التسجيل أو المراقبة أو التقييد عبر عدد كبير من عمليات التوزيع. قد يكون من الأفضل دمج هذا النوع من الوظائف لتقليل النفقات العامة وفرصة الأخطاء.

حل

قم بإلغاء تحميل بعض الميزات في بوابة، لا سيما المخاوف الشاملة مثل إدارة الشهادة أو المصادقة أو إنهاء SSL أو المراقبة أو ترجمة البروتوكول أو التقييد.

يوضح الرسم التخطيطي التالي بوابة تقوم بإنهاء اتصال SSL الواردة. يطلب البيانات نيابة عن مقدم الطلب الأصلي من أي خادم HTTP منبع البوابة.

رسم تخطيطي لنمط تفريغ البوابة

تشمل فوائد هذا النمط ما يلي:

  • تبسيط تطوير الخدمات عن طريق إزالة الحاجة إلى توزيع موارد الدعم والحفاظ عليها، مثل شهادات خادم الويب والتكوين لمواقع الويب الآمنة. يؤدي التكوين الأبسط إلى إدارة أسهل وقابلية للتوسع ويجعل ترقيات الخدمة أبسط.

  • اسمح للفرق المخصصة بتنفيذ الميزات التي تتطلب خبرة متخصصة، مثل الأمان. يتيح ذلك لفريقك الأساسي التركيز على وظائف التطبيق، وترك هذه الاهتمامات المتخصصة ولكن الشاملة للخبراء المعنيين.

  • توفير بعض التناسق لتسجيل الطلبات والاستجابة والرصد. حتى إذا لم يتم تجهيز الخدمة بشكل صحيح، يمكن تكوين البوابة لضمان حد أدنى من المراقبة والتسجيل.

المسائل والاعتبارات

  • تأكد من توفر البوابة بدرجة عالية ومن أنها قادرة على الصمود في وجه الأعطال. تجنب نقاط الفشل الفردية عن طريق تشغيل مثيلات متعددة من بوابة البيانات.
  • تأكد من أن البوابة مصممة لتلبية متطلبات السعة والتوسع لتطبيقك ونقاط النهاية. تأكد من أن البوابة لا تصبح عنق زجاجة للتطبيق وأنها قابلة لتغيير الحجم بدرجة كافية.
  • فقط ميزات إلغاء التحميل التي يستخدمها التطبيق بأكمله، مثل الأمان أو نقل البيانات.
  • يجب عدم إلغاء تحميل منطق الأعمال إلى البوابة مطلقاً.
  • إذا كنت بحاجة إلى تتبع العمليات، ففكر في إنشاء معرفات الارتباط لأغراض التسجيل.

موعد استخدام النمط

استخدم هذا النمط عندما:

  • توزيع التطبيق له مخاوف مشتركة مثل شهادات SSL أو التشفير.
  • ميزة شائعة عبر عمليات توزيع التطبيقات والتي قد يكون لها متطلبات موارد مختلفة، مثل موارد الذاكرة أو سعة التخزين أو اتصالات الشبكة.
  • أنت ترغب في نقل المسؤولية عن مشكلات مثل أمان الشبكة أو الازدحام أو مخاوف أخرى تتعلق بحدود الشبكة إلى فريق أكثر تخصصاً.

قد لا يكون هذا النمط مناسباً إذا كان يقدم اقتراناً عبر الخدمات.

تصميم حمل العمل

يجب على المهندس المعماري تقييم كيفية استخدام نمط إلغاء تحميل البوابة في تصميم حمل العمل الخاص بهم لمعالجة الأهداف والمبادئ التي تغطيها ركائز Azure Well-Architected Framework. على سبيل المثال:

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

- RE:01 البساطة والكفاءة
تساعد قرارات تصميم الأمان على ضمان سرية بيانات وأنظمة حمل العمل وتكاملها وتوافرها. تمكنك إضافة بوابة إلى تدفق الطلب من مركزية وظائف الأمان مثل جدران حماية تطبيقات الويب واتصالات TLS مع العملاء. توفر أي وظائف غير محملة توفرها الأنظمة الأساسية بالفعل أمانا محسنا.

- SE:06 عناصر التحكم في الشبكة
- موارد تقوية SE:08
يركز تحسين التكلفة على الحفاظ على عائد حمل العمل على الاستثمار وتحسينه. يمكنك هذا النمط من إعادة توجيه التكاليف من الموارد التي سيتم إنفاقها لكل عقدة في تنفيذ البوابة. غالبا ما تكون التكاليف في نموذج المعالجة المركزية أقل من تكاليف النموذج الموزع.

- CO:14 الدمج
يساعد التميز التشغيلي على تقديم جودة حمل العمل من خلال العمليات الموحدة وتماسك الفريق. في هذا النمط، يكون تكوين الوظيفة غير المحملة وصيانتها من نقطة واحدة بدلا من إدارتها من عقد متعددة.

- OE:04 الأدوات والعمليات
تساعد كفاءة الأداء حمل العمل الخاص بك على تلبية الطلبات بكفاءة من خلال التحسينات في التحجيم والبيانات والرمز. إضافة بوابة إلغاء تحميل إلى عملية الطلب تمكنك من استخدام موارد أقل لكل عقدة لأن الوظيفة مركزية في البوابة. يمكنك تحسين تنفيذ الوظيفة التي تم تفريغها بشكل مستقل عن التعليمات البرمجية للتطبيق. من المحتمل أن تكون الوظائف التي يوفرها النظام الأساسي غير المحملة عالية الأداء بالفعل.

- PE:03 تحديد الخدمات

كما هو الحال مع أي قرار تصميم، ضع في اعتبارك أي مفاضلات ضد أهداف الركائز الأخرى التي يمكن إدخالها مع هذا النمط.

مثال

باستخدام Nginx كجهاز إلغاء تحميل SSL، ينهي التكوين التالي اتصال SSL وارد ويوزع الاتصال إلى واحد من ثلاثة خوادم HTTP رئيسية.

upstream iis {
        server  10.3.0.10    max_fails=3    fail_timeout=15s;
        server  10.3.0.20    max_fails=3    fail_timeout=15s;
        server  10.3.0.30    max_fails=3    fail_timeout=15s;
}

server {
        listen 443;
        ssl on;
        ssl_certificate /etc/nginx/ssl/domain.cer;
        ssl_certificate_key /etc/nginx/ssl/domain.key;

        location / {
                set $targ iis;
                proxy_pass http://$targ;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header Host $host;
        }
}

في Azure، يمكن تحقيق ذلك عن طريق إعداد إنهاء SSL على بوابة التطبيق.