0Pricing
Cloud & IT Cert Prep · درس

فتحات النشر والتبديل

أنشئ فتحات تجهيز لعمليات النشر الأزرق-الأخضر، وجهّز إصدارًا جديدًا في فتحة التجهيز، ثم بدّلها إلى الإنتاج من دون توقف.

فتحات النشر والتبديل درس مجاني في Cloud & IT Cert Prep على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Cloud & IT Cert Prep، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Cloud & IT Cert Prep 4 دروس في المجموع.

ما هي فتحات النشر؟

فتحات النشر هي بيئات مباشرة ومنفصلة لتطبيق ويب في App Service، ولكل منها اسم مضيف خاص بها (مثل myapp-staging.azurewebsites.net). تشترك الفتحات في خطة App Service والموارد نفسها مع فتحة الإنتاج، لكنها تعمل بشكل مستقل. وتتيح عمليات النشر الأزرق-الأخضر — إذ تتحققون من صحة إصدار جديد في فتحة التجهيز، ثم تبدّلونها مع فتحة الإنتاج من دون أي توقف. تتوفر الفتحات ابتداءً من المستوى Standard وما فوق.

إنشاء فتحة نشر

أضيفوا فتحة نشر جديدة إلى تطبيق الويب باستخدام مدخل Azure أو CLI. تحصل كل فتحة على عنوان URL وإعدادات تطبيق وسلاسل اتصال خاصة بها. يمكنكم إنشاء ما يصل إلى 5 فتحات في Standard، وما يصل إلى 20 فتحة في المستوى Premium. تشمل أسماء الفتحات الشائعة staging وcanary وhotfix وintegration، وهي تعكس المراحل المختلفة لمسار إصدار البرنامج.

# Create a staging deployment slot
az webapp deployment slot create \
  --name MyUniqueWebApp \
  --resource-group MyRG \
  --slot staging

# Deploy code to the staging slot
az webapp deploy \
  --name MyUniqueWebApp \
  --resource-group MyRG \
  --slot staging \
  --src-path app.zip

# The staging slot is live at:
# https://MyUniqueWebApp-staging.azurewebsites.net

تهيئة فتحة التجهيز

قبل التبديل، من الضروري تهيئة فتحة التجهيز حتى تتم تهيئة الإصدار الجديد بالكامل. يخدم مثيل App Service غير المهيّأ الطلبات الأولى ببطء بينما تتم تهيئة بيئة التشغيل، وهذا غير مقبول في بيئة الإنتاج. فعّلوا Auto Swap أو أرسلوا يدويًا طلبات HTTP للتهيئة إلى فتحة التجهيز. يدعم App Service أيضًا إعداد applicationInitialization لتحديد مسارات التهيئة التي يجب أن تعيد الحالة 200 قبل اعتبار الفتحة جاهزة.

# web.config snippet for warm-up (IIS/Windows)
# <system.webServer>
#   <applicationInitialization>
#     <add initializationPage='/health' hostName='MyUniqueWebApp-staging.azurewebsites.net'/>
#   </applicationInitialization>
# </system.webServer>

# Or use a startup probe via the App Service health check
az webapp config set \
  --name MyUniqueWebApp \
  --resource-group MyRG \
  --slot staging \
  --generic-configurations '{"healthCheckPath": "/health"}'

تبديل الفتحات

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

# Swap staging into production
az webapp deployment slot swap \
  --name MyUniqueWebApp \
  --resource-group MyRG \
  --slot staging \
  --target-slot production

# Rollback: swap production back to staging
az webapp deployment slot swap \
  --name MyUniqueWebApp \
  --resource-group MyRG \
  --slot production \
  --target-slot staging

الإعدادات المرتبطة بالفتحة مقابل غير المرتبطة بها

