نشر تطبيق 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

المتطلبات

  • مشروع على Google Cloud
  • متصفّح، مثل Google Chrome

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

إعداد بيئة ذاتية

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

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.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. تعديل ملف Maven pom.xml

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

إضافة المكوّن الإضافي Maven App Engine

عليك تحديث 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 لك!

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