ربط تطبيق Spring Boot بخدمة Cloud SQL

ربط تطبيق Spring Boot بخدمة Cloud SQL

لمحة عن هذا الدرس التطبيقي حول الترميز

subjectتاريخ التعديل الأخير: أبريل 13, 2023
account_circleتأليف موظف Google

1. قبل البدء

Cloud SQL هي خدمة قاعدة بيانات مُدارة بالكامل تسهِّل إعداد قواعد البيانات الارتباطية وصيانتها وإدارتها وإدارتها على Google Cloud. يمكنك استخدام Cloud SQL مع Cloud SQL لتطبيق MySQL أو Cloud SQL لتطبيق PostgreSQL.

في هذا الدرس التطبيقي حول الترميز، ستتعلّم كيفية إعداد مثيل Cloud SQL لمثيل MySQL ثم تحديث تطبيق Spring Boot لاستخدام مثيل Cloud SQL كمساحة تخزين في الخلفية. يوفّر Spring Boot Starter لـ Google Cloud SQL DataSource تم ضبطه تلقائيًا، ما يسمح لك بالاستفادة بسهولة من Cloud SQL مع إجراء تغييرات بسيطة على الرمز. يستخدم هذا الدرس التطبيقي حول الترميز رمز مصدر Spring Petclinic.

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

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

الأنشطة

  • يمكنك استخدام Cloud SQL في تطبيق Spring Boot.

المتطلبات

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

  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. إعداد Cloud SQL لمثيل MySQL

  1. بعد إطلاق Cloud Shell، يمكنك استخدام سطر الأوامر لإنشاء مثيل Cloud SQL جديد:
$ gcloud sql instances create my-instance

بعد اكتمال هذه العملية، سيكون المثيل جاهزًا للاستخدام.

  1. الآن قم بإنشاء قاعدة بيانات ستستخدمها لتطبيق Petclinic:
$ gcloud sql databases create petclinic --instance my-instance

يمكنك أيضًا الوصول إلى المثيل وضبطه من خلال Cloud Console.

  1. احصل على اسم اتصال المثيل بالتنسيق project-id:zone-id:instance-id من خلال تنفيذ الأمر التالي. وستستخدمه لاحقًا في ضبط تطبيق Spring Boot.
$ gcloud sql instances describe my-instance | grep connectionName

4. استنسِخ تطبيق Petclinic واختبِره على الجهاز

  1. الآن يمكنك استنساخ تطبيق Petclinic محليًا.
$ git clone https://github.com/spring-projects/spring-petclinic

$ cd spring-petclinic
  1. تأكَّد من ضبط إصدار Java الصحيح وشغِّل تطبيق Petclinic على الجهاز.
$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/

$ ./mvnw spring-boot:run
  1. انقر على معاينة الويب 1a94d5bd10bfc072.png في Cloud Shell، ثم اختَر معاينة على المنفذ 8080.

3aca52f76c6c22a3.png

من المفترض أن تظهر لك صفحة Petclinic الرئيسية كما هو موضح هنا في متصفحك:

34e0d4f1e1765560.png

  1. ويمكنك إجراء تعديلات وإضافة البيانات. يستخدم التطبيق قاعدة بيانات HyperSQL مضمَّنة في الذاكرة. يمكنك الآن التبديل من HyperSQL إلى استخدام Cloud SQL كقاعدة بياناتك.

5. استخدام Cloud SQL في Petclinic

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

عدِّل ملف pom.xml كما هو موضّح هنا. يوفّر إجراء التفعيل كائن DataSource تم ضبطه تلقائيًا للاتصال بقاعدة بيانات Cloud SQL. يمكنك استخدام Vim أو nano أو Emacs لتعديل الملف.

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" ...>
    ...
   
<!-- Add Spring Cloud GCP Dependency BOM -->
   
<dependencyManagement>
       
<dependencies>
         
<dependency>
         
<groupId>com.google.cloud</groupId>
         
<artifactId>spring-cloud-gcp-dependencies</artifactId>
         
<version>4.1.4</version>
         
<type>pom</type>
         
<scope>import</scope>
         
</dependency>
     
</dependencies>
   
</dependencyManagement>
   
<dependencies>
      ...
     
<!-- Add CloudSQL Starter for MySQL -->
     
<dependency>
       
<groupId>com.google.cloud</groupId>
       
<artifactId>spring-cloud-gcp-starter-sql-mysql</artifactId>
     
</dependency>
      ...
   
</dependencies>
</project>

تعديل خصائص app-mysql

  1. استبدال محتوى src/main/resources/application-mysql.properties بالسمات التالية. ستحتاج إلى ضبط اسم اتصال المثيل من الخطوة السابقة.

src/main/resources/application-mysql.properties

database=mysql

spring
.cloud.gcp.sql.database-name=petclinic
spring
.cloud.gcp.sql.instance-connection-name=YOUR_CLOUD_SQL_INSTANCE_CONNECTION_NAME

# Initialize the database since the newly created Cloud SQL database has no tables. The following flag is for Spring Boot 2.5+.
spring
.sql.init.mode=always  

  1. أخيرًا، يمكنك تفعيل Cloud SQL للملف الشخصي على MySQL في تطبيق Spring Boot من خلال إضافة "mysql" إلى "application.properties" الخاصية "spring.profiles.active":

src/main/resources/application.properties

# Keep the content of the file the same
...

# In the last line, add mysql to the spring.profiles.active property
spring
.profiles.active=mysql

6. تشغيل التطبيق في Cloud Shell

  1. يمكنك بدء تطبيق Spring Boot بشكل طبيعي باستخدام المكون الإضافي Spring Boot:
$ ./mvnw -DskipTests spring-boot:run
  1. بعد بدء التطبيق، انقر على معاينة الويب 1a94d5bd10bfc072.pngفي شريط أدوات Cloud Shell، ثم اختَر معاينة على المنفذ 8080.

3aca52f76c6c22a3.png

يُفترض أن ترى الصفحة الرئيسية لـ Spring Petclinic مرة أخرى كما هو موضح هنا في المتصفح:

34e0d4f1e1765560.png

  1. أضِف إدخالاً لمالك حيوان أليف.

اختياري: التحقّق من أن Cloud SQL احتفظت بالبيانات

يمكنك التحقّق من أن البيانات التي أدخلتها تم الاحتفاظ بها في Cloud SQL كما هو موضّح هنا. اضغط على مفتاح Enter عندما يُطلب منك إدخال كلمة مرور.

$ gcloud sql connect my-instance -u root
Whitelisting your IP for incoming connection for 5 minutes...done.
Enter password: <Press Enter, there is no password by default>
...
mysql> use petclinic;
mysql> select * from owners;

اختياري: حذف مثيل Cloud SQL

بعد إيقاف التطبيق، يمكنك حذف مثيل Cloud SQL باستخدام الأمر التالي:

$ gcloud sql instances delete my-instance

7. تهانينا

لقد تعلمت كيفية الاتصال بخدمة Cloud SQL في تطبيق Spring Boot

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