חיבור אפליקציית Springboot ל-Cloud SQL

1. לפני שמתחילים

Cloud SQL הוא שירות מנוהל של מסד נתונים, שבעזרתו אפשר ליצור, לתחזק ולנהל בקלות מסדי נתונים רלציוניים ב-Google Cloud. אפשר להשתמש ב-Cloud SQL עם Cloud SQL ל-MySQL או עם Cloud SQL ל-PostgreSQL.

בשיעור ה-Codelab הזה תלמדו איך להגדיר מכונה של Cloud SQL ל-MySQL ולאחר מכן לעדכן אפליקציית Springboo כדי להשתמש במכונה של Cloud SQL כאחסון הקצה העורפי שלה. Spring Boot Starter עבור Google Cloud SQL מספק DataSource שמוגדר באופן אוטומטי, וכך מאפשר לך לנצל בקלות את Cloud SQL על ידי ביצוע שינויים קלים בקוד. ב-Codelab הזה נעשה שימוש בקוד המקור של Spring Petclinic.

דרישות מוקדמות

  • היכרות עם שפת התכנות והכלים של Java
  • ידע בעורכי טקסט סטנדרטיים של Linux, כגון Vim, Emacs ו-nano

מה תעשו

  • שימוש ב-Cloud SQL באפליקציית Spring Boot

מה צריך להכין

2. הגדרה ודרישות

הגדרת סביבה בקצב עצמאי

  1. נכנסים למסוף Google Cloud ויוצרים פרויקט חדש או עושים שימוש חוזר בפרויקט קיים. אם אין לכם עדיין חשבון Gmail או חשבון Google Workspace, עליכם ליצור חשבון.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • Project name הוא השם המוצג של המשתתפים בפרויקט. זו מחרוזת תווים שלא משמשת את Google APIs. תמיד אפשר לעדכן.
  • Project ID הוא ייחודי בכל הפרויקטים ב-Google Cloud ואי אפשר לשנות אותו (אי אפשר לשנות אותו אחרי שמגדירים אותו). מסוף Cloud יוצר מחרוזת ייחודית באופן אוטומטי; בדרך כלל לא מעניין אותך מה זה. ברוב ה-codelabs תצטרכו להפנות למזהה הפרויקט שלכם (בדרך כלל מזוהה כ-PROJECT_ID). אם המזהה שנוצר לא מוצא חן בעיניכם, אתם יכולים ליצור מזהה אקראי אחר. לחלופין, אפשר לנסות שם משלך ולראות אם הוא זמין. לא ניתן לשנות אותו אחרי השלב הזה, והוא נשאר למשך הפרויקט.
  • לידיעתך, יש ערך שלישי, Project Number, שבו משתמשים בחלק מממשקי ה-API. מידע נוסף על כל שלושת הערכים האלה זמין במסמכי התיעוד.
  1. בשלב הבא צריך להפעיל את החיוב במסוף Cloud כדי להשתמש במשאבים או בממשקי API של Cloud. מעבר ב-Codelab הזה לא יעלה הרבה כסף, אם בכלל. כדי להשבית משאבים ולא לצבור חיובים מעבר למדריך הזה, אתם יכולים למחוק את המשאבים שיצרתם או למחוק את הפרויקט. משתמשים חדשים ב-Google Cloud זכאים להשתתף בתוכנית תקופת ניסיון בחינם בשווי 1,200 ש"ח.

הפעלת Cloud Shell

  1. במסוף Cloud, לוחצים על Activate Cloud Shell 853e55310c205094.png.

55efc1aaa7a4d3ad.png

אם זו הפעם הראשונה שאתם מפעילים את Cloud Shell, יוצג לכם מסך ביניים שמתאר מהו. אם הוצג לכם מסך ביניים, לוחצים על המשך.

9c92662c6a846a5c.png

ההקצאה וההתחברות ל-Cloud Shell נמשכת כמה דקות.

9f0e51b578fecce5.png

במכונה הווירטואלית הזו נמצאים כל כלי הפיתוח הדרושים. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, מה שמשפר משמעותית את ביצועי הרשת והאימות. אם לא את כולן, ניתן לבצע חלק גדול מהעבודה ב-Codelab הזה באמצעות דפדפן.

אחרי ההתחברות ל-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.

  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. לוחצים על Web Preview 1a94d5bd10bfc072.png ב-Cloud Shell , ובוחרים באפשרות Preview on Port 8080.

3aca52f76c6c22a3.png

דף הבית של Petclinic אמור להופיע כאן בדפדפן:

34e0d4f1e1765560.png

  1. מומלץ לשחק קצת ולהוסיף נתונים. האפליקציה משתמשת במסד נתונים של HyperSQL בזיכרון. עכשיו אתם עוברים מ-HyperSQL לשימוש ב-Cloud SQL כמסד הנתונים שלכם.

5. שימוש ב-Cloud SQL ב-Petclinic

מעדכנים את קובץ pom.xml של Maven

מעדכנים את הקובץ 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>

עדכון application-mysql.properties

  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. אחרי שהאפליקציה מתחילה, לוחצים על Web Preview1a94d5bd10bfc072.pngבסרגל הכלים של Cloud Shell, ולאחר מכן בוחרים באפשרות Preview on Port 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

מידע נוסף