تدريب - تغيير حجم تطبيق ويب يدويًا

مكتمل

عليك توسيع نطاق النظام حين تتوقع زيادة في نسبة استخدام الشبكة. كما قد تحتاج إلى توسيع النطاق استجابة لانخفاض الأداء.

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

في هذا التمرين، يمكنك إنشاء خطة App Service ونشر تطبيق ويب باستخدام هذه الخطة. يمكنك مراقبة أداء تطبيق الويب قيد التحميل. ثم قم بتوسيع نطاق التطبيق وتحقق من أن الخطة حسنت أداء التطبيق.

يستخدم التدريب عينة تطبيق ويب يطبق واجهة برمجة تطبيقات ويب API. تكشف واجهة برمجة تطبيقات الويب عمليات HTTP POST وGET التي تقوم بإنشاء واسترداد حجوزات العملاء لموقع ويب لحجوزات الفنادق. لا يتم حفظ الحجوزات. تقوم عملية GET ببساطة باسترداد البيانات الوهمية.

كما يقوم التدريب بتشغيل تطبيق عميل يحاكي العديد من المستخدمين الذين يصدرون عمليات POST وGET في وقت واحد. يوفر هذا التطبيق حمل العمل الذي تستخدمه لاختبار أداء تطبيق الويب قبل التحجيم وبعده.

إنشاء خطة App Service وتطبيق ويب

هام

تحتاج إلى اشتراك Azure الخاص بك لتشغيل هذا التمرين، وقد تتكبد رسوماً. إذا لم يكن لديك بالفعل اشتراك Azure، فأنشئ حساباً مجانياً قبل أن تبدأ.

  1. سجل دخولك إلى مدخل Azure.

  2. في قائمة مدخل Microsoft Azure أو من صفحة الصفحة الرئيسية، حدد إنشاء مورد. يظهر إنشاء جزء مصدر.

  3. من جزء القائمة الأيسر ضمن Categories اختر Web وابحث عن Web App واختره، ثم اختر Create. سيظهر جزء Create Web App.

  4. في علامة التبويب "Basics"، أدخل القِيم التالية لكل إعداد.

    إشعار

    ينبغي أن يكون لتطبيق الويب اسم فريد. نقترح استخدام شيء، مثل <اسمك أو الأحرف الأولى>hotelsystem. استخدم هذا الاسم كلما ترى <your-webapp-name> في هذا التمرين.

    الإعداد القيمة‬
    تفاصيل المشروع
    الوصف تحديد اشتراك Azure الذي ترغب في استخدامه لهذا التمرين
    مجموعة الموارد اختر رابط Create new وأدخل مجموعة موارد جديدة تسمى mslearn-scale
    تفاصيل المثيل
    الاسم راجع ملاحظة قبل الجدول. أدخل اسمًا فريدًا يمكنك تذكره لاحقًا في هذا التمرين
    نشر الرمز
    مكدس وقت التشغيل .NET 6 (LTS)
    نظام تشغيل Windows
    منطقة اقبل الافتراضي
    خطة App Service
    خطة Windows اقبل الافتراضي
    خطة الأسعار اقبل الافتراضي
  5. اختر إنشاء>مراجعة + إنشاء. انتظر حتى يتم إنشاء تطبيق الويب وتوزيعه.

إنشاء تطبيق ويب ونشره

  1. في شريط المهام Azure، اختر رمز Cloud Shell لفتح AzureCloud Shell، وشغّل الأمر التالي لتنزيل التعليمات البرمجية المصدر لنظام حجز الفندق.

    Screenshot of Cloud Shell icon in taskbar.

    git clone https://github.com/MicrosoftDocs/mslearn-hotel-reservation-system.git
    
  2. انتقل إلى مجلد mslearn-hotel-reservation-system/src.

    cd mslearn-hotel-reservation-system/src
    
  3. قم بتصميم تطبيقات لنظام الفندق. هناك تطبيقان: تطبيق ويب ينفذ واجهة برمجة تطبيقات الويب للنظام وتطبيق العميل الذي تستخدمه لتحميل اختبار تطبيق الويب.

    dotnet build
    
  4. قم بإعداد تطبيق ويب HotelReservationSystem للنشر.

    cd HotelReservationSystem
    dotnet publish -o website
    
  5. انتقل إلى مجلد موقع الويب الذي يحتوي على الملفات المنشورة. قم بضغط الملفات ونشرها على تطبيق الويب الذي قمت بإنشائه في المهمة السابقة. انسخ التعليمات البرمجية التالية للمفكرة واستبدل <your-webapp-name> باسم تطبيق الويب الخاص بك، ثم الصق كتلة التعليمات البرمجية المُحررة في Cloud Shell وشغلها.

    cd website
    zip website.zip *
    az webapp deployment source config-zip --src website.zip --name <your-webapp-name> --resource-group mslearn-scale
    
  6. استخدم مستعرض الويب للانتقال إلى http://<your-webapp-name>.azurewebsites.net/api/reservations/1. يظهر مستند JSON يحتوي على تفاصيل الحجز رقم 1.

    Screenshot of the running web app, showing the details for reservation number 1 in JSON format.

مراقبة أداء تطبيق الويب قبل توسيع النطاق

  1. ارجع إلى Cloud Shell وانتقل إلى المجلد ~/mslearn-hotel-reservation-system/src/HotelReservationSystemTestClient.

    cd ~/mslearn-hotel-reservation-system/src/HotelReservationSystemTestClient
    
  2. قم بتحرير ملف App.config في هذا المجلد باستخدام محرر التعليمات البرمجية.

    code App.config
    
  3. قم بإلغاء تعليق السطر الذي يحدد ReservationsServiceURI، واستبدل القيمة YOUR WEBSITE NAME باسم بتطبيق الويب. ينبغي أن يبدو الملف مثل هذا المثال.

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
        <appSettings>
            <add key="NumClients" value="100" />
            <add key="ReservationsServiceURI" value="https://<your-webapp-name>.azurewebsites.net/" />
            <add key="ReservationsServiceCollection" value="api/reservations" />
        </appSettings>
    </configuration>
    

    إشعار

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

  4. احفظ الملف عن طريق تحديد Ctrl+S.

  5. قم بتحرير الملف HotelReservationSystemTestClient.csproj في هذا المجلد باستخدام محرر التعليمات البرمجية.

    code HotelReservationSystemTestClient.csproj
    
  6. قم بتحرير السطر الذي يحدد TargetFramework، بحيث يتطابق مع مكدس وقت التشغيل الذي حددته لتطبيق الويب الخاص بك. TargetFramework غير القيمة إلى netcoreapp7.0. ينبغي أن يبدو الملف مثل هذا المثال.

    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>netcoreapp7.0</TargetFramework>
      </PropertyGroup>
    
      <ItemGroup>
        <PackageReference Include="Newtonsoft.Json" Version="12.0.1" />
        <PackageReference Include="System.Configuration.ConfigurationManager" Version="4.5.0" />
      </ItemGroup>
    
      <ItemGroup>
        <ProjectReference Include="..\HotelReservationSystemTypes\HotelReservationSystemTypes.csproj" />
      </ItemGroup>
    
    </Project>
    
  7. احفظ الملف عن طريق تحديد Ctrl+S، وأغلق محرر التعليمات البرمجية بالضغط على Ctrl+Q.

  8. أعد إنشاء تطبيق العميل التجريبي بالتكوين الجديد.

    dotnet build
    
  9. قم بتشغيل تطبيق العميل. ترى العديد من الرسائل تظهر أثناء بدء تشغيل العملاء وإجراء الحجوزات وتشغيل الاستعلامات. وفِّر للنظام بضع دقائق للتشغيل. الاستجابات بطيئة، وقريبا تبدأ طلبات العميل في الفشل مع أخطاء HTTP 408 (المهلة).

    dotnet run
    

    Screenshot of a running client app, showing the responses and error messages that occur.

  10. في مدخل Microsoft Azure، اختر Go to resource لفتح تطبيق الويب.

  11. في جزء القائمة الأيسر اختر Monitoring ثم اختر Metrics.

  12. في الجانب الأيمن من شريط القوائم في جزء تطبيق الويب، اختر النطاق الزمني Local Time: Last 24 hours (Automatic)، ثم اختر Last 30 minutes وبعدها اخترApply.

  13. في الجزء أسفل Chart Title، أضف المقاييس التالية إلى المخطط:

    • اختر Add metric، ومن القائمة المنسدلة Metric اختر CPU Time. بالنسبة لـ Aggregation اختر Sum.
    • اختر Add metric، ومن القائمة المنسدلة Metric اختر Http Server Errors. بالنسبة لـ Aggregation اختر Sum.
    • اختر Add metric، ومن القائمة المنسدلة Metric اختر Http 4xx. بالنسبة لـ Aggregation اختر Sum.
    • اختر Add metric، ومن القائمة المنسدلة Metric اختر Response Time. بالنسبة لـ Aggregation اختر Avg.
  14. في شريط القوائم الأيمن اختر Pin to dashboard. يظهر جزء Pin to dashboard؛ حدد علامة التبويب Create New.

  15. في القائمة المنسدلة Dashboard name أدخل اسم تطبيق الويب، ثم اختر Create and pin.

  16. اترك النظام يعمل لمدة خمس دقائق حتى يستقر، ثم لاحظ وقت CPU، وعدد أخطاء HTTP 4xx، ومتوسط وقت الاستجابة. يجب أن تشاهد عددا كبيرا من أخطاء HTTP 4xx. هذه الأخطاء هي أخطاء مهلة HTTP 408. متوسط وقت الاستجابة هو عدة ثوان. قد ترى خطأ خادم HTTP العرضي، اعتمادا على كيفية تعامل خادم الويب مع العبء.

    Screenshot showing the performance metrics for the web app before scaling out.

  17. اترك تطبيق العميل قيد التشغيل في أثناء تنفيذ المهمة التالية.

توسيع نطاق تطبيق الويب والتحقق من تحسين الأداء

  1. في مدخل Microsoft Azure، اختر اسم تطبيق الويب (خدمة التطبيقات)، وفي جزء القائمة الأيسر ضمن Settings اختر Scale-out (App Service Plan). يظهر جزء Scale out (App Service plan).

  2. في علامة تبويب Configure، حدد Manual scale وعيّن Instance count إلى 5. حدد حفظ.

    Screenshot of the Configure page for the App Service plan, scaling out to five instances.

  3. بدّل إلى Cloud Shell الذي يُشغّل تطبيق العميل. يجب أن تشاهد عددا أقل من الطلبات تفشل مع الأخطاء، على الرغم من أن بعضها لا يزال قد انتهى.

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

    Screenshot showing the performance metrics for the web app after scaling out to five instances.

  5. إذا كنت ترغب في تجربة المزيد، فحاول زيادة عدد مثيلات خطة App Service إلى 10. الحد الأقصى لعدد المثيلات التي يدعمها مستوى S1 هو 10. ينبغي ملاحظة زيادة أخرى في وقت CPU، وانخفاض يقابله في وقت الاستجابة وأخطاء HTTP 4xx.

  6. عّد إلى Cloud Shell الذي يُشغّل تطبيق العميل. اختر Enter لإيقاف التطبيق.

  7. في مدخل Microsoft Azure، أعد تعيين Instance count إلى 1. اختر تطبيق الويب، ومن جزء القائمة الأيسر اختر Scale out (App Service plan). في علامة التبويب تكوين ، قم بتعيين عدد المثيلات إلى 1، وحدد حفظ.