يمكن وضع علامة على إعدادات التطبيق باعتبارها مرتبطة بالفتحة (خاصة بفتحة معينة) أو غير مرتبطة بالفتحة (قابلة للتبديل). تنتقل الإعدادات غير المرتبطة بالفتحة مع فتحة النشر عند إجراء التبديل — ولذلك تنتقل سلسلة اتصال قاعدة بيانات التجهيز مع التعليمات البرمجية إلى الإنتاج. أما الإعدادات المرتبطة بالفتحة فتبقى مع الفتحة بغض النظر عن عمليات التبديل — ولذلك تحتفظ بيئة الإنتاج دائمًا بسلسلة اتصال قاعدة بيانات الإنتاج. ضعوا علامة على الإعدادات باعتبارها مرتبطة بالفتحة باستخدام خانة الاختيار 'deployment slot setting' أو CLI.

# Mark a setting as sticky (slot-specific) -- it won't swap
az webapp config appsettings set \
  --name MyUniqueWebApp \
  --resource-group MyRG \
  --slot staging \
  --slot-settings DATABASE_URL='postgresql://staging-db/...'

# Set a non-sticky setting (it WILL travel with a swap)
az webapp config appsettings set \
  --name MyUniqueWebApp \
  --resource-group MyRG \
  --slot staging \
  --settings FEATURE_FLAG_NEW_UI=true

تقسيم حركة المرور للإصدارات التجريبية

يدعم App Service تقسيم حركة المرور — أي توجيه نسبة مئوية من حركة مرور الإنتاج إلى فتحة غير إنتاجية من دون إجراء تبديل كامل. يتيح ذلك الإصدارات التجريبية التي تنقلون فيها حركة المرور تدريجيًا من 5% إلى 10% ثم إلى 50% مع ازدياد ثقتكم بالإصدار الجديد، مع مراقبة معدلات الأخطاء في كل خطوة. ويتلقى المستخدمون الذين يصلون إلى الفتحة التجريبية ملف تعريف ارتباط ثابتًا يُبقيهم على الإصدار نفسه لضمان اتساق الجلسة.

# Route 10% of traffic to the staging slot (canary)
az webapp traffic-routing set \
  --name MyUniqueWebApp \
  --resource-group MyRG \
  --distribution staging=10

# View current traffic distribution
az webapp traffic-routing show \
  --name MyUniqueWebApp \
  --resource-group MyRG

# Reset all traffic to production
az webapp traffic-routing clear \
  --name MyUniqueWebApp \
  --resource-group MyRG

التبديل التلقائي

يبدّل Auto Swap فتحة التجهيز تلقائيًا إلى الإنتاج كلما نُشرت تعليمات برمجية جديدة فيها. وهو مناسب لمسارات CI/CD التي تريدون فيها أن يصبح كل نشر ناجح متاحًا مباشرةً. ينتظر Auto Swap أن تعيد طلبات HTTP في فتحة التجهيز الحالة 200 قبل إكمال التبديل. فعّلوه لكل فتحة في المدخل أو CLI — لكن استخدموه بحذر، إذ لا توجد خطوة موافقة يدوية بين النشر والإنتاج.

# Enable Auto Swap for the staging slot
az webapp deployment slot auto-swap \
  --name MyUniqueWebApp \
  --resource-group MyRG \
  --slot staging \
  --auto-swap-slot production

# Disable Auto Swap
az webapp deployment slot auto-swap \
  --name MyUniqueWebApp \
  --resource-group MyRG \
  --slot staging \
  --disable

أفضل ممارسات فتحات النشر

اتبعوا أفضل الممارسات التالية لفتحات النشر: احرصوا دائمًا على التحقق في بيئة التجهيز قبل التبديل إلى الإنتاج، واستخدموا الإعدادات المرتبطة بالفتحة لعزل اتصالات قاعدة بيانات الإنتاج عن التجهيز، وشغّلوا اختبارات الدخان على عنوان URL لفتحة التجهيز بعد النشر، واضبطوا مسارات فحص الصحة لضمان عدم إكمال App Service للتبديل إذا كان الإصدار الجديد غير سليم، وضعوا علامات على عمليات النشر حتى تتمكنوا من تتبّع الالتزام البرمجي النشط في كل فتحة.

الفتحات في مسارات CI/CD

