نشر تطبيق Spring Boot في بيئة App Engine العادية

1. قبل البدء

تتميّز تطبيقات App Engine بسهولة إنشائها وصيانتها وتوسيع نطاقها مع تغيُّر احتياجاتك من حيث عدد الزيارات ومساحة تخزين البيانات. باستخدام App Engine، لن تحتاج إلى صيانة أي خوادم. ما عليك سوى تحميل تطبيقك وسيكون جاهزًا للاستخدام.

تتوسّع تطبيقات App Engine تلقائيًا استنادًا إلى عدد الزيارات الواردة. تتوفّر جميع الميزات التالية بشكلٍ أصلي وقابلة للتخصيص بدرجة كبيرة: موازنة التحميل، والخدمات المصغّرة، والأذونات، وقواعد بيانات SQL وNoSQL، والتخزين المؤقت في الذاكرة، وتقسيم عدد الزيارات، والتسجيل، والبحث، والتحكّم في الإصدار، وعمليات الطرح والتراجع، وفحص الأمان.

تتيح بيئة App Engine العادية وبيئة App Engine المرنة استخدام مجموعة من لغات البرمجة، بما في ذلك Java وPython وPHP وNodeJS وGo، وتمنح البيئتان المطوّرين أقصى قدر من المرونة في طريقة عمل تطبيقاتهم. تتميّز كل بيئة بنقاط قوة معيّنة. لمزيد من المعلومات، يُرجى الاطّلاع على اختيار بيئة App Engine.

ستتعلّم كيفية نشر تطبيق Spring Boot في بيئة App Engine العادية. يتم تقليل حجم البيئة العادية إلى صفر مثيل عندما لا يستخدمها أحد، ويتم زيادتها تلقائيًا.

المتطلبات الأساسية

  • معرفة بلغة البرمجة Java وأدواتها
  • معرفة أدوات تحرير النصوص العادية في Linux، مثل Vim وEmacs وnano

المهام التي ستنفِّذها

  • كيفية إنشاء تطبيق Spring Boot Java على App Engine

المتطلبات

2. الإعداد والمتطلبات

إعداد البيئة بالسرعة التي تناسبك

  1. سجِّل الدخول إلى Google Cloud Console وأنشِئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.

b35bf95b8bf3d5d8.pnga99b7ace416376c4.pngbd84a6d3004737c5.png

  • اسم المشروع هو الاسم المعروض للمشاركين في هذا المشروع. وهي سلسلة أحرف لا تستخدمها Google APIs. ويمكنك تعديلها في أي وقت.
  • رقم تعريف المشروع هو معرّف فريد في جميع مشاريع Google Cloud ولا يمكن تغييره (لا يمكن تغييره بعد ضبطه). تنشئ Cloud Console تلقائيًا سلسلة فريدة، ولا يهمّك عادةً ما هي. في معظم دروس البرمجة، عليك الرجوع إلى رقم تعريف مشروعك (يُشار إليه عادةً باسم PROJECT_ID). إذا لم يعجبك رقم التعريف الذي تم إنشاؤه، يمكنك إنشاء رقم تعريف عشوائي آخر. يمكنك بدلاً من ذلك تجربة اسم مستخدم من اختيارك ومعرفة ما إذا كان متاحًا. لا يمكن تغيير هذا الخيار بعد هذه الخطوة ويظل ساريًا طوال مدة المشروع.
  • للعلم، هناك قيمة ثالثة، وهي رقم المشروع، وتستخدمها بعض واجهات برمجة التطبيقات. يمكنك الاطّلاع على مزيد من المعلومات حول هذه القيم الثلاث في المستندات.
  1. بعد ذلك، عليك تفعيل الفوترة في Cloud Console لاستخدام موارد/واجهات برمجة تطبيقات Cloud. لن تكلفك تجربة هذا الدرس البرمجي الكثير، إن وُجدت أي تكلفة. لإيقاف الموارد وتجنُّب تكبُّد رسوم فوترة تتجاوز هذا البرنامج التعليمي، يمكنك حذف الموارد التي أنشأتها أو حذف المشروع. يمكن لمستخدمي Google Cloud الجدد الاستفادة من برنامج الفترة التجريبية المجانية بقيمة 300 دولار أمريكي.

Cloud Shell

ستستخدم Cloud Shell، وهي بيئة سطر أوامر تعمل في Google Cloud.

تفعيل Cloud Shell

  1. من Cloud Console، انقر على تفعيل Cloud Shell 853e55310c205094.png.

55efc1aaa7a4d3ad.png

إذا كانت هذه هي المرة الأولى التي تبدأ فيها Cloud Shell، ستظهر لك شاشة وسيطة توضّح ماهيتها. إذا ظهرت لك شاشة وسيطة، انقر على متابعة.

9c92662c6a846a5c.png

يستغرق توفير Cloud Shell والاتصال به بضع لحظات فقط.

9f0e51b578fecce5.png

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

بعد الاتصال بـ Cloud Shell، من المفترض أن يظهر لك أنّه تم إثبات هويتك وأنّ المشروع مضبوط على رقم تعريف مشروعك.

  1. نفِّذ الأمر التالي في Cloud Shell للتأكّد من إثبات هويتك:
