التشغيل السريع: نشر تطبيق Java Native Image الأول إلى Azure Spring Apps
إشعار
سيتم إهمال الخطط الأساسية والقياسية والمؤسسة بدءا من منتصف مارس 2025، مع فترة تقاعد 3 سنوات. نوصي بالانتقال إلى Azure Container Apps. لمزيد من المعلومات، راجع إعلان إيقاف Azure Spring Apps.
سيتم إهمال الاستهلاك القياسي والخطة المخصصة بدءا من 30 سبتمبر 2024، مع إيقاف التشغيل الكامل بعد ستة أشهر. نوصي بالانتقال إلى Azure Container Apps. لمزيد من المعلومات، راجع ترحيل استهلاك Azure Spring Apps القياسي وخطة مخصصة إلى Azure Container Apps.
تنطبق هذه المقالة على:❌ Basic/Standard ✔️ Enterprise
يوضح هذا التشغيل السريع كيفية نشر تطبيق Spring Boot إلى Azure Spring Apps كصورة أصلية.
تمكنك إمكانية الصورة الأصلية من تحويل تطبيقات Java برمجيا إلى ملفات تنفيذية مستقلة، تعرف باسم الصور الأصلية. يمكن أن توفر هذه الملفات التنفيذية فوائد كبيرة، بما في ذلك أوقات بدء التشغيل الأسرع وخفض حمل ذاكرة وقت التشغيل مقارنة ب JVM التقليدي (جهاز Java الظاهري).
نموذج المشروع هو تطبيق Spring Petclinic. تظهر لقطة الشاشة التالية التطبيق:
1. المتطلبات الأساسية
- اشتراك Azure. في حال لم يكن لديك اشتراك Azure، أنشئ حسابًا مجانيًا قبل البدء.
- Git.
- Java Development Kit (JDK)، الإصدار 17.
- إصدار Azure CLI 2.45.0 أو أعلى. استخدم الأمر التالي لتثبيت ملحق Azure Spring Apps:
az extension add --name spring
- إذا كنت تقوم بنشر مثيل خطة Azure Spring Apps Enterprise للمرة الأولى في الاشتراك الهدف، فشاهد قسم المتطلبات في عرض عرض طبقة Azure Spring Apps Enterprise في Azure Marketplace.
2. إعداد مشروع Spring Petclinic
استخدم الخطوات التالية لاستنساخ التطبيق وتشغيله محليا.
استخدم الأمر التالي لاستنساخ مشروع Spring Petclinic من GitHub:
git clone https://github.com/Azure-Samples/spring-petclinic.git
استخدم الأمر التالي لإنشاء مشروع Spring Petclinic:
cd spring-petclinic ./mvnw clean package -DskipTests -Pnative package
استخدم الأمر التالي لتشغيل تطبيق Spring Petclinic باستخدام Maven:
java -jar target/spring-petclinic-3.1.0-SNAPSHOT.jar
انتقل إلى
http://localhost:8080
في متصفحك للوصول إلى تطبيق Spring Petclinic.
3. إعداد بيئة السحابة
المورد الرئيسي المطلوب لتشغيل تطبيق Spring Petclinic هو مثيل Azure Spring Apps. يوفر هذا القسم الخطوات لإنشاء المورد.
3.1. توفير أسماء لكل مورد
إنشاء متغيرات للاحتفاظ بأسماء الموارد باستخدام الأوامر التالية. تأكد من استبدل العناصر النائبة بقيمتك الخاصة.
export RESOURCE_GROUP=<resource-group-name>
export LOCATION=<location>
export AZURE_SPRING_APPS_NAME=<Azure-Spring-Apps-service-instance-name>
export NATIVE_BUILDER=native-builder
export JAR_APP_NAME=jar-app
export NATIVE_APP_NAME=native-app
export JAR_PATH=target/spring-petclinic-3.1.0-SNAPSHOT.jar
3.2. إنشاء مجموعة موارد جديدة
استخدم الخطوات التالية لإنشاء مجموعة موارد جديدة:
استخدم الأمر التالي لتسجيل الدخول إلى Azure CLI:
az login
استخدم الأمر التالي لتعيين الموقع الافتراضي:
az configure --defaults location=${LOCATION}
استخدم الأمر التالي لسرد جميع الاشتراكات المتوفرة لتحديد معرف الاشتراك المراد استخدامه:
az account list --output table
استخدم الأمر التالي لتعيين الاشتراك الافتراضي:
az account set --subscription <subscription-ID>
استخدم الأمر التالي لإنشاء مجموعة موارد:
az group create --resource-group ${RESOURCE_GROUP}
استخدم الأمر التالي لتعيين مجموعة الموارد التي تم إنشاؤها حديثا كمجموعة الموارد الافتراضية:
az configure --defaults group=${RESOURCE_GROUP}
3.3. إنشاء مثيل Azure Spring Apps
يتم استخدام Azure Spring Apps لاستضافة تطبيق Spring Petclinic. استخدم الخطوات التالية لإنشاء مثيل Azure Spring Apps وتطبيقين داخله:
استخدم الأمر التالي لإنشاء مثيل خدمة Azure Spring Apps. يتطلب إنشاء صورة أصلية 16 غيغابايت من الذاكرة أثناء إنشاء الصورة، لذا قم بتكوين حجم تجمع البناء ك S7.
az spring create \ --name ${AZURE_SPRING_APPS_NAME} \ --sku enterprise \ --build-pool-size S7
إنشاء ملف builder-native.json في الدليل الحالي ثم إضافة المحتوى التالي:
{ "stack": { "id": "io.buildpacks.stacks.jammy", "version": "tiny" }, "buildpackGroups": [ { "name": "default", "buildpacks": [ { "id": "tanzu-buildpacks/java-native-image" } ] } ] }
استخدم الأمر التالي لإنشاء منشئ مخصص لإنشاء تطبيق الصورة الأصلية:
az spring build-service builder create \ --service ${AZURE_SPRING_APPS_NAME} \ --name ${NATIVE_BUILDER} \ --builder-file builder-native.json
استخدم الأمر التالي لإنشاء تطبيق في مثيل Azure Spring Apps لنشر تطبيق Spring Petclinic كملف JAR. تكوين حد الذاكرة إلى 1 Gi.
az spring app create \ --service ${AZURE_SPRING_APPS_NAME} \ --name ${JAR_APP_NAME} \ --cpu 1 \ --memory 1Gi \ --assign-endpoint true
استخدم الأمر التالي لإنشاء تطبيق في مثيل Azure Spring Apps لنشر تطبيق Spring Petclinic كصورة أصلية:
az spring app create \ --service ${AZURE_SPRING_APPS_NAME} \ --name ${NATIVE_APP_NAME} \ --cpu 1 \ --memory 1Gi \ --assign-endpoint true
4. نشر التطبيق إلى Azure Spring Apps
الآن بعد أن تم إعداد بيئة السحابة، أصبحت التطبيقات جاهزة للتوزيع.
استخدم الأمر التالي لنشر تطبيق Spring Petclinic كملف JAR:
az spring app deploy \
--service ${AZURE_SPRING_APPS_NAME} \
--name ${JAR_APP_NAME} \
--artifact-path ${JAR_PATH} \
--build-env BP_JVM_VERSION=17
استخدم الأمر التالي لنشر تطبيق Spring Petclinic كصورة أصلية:
az spring app deploy \
--service ${AZURE_SPRING_APPS_NAME} \
--name ${NATIVE_APP_NAME} \
--builder ${NATIVE_BUILDER} \
--build-cpu 8 \
--build-memory 16Gi \
--artifact-path ${JAR_PATH} \
--build-env BP_JVM_VERSION=17 BP_NATIVE_IMAGE=true
5. التحقق من صحة تطبيق الصور الأصلي
يمكنك الآن الوصول إلى تطبيق الصورة الأصلية المنشور لمعرفة ما إذا كان يعمل أم لا. استخدم الخطوات التالية للتحقق من الصحة:
بعد اكتمال النشر، يمكنك تشغيل الأمر التالي للحصول على عنوان URL للتطبيق:
az spring app show \ --service ${AZURE_SPRING_APPS_NAME} \ --name ${NATIVE_APP_NAME} \ --output table
يمكنك الوصول إلى التطبيق باستخدام عنوان URL الموضح في الإخراج ك
Public Url
. يجب أن تظهر الصفحة كما رأيتها o localhost.استخدم الأمر التالي للتحقق من سجل التطبيق للتحقيق في أي مشكلة توزيع:
az spring app logs \ --service ${AZURE_SPRING_APPS_NAME} \ --name ${NATIVE_APP_NAME}
6. مقارنة الأداء ل JAR والصورة الأصلية
تصف الأقسام التالية كيفية مقارنة الأداء بين JAR وتوزيع الصورة الأصلية.
وقت بدء تشغيل الخادم
استخدم الأمر التالي للتحقق من سجل Started PetClinicApplication in XXX seconds
التطبيق للحصول على وقت بدء تشغيل الخادم لتطبيق JAR:
az spring app logs \
--service ${AZURE_SPRING_APPS_NAME} \
--name ${JAR_APP_NAME}
يبلغ وقت بدء تشغيل الخادم حوالي 25 ثانية لتطبيق JAR.
استخدم الأمر التالي للتحقق من سجل التطبيق للحصول على وقت بدء تشغيل الخادم لتطبيق صورة أصلية:
az spring app logs \
--service ${AZURE_SPRING_APPS_NAME} \
--name ${NATIVE_APP_NAME}
وقت بدء تشغيل الخادم أقل من 0.5 ثانية لتطبيق صورة أصلية.
استخدام الذاكرة
استخدم الأمر التالي لتقليص حجم الذاكرة إلى 512 ميبي بايت لتطبيق صورة أصلية:
az spring app scale \
--service ${AZURE_SPRING_APPS_NAME} \
--name ${NATIVE_APP_NAME} \
--memory 512Mi
يجب أن يظهر إخراج الأمر أن تطبيق الصورة الأصلية بدأ بنجاح.
استخدم الأمر التالي لتقليل حجم الذاكرة إلى 512 Mi لتطبيق JAR:
az spring app scale \
--service ${AZURE_SPRING_APPS_NAME} \
--name ${JAR_APP_NAME} \
--memory 512Mi
يجب أن يظهر إخراج الأمر أن تطبيق JAR فشل في البدء بسبب عدم كفاية الذاكرة. يجب أن تكون رسالة الإخراج مشابهة للمثال التالي: Terminating due to java.lang.OutOfMemoryError: Java heap space
.
يوضح الشكل التالي استخدام الذاكرة المحسن لنشر الصورة الأصلية لحمل عمل ثابت يبلغ 400 طلب في الثانية في تطبيق Petclinic. يبلغ استخدام الذاكرة حوالي 1/5 من الذاكرة المستهلكة بواسطة توزيع JAR المكافئ.
توفر الصور الأصلية أوقات بدء تشغيل أسرع وتقليل حمل ذاكرة وقت التشغيل مقارنة بجهاز Java الظاهري التقليدي (JVM).
7. تنظيف الموارد
إذا كنت تخطط لمواصلة العمل بالبدايات السريعة والبرامج التعليمية اللاحقة، فقد ترغب في ترك هذه الموارد في مكانها. عندما لم تعد بحاجة إلى الموارد، احذفها عن طريق حذف مجموعة الموارد. استخدم الأمر التالي لحذف مجموعة الموارد:
az group delete --name ${RESOURCE_GROUP}
8. الخطوات التالية
لمزيد من المعلومات، راجع المقالات التالية:
- نماذج Azure Spring Apps.
- Spring on Azure
- Spring Cloud Azure