في مسار CI/CD نموذجي، تعمل مرحلة الإنشاء على تجميع التعليمات البرمجية واختبارها، وتدفع مرحلة النشر الأثر البرمجي إلى فتحة التجهيز، وتشغّل مرحلة اختبار التكامل اختبارات آلية على عنوان URL للتجهيز، ثم تبدّل مرحلة التبديل فتحة التجهيز إلى الإنتاج — مع إمكانية اشتراط موافقة يدوية. ويدعم كل من Azure Pipelines وGitHub Actions هذا النمط بشكل أصلي باستخدام إجراء نشر App Service.

# GitHub Actions step: deploy to staging slot
# - name: Deploy to Staging Slot
#   uses: azure/webapps-deploy@v2
#   with:
#     app-name: MyUniqueWebApp
#     slot-name: staging
#     publish-profile: ${{ secrets.AZURE_STAGING_PUBLISH_PROFILE }}
#
# - name: Swap to Production
#   uses: azure/CLI@v1
#   with:
#     inlineScript: |
#       az webapp deployment slot swap \
#         --name MyUniqueWebApp \
#         --resource-group MyRG \
#         --slot staging

مراقبة سلامة التبديل

أثناء تبديل الفتحات وبعده، راقبوا المقاييس الأساسية في Azure Monitor للتأكد من سلامة الإصدار الجديد. راقبوا الارتفاعات المفاجئة في أخطاء HTTP 5xx ومتوسط وقت الاستجابة واستخدام CPU والذاكرة. أعدّوا تنبيهات المقاييس لتعمل إذا تجاوزت معدلات الأخطاء حدًا معينًا — فهذا يمنحكم إشارة لإجراء التبديل العكسي بسرعة. ويمكن لـ الكشف الذكي في Application Insights تنبيهكم تلقائيًا إلى الحالات الشاذة بعد النشر.

# Create an alert rule for HTTP 5xx errors post-swap
az monitor metrics alert create \
  --name 'HighErrorRate' \
  --resource-group MyRG \
  --scopes '/subscriptions/.../providers/Microsoft.Web/sites/MyUniqueWebApp' \
  --condition 'avg Http5xx > 10' \
  --window-size 5m \
  --evaluation-frequency 1m \
  --action-group MyActionGroup

الفتحات مقابل التطبيقات المتعددة

تُفضّل فتحات النشر على الاحتفاظ بتطبيقات App Service منفصلة تمامًا للتجهيز والإنتاج، لأن الفتحات تشترك في الخطة نفسها (من دون تكلفة إضافية)، وتوفر تبديلًا بنقرة واحدة مع إمكانية التراجع، وتدعم تقسيم حركة المرور، وتُدار ضمن مورد App Service نفسه. استخدموا تطبيقات منفصلة فقط عندما تحتاج بيئة التجهيز إلى وحدات SKU مختلفة جذريًا للخطة، أو متطلبات عزل، أو فوترة منفصلة تمامًا.

تحقق سريع

اختبروا مدى فهمكم لمفاهيم Microsoft Azure Fundamentals (AZ-900) الواردة في هذا الدرس.

مراجعة الدرس

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

الأسئلة الشائعة

هل درس «فتحات النشر والتبديل» مجاني؟

نعم — نص درس «فتحات النشر والتبديل» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Cloud & IT Cert Prep، انتقل إلى CoddyKit PRO. تتضمن دورة Cloud & IT Cert Prep 4 دروس في المجموع.

ماذا ستتعلم في «فتحات النشر والتبديل»؟

أنشئ فتحات تجهيز لعمليات النشر الأزرق-الأخضر، وجهّز إصدارًا جديدًا في فتحة التجهيز، ثم بدّلها إلى الإنتاج من دون توقف. تتمرن على Cloud & IT Cert Prep مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Cloud & IT Cert Prep؟

لا تُشترط خبرة سابقة. Cloud & IT Cert Prep على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «فتحات النشر والتبديل»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Cloud & IT Cert Prep هذا؟

نعم. كل درس في Cloud & IT Cert Prep يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. إنشاء خطة App Service وتطبيق ويب
  2. فتحات النشر والتبديل
  3. التوسع التلقائي والنطاقات المخصصة
  4. مصادقة App Service والشبكات
← العودة إلى Cloud & IT Cert Prep