gcloud auth list

ناتج الأمر

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. نفِّذ الأمر التالي في Cloud Shell للتأكّد من أنّ أمر gcloud يعرف مشروعك:
gcloud config list project

ناتج الأمر

[core]
project = <PROJECT_ID>

إذا لم يكن كذلك، يمكنك تعيينه من خلال هذا الأمر:

gcloud config set project <PROJECT_ID>

ناتج الأمر

Updated property [core/project].

3- إنشاء تطبيق ويب جديد باستخدام Spring Boot

بعد تشغيل Cloud Shell، يمكنك استخدام سطر الأوامر لإنشاء تطبيق Spring Boot جديد باستخدام Spring Initializr.

$ curl https://start.spring.io/starter.tgz \
  -d bootVersion=3.0.5 \
  -d dependencies=web \
  -d type=maven-project \
  -d baseDir=gae-standard-example | tar -xzvf -
$ cd gae-standard-example

4. تعديل ملف pom.xml في Maven

هناك طريقتان لنشر تطبيق خادم Java، إما باستخدام Maven App Engine Plugin أو Gradle App Engine Plugin، أو من خلال نشر حزمة دليل war. ستستخدم Maven App Engine Plugin لنشر التطبيق.

إضافة Maven App Engine Plugin

تعديل pom.xml لتضمين مكوّن إضافي على Google Cloud يسهّل عملية النشر يمكنك استخدام Vim أو nano أو Emacs لتعديل الملف.

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" ...>
  ...
  <build>
    <plugins>
      ...
      <plugin>
        <groupId>com.google.cloud.tools</groupId>
        <artifactId>appengine-maven-plugin</artifactId>
        <version>2.4.4</version>
        <configuration>
          <version>1</version>
          <projectId>GCLOUD_CONFIG</projectId>
        </configuration>
      </plugin>
      ...
    </plugins>
  </build>
</project>

5- إضافة واصف App Engine

  1. لنشر التطبيق في بيئة App Engine العادية، عليك إنشاء ملف واصف src/main/appengine/app.yaml جديد.
$ mkdir -p src/main/appengine/
$ touch src/main/appengine/app.yaml
  1. عدِّل الملف src/main/appengine/app.yaml وأضِف المحتوى التالي:

src/main/appengine/app.yaml

runtime: java17
instance_class: F1

6. إضافة وحدة تحكّم

أضِف وحدة تحكّم جديدة تعرض "hello world!" في DemoApplication.java.

src/main/java/com/example/demo/DemoApplication.java

package com.example.demo;

...

// Add imports
import org.springframework.web.bind.annotation.*;

@SpringBootApplication
public class DemoApplication {
  public static void main(String[] args) {
    SpringApplication.run(DemoApplication.class, args);
  }
}

// Add the controller.
@RestController
class HelloWorldController {
  @GetMapping("/")
  public String hello() {
    return "hello world!";
  }
}

7. تشغيل التطبيق محليًا

  1. تأكَّد من ضبط JAVA_HOME على إصدار JDK الصحيح:
$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/
  1. يمكنك بدء تطبيق Spring Boot باستخدام إضافة Spring Boot باتّباع الخطوات التالية:
$ ./mvnw -DskipTests spring-boot:run
  1. بعد بدء تشغيل التطبيق، انقر على معاينة الويب 1a94d5bd10bfc072.pngفي شريط أدوات Cloud Shell واختَر المعاينة على المنفذ 8080.

3aca52f76c6c22a3.png

سيتم فتح علامة تبويب في المتصفّح والاتصال بالخادم الذي بدأته.

7b0d8494f647822a.png

8. نشر التطبيق على App Engine

  1. أولاً، عليك تهيئة المشروع لتتمكّن من تشغيل تطبيقات App Engine. عليك أيضًا تهيئة المشروع للتشغيل في المنطقة الوسطى من الولايات المتحدة.
$ gcloud app create --region us-central
You are creating an app for project [...].
WARNING: Creating an App Engine application for a project is irreversible and the region
cannot be changed. More information about regions is at
https://cloud.google.com/appengine/docs/locations
  1. بعد ذلك، يمكنك نشر تطبيقك في بيئة App Engine العادية من خلال تنفيذ mvn appengine:deploy.
$ ./mvnw -DskipTests package appengine:deploy
... first time deploy may take a couple of minutes
  1. بعد نشر التطبيق، يمكنك الانتقال إليه من خلال فتح http://‎<project-id>.appspot.com في متصفّح الويب أو استخدام الأمر التالي في Cloud Shell:
$ gcloud app browse
... [It may print out the URL for your app]

9. تنظيف

لا يمكنك حذف تطبيق App Engine، ولكن يمكنك إيقافه.

انتقِل إلى App Engine وSettings في Google Cloud Console واختَر Disable Application:

8052c1e4ad73d70e.png

بدلاً من ذلك، يمكنك حذف المشروع بأكمله:

$ gcloud projects delete YOUR-PROJECT-ID

10. تهانينا

لقد تعلّمت كيفية كتابة أول تطبيق ويب لك على App Engine.

مزيد من المعلومات