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
מה צריך להכין
- פרויקט ב-Google Cloud
- דפדפן, למשל Google Chrome או Firefox
2. הגדרה ודרישות
הגדרת סביבה בקצב עצמאי
- נכנסים למסוף Google Cloud ויוצרים פרויקט חדש או עושים שימוש חוזר בפרויקט קיים. אם אין לכם עדיין חשבון Gmail או חשבון Google Workspace, עליכם ליצור חשבון.
- Project name הוא השם המוצג של המשתתפים בפרויקט. זו מחרוזת תווים שלא משמשת את Google APIs. תמיד אפשר לעדכן.
- Project ID הוא ייחודי בכל הפרויקטים ב-Google Cloud ואי אפשר לשנות אותו (אי אפשר לשנות אותו אחרי שמגדירים אותו). מסוף Cloud יוצר מחרוזת ייחודית באופן אוטומטי; בדרך כלל לא מעניין אותך מה זה. ברוב ה-codelabs תצטרכו להפנות למזהה הפרויקט שלכם (בדרך כלל מזוהה כ-
PROJECT_ID
). אם המזהה שנוצר לא מוצא חן בעיניכם, אתם יכולים ליצור מזהה אקראי אחר. לחלופין, אפשר לנסות שם משלך ולראות אם הוא זמין. לא ניתן לשנות אותו אחרי השלב הזה, והוא נשאר למשך הפרויקט. - לידיעתך, יש ערך שלישי, Project Number, שבו משתמשים בחלק מממשקי ה-API. מידע נוסף על כל שלושת הערכים האלה זמין במסמכי התיעוד.
- בשלב הבא צריך להפעיל את החיוב במסוף Cloud כדי להשתמש במשאבים או בממשקי API של Cloud. מעבר ב-Codelab הזה לא יעלה הרבה כסף, אם בכלל. כדי להשבית משאבים ולא לצבור חיובים מעבר למדריך הזה, אתם יכולים למחוק את המשאבים שיצרתם או למחוק את הפרויקט. משתמשים חדשים ב-Google Cloud זכאים להשתתף בתוכנית תקופת ניסיון בחינם בשווי 1,200 ש"ח.
הפעלת Cloud Shell
- במסוף Cloud, לוחצים על Activate Cloud Shell .
אם זו הפעם הראשונה שאתם מפעילים את Cloud Shell, יוצג לכם מסך ביניים שמתאר מהו. אם הוצג לכם מסך ביניים, לוחצים על המשך.
ההקצאה וההתחברות ל-Cloud Shell נמשכת כמה דקות.
במכונה הווירטואלית הזו נמצאים כל כלי הפיתוח הדרושים. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, מה שמשפר משמעותית את ביצועי הרשת והאימות. אם לא את כולן, ניתן לבצע חלק גדול מהעבודה ב-Codelab הזה באמצעות דפדפן.
אחרי ההתחברות ל-Cloud Shell, אתם אמורים לראות שהפרויקט מאומת ושהפרויקט מוגדר לפי מזהה הפרויקט שלכם.
- מריצים את הפקודה הבאה ב-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`
- מריצים את הפקודה הבאה ב-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
- אחרי ההשקה של Cloud Shell, תוכלו להשתמש בשורת הפקודה כדי ליצור מכונה חדשה של Cloud SQL:
$ gcloud sql instances create my-instance
כשהפעולה הזו תסתיים, המכונה תהיה מוכנה לשימוש.
- בשלב הבא יוצרים מסד נתונים שישמש את אפליקציית Petclinic:
$ gcloud sql databases create petclinic --instance my-instance
אתם יכולים גם לגשת למכונה ולהגדיר אותה דרך מסוף Cloud.
- כדי לקבל את שם החיבור של המכונה בפורמט
project-id:zone-id:instance-id
, מריצים את הפקודה הבאה. תשתמשו בה בהמשך כדי להגדיר את אפליקציית Spring Boot.
$ gcloud sql instances describe my-instance | grep connectionName
4. שכפול ובדיקה של אפליקציית Petclinic באופן מקומי
- עכשיו תשכפלו את אפליקציית Petclinic באופן מקומי.
$ git clone https://github.com/spring-projects/spring-petclinic $ cd spring-petclinic
- צריך לוודא שהגרסה הנכונה של Java מוגדרת ולהריץ את האפליקציה Petclinic באופן מקומי.
$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/ $ ./mvnw spring-boot:run
- לוחצים על Web Preview ב-Cloud Shell , ובוחרים באפשרות Preview on Port 8080.
דף הבית של Petclinic אמור להופיע כאן בדפדפן:
- מומלץ לשחק קצת ולהוסיף נתונים. האפליקציה משתמשת במסד נתונים של 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
- מחליפים את התוכן של
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
- לסיום, כדי להפעיל פרופיל של 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
- אפשר להפעיל את אפליקציית Spring Boot כרגיל באמצעות הפלאגין Spring Boot:
$ ./mvnw -DskipTests spring-boot:run
- אחרי שהאפליקציה מתחילה, לוחצים על Web Previewבסרגל הכלים של Cloud Shell, ולאחר מכן בוחרים באפשרות Preview on Port 8080.
דף הבית של Spring Petclinic אמור להופיע שוב כאן בדפדפן:
- הוספת רשומה של בעלים של חיית מחמד.
אופציונלי: מוודאים שהנתונים נשמרו ב-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