Cloud SQL הוא שירות מנוהל של מסד נתונים, שבעזרתו אפשר ליצור, לתחזק ולנהל מסדי נתונים רלציוניים ב-Google Cloud. אפשר להשתמש ב-Cloud SQL עם Cloud SQL ל-MySQL או עם Cloud SQL ל-PostgreSQL.
בשיעור הזה תלמדו איך להגדיר מופע של Cloud SQL ל-MySQL, ואז לעדכן אפליקציית Spring Boot כדי להשתמש במופע של Cloud SQL כאחסון בקצה העורפי. Spring Boot Starter for Google Cloud SQL מספק DataSource עם הגדרה אוטומטית, כך שתוכלו לנצל בקלות את היתרונות של Cloud SQL עם שינויים מינימליים בקוד. ב-codelab הזה נעשה שימוש בקוד המקור של Spring Petclinic.
דרישות מוקדמות
- היכרות עם שפת התכנות Java ועם הכלים שלה
- ידע בכלי עריכת טקסט של Linux, כמו Vim, Emacs ו-nano
מה עושים
- שימוש ב-Cloud SQL באפליקציית Spring Boot.
מה צריך להכין
- פרויקט ב-Google Cloud
- דפדפן, כמו Google Chrome או Firefox
הגדרת סביבה בקצב אישי
- נכנסים אל Cloud Console ויוצרים פרויקט חדש או משתמשים בפרויקט קיים. (אם אין לכם עדיין חשבון Gmail או G Suite, אתם צריכים ליצור חשבון).
חשוב לזכור את מזהה הפרויקט, שהוא שם ייחודי בכל הפרויקטים ב-Google Cloud (השם שמופיע למעלה כבר תפוס ולא יתאים לכם, מצטערים!). בהמשך ה-codelab הזה, נתייחס אליו כאל PROJECT_ID
.
- לאחר מכן, תצטרכו להפעיל את החיוב ב-Cloud Console כדי להשתמש במשאבים של Google Cloud.
העלות של התרגול הזה לא אמורה להיות גבוהה מכמה דולרים, אבל היא יכולה להיות גבוהה יותר אם תחליטו להשתמש ביותר משאבים או אם תשאירו אותם פועלים.
משתמשים חדשים ב-Google Cloud זכאים לתקופת ניסיון בחינם בשווי 300$.
הפעלת Cloud Shell
- ב-Cloud Console, לוחצים על Activate Cloud Shell
.
אם זו הפעם הראשונה שאתם מפעילים את Cloud Shell, יוצג לכם מסך ביניים (מתחת לקו הקיפול) עם תיאור של Cloud Shell. במקרה כזה, לוחצים על המשך (והמסך הזה לא יוצג לכם יותר). כך נראה המסך החד-פעמי:
הקצאת המשאבים וחיבור ל-Cloud Shell נמשכים רק כמה רגעים.
המכונה הווירטואלית הזו כוללת את כל הכלים הדרושים למפתחים. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, מה שמשפר מאוד את הביצועים והאימות ברשת. אפשר לבצע את רוב העבודה ב-codelab הזה, אם לא את כולה, באמצעות דפדפן או Chromebook.
אחרי שמתחברים ל-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`
gcloud config list project
פלט הפקודה
[core] project = <PROJECT_ID>
אם הוא לא מוגדר, אפשר להגדיר אותו באמצעות הפקודה הבאה:
gcloud config set project <PROJECT_ID>
פלט הפקודה
Updated property [core/project].
- אחרי שמפעילים את Cloud Shell, אפשר להשתמש בשורת הפקודה כדי ליצור מכונה חדשה של Cloud SQL:
$ gcloud sql instances create my-instance
אחרי שהפעולה הזו תושלם, תוכלו להשתמש במופע.
- עכשיו יוצרים מסד נתונים שישמש את אפליקציית Petclinic:
$ gcloud sql databases create petclinic --instance my-instance
אפשר גם לגשת למכונה ולהגדיר אותה דרך Cloud Console.
- מריצים את הפקודה הבאה כדי לקבל את שם החיבור של המכונה בפורמט
project-id:zone-id:instance-id
. תשתמשו בזה בהמשך כדי להגדיר את אפליקציית Spring Boot.
$ gcloud sql instances describe my-instance |grep connectionName
- עכשיו תשכפלו את אפליקציית Petclinic ותבדקו אותה באופן מקומי.
$ git clone https://github.com/spring-projects/spring-petclinic $ cd spring-petclinic $ ./mvnw spring-boot:run
- לוחצים על תצוגה מקדימה באינטרנט
ב-Cloud Shell , ואז בוחרים באפשרות תצוגה מקדימה ביציאה 8080.
בדפדפן אמור להופיע דף הבית של Petclinic כמו שמוצג כאן:
- מומלץ לשחק קצת ולהוסיף נתונים. האפליקציה משתמשת במסד נתונים של HyperSQL בזיכרון. מעכשיו תעברו מ-HyperSQL לשימוש ב-Cloud SQL כמסד הנתונים שלכם.
מעדכנים את הקובץ 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>org.springframework.cloud</groupId>
<artifactId>spring-cloud-gcp-dependencies</artifactId>
<version>1.0.0.RC1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
...
<!-- Add CloudSQL Starter for MySQL -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-gcp-starter-sql-mysql</artifactId>
</dependency>
...
</dependencies>
<repositories>
<!-- Use Spring Milestone Repository -->
<repository>
<id>repository.spring.milestone</id>
<name>Spring Milestones Repository</name>
<url>http://repo.spring.io/milestone</url>
</repository>
</repositories>
</project>
עדכון הקובץ application-mysql.properties
- מחליפים את התוכן של
src/main/resources/application-mysql.properties
במאפיינים הבאים. תצטרכו להגדיר את שם החיבור של המופע מהשלב הקודם.
src/main/resources/application-mysql.properties
database=mysql
# Delete the rest of the original content of the file and replace with the following:
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.
spring.datasource.initialization-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
- אפשר להפעיל את אפליקציית Spring Boot כרגיל באמצעות הפלאגין Spring Boot:
$ ./mvnw -DskipTests spring-boot:run
- אחרי שהאפליקציה מופעלת, לוחצים על תצוגה מקדימה באינטרנט
בסרגל הכלים של Cloud Shell ובוחרים באפשרות תצוגה מקדימה ביציאה 8080.
בדפדפן אמור להופיע שוב דף הבית של Spring Petclinic, כמו בדוגמה הבאה:
- מוסיפים רשומה של בעלי חיות מחמד.
אופציונלי: מוודאים שהנתונים נשמרו ב-Cloud SQL
כאן אפשר לוודא שהנתונים שהזנתם נשמרו ב-Cloud SQL. כשמוצגת בקשה להזין סיסמה, מקישים על Enter (או על Return ב-Macintosh).
$ 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
למדתם איך להתחבר ל-Cloud SQL באפליקציית Spring Boot.