یک برنامه Spring Boot را به Cloud SQL متصل کنید

۱. قبل از شروع

Cloud SQL یک سرویس پایگاه داده کاملاً مدیریت‌شده است که راه‌اندازی، نگهداری، مدیریت و اداره پایگاه‌های داده رابطه‌ای شما را در Google Cloud آسان می‌کند. می‌توانید از Cloud SQL با Cloud SQL برای MySQL یا Cloud SQL برای PostgreSQL استفاده کنید.

در این آزمایشگاه کد، یاد خواهید گرفت که چگونه یک نمونه Cloud SQL را برای MySQL راه‌اندازی کنید و سپس یک برنامه Spring Boot را به‌روزرسانی کنید تا از نمونه Cloud SQL به عنوان فضای ذخیره‌سازی backend خود استفاده کند. Spring Boot Starter برای Google Cloud SQL یک DataSource با پیکربندی خودکار ارائه می‌دهد که به شما امکان می‌دهد به راحتی از Cloud SQL با حداقل تغییرات در کد خود بهره ببرید. این آزمایشگاه کد از کد منبع Spring Petclinic استفاده می‌کند.

پیش‌نیازها

  • آشنایی با زبان برنامه نویسی جاوا و ابزارهای آن
  • آشنایی با ویرایشگرهای متن استاندارد لینوکس مانند Vim، Emacs و nano

کاری که انجام خواهید داد

  • از Cloud SQL در برنامه Spring Boot خود استفاده کنید.

آنچه نیاز دارید

۲. تنظیمات و الزامات

تنظیم محیط خودتنظیم

  1. وارد کنسول گوگل کلود شوید و یک پروژه جدید ایجاد کنید یا از یک پروژه موجود دوباره استفاده کنید. اگر از قبل حساب جیمیل یا گوگل ورک اسپیس ندارید، باید یکی ایجاد کنید .

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • نام پروژه، نام نمایشی برای شرکت‌کنندگان این پروژه است. این یک رشته کاراکتری است که توسط APIهای گوگل استفاده نمی‌شود. شما همیشه می‌توانید آن را به‌روزرسانی کنید.
  • شناسه پروژه در تمام پروژه‌های گوگل کلود منحصر به فرد است و تغییرناپذیر است (پس از تنظیم، قابل تغییر نیست). کنسول کلود به طور خودکار یک رشته منحصر به فرد تولید می‌کند؛ معمولاً برای شما مهم نیست که چه باشد. در اکثر آزمایشگاه‌های کد، باید شناسه پروژه خود را (که معمولاً با عنوان PROJECT_ID شناخته می‌شود) ارجاع دهید. اگر شناسه تولید شده را دوست ندارید، می‌توانید یک شناسه تصادفی دیگر ایجاد کنید. به عنوان یک جایگزین، می‌توانید شناسه خودتان را امتحان کنید و ببینید که آیا در دسترس است یا خیر. پس از این مرحله قابل تغییر نیست و در طول پروژه باقی می‌ماند.
  • برای اطلاع شما، یک مقدار سوم، شماره پروژه ، وجود دارد که برخی از APIها از آن استفاده می‌کنند. برای کسب اطلاعات بیشتر در مورد هر سه این مقادیر، به مستندات مراجعه کنید.
  1. در مرحله بعد، برای استفاده از منابع/API های ابری، باید پرداخت صورتحساب را در کنسول ابری فعال کنید . اجرای این آزمایشگاه کد هزینه زیادی نخواهد داشت، اگر اصلاً هزینه‌ای داشته باشد. برای خاموش کردن منابع به منظور جلوگیری از پرداخت صورتحساب پس از این آموزش، می‌توانید منابعی را که ایجاد کرده‌اید یا پروژه را حذف کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان ۳۰۰ دلاری هستند.

فعال کردن پوسته ابری

  1. از کنسول ابری، روی فعال کردن پوسته ابری کلیک کنید 853e55310c205094.png .

55efc1aaa7a4d3ad.png

اگر این اولین باری است که Cloud Shell را اجرا می‌کنید، یک صفحه میانی برای توضیح آن به شما نمایش داده می‌شود. اگر با یک صفحه میانی مواجه شدید، روی ادامه کلیک کنید.

9c92662c6a846a5c.png

آماده‌سازی و اتصال به Cloud Shell فقط چند لحظه طول می‌کشد.

9f0e51b578fecce5.png

این ماشین مجازی مجهز به تمام ابزارهای توسعه مورد نیاز است. این ماشین یک دایرکتوری خانگی پایدار ۵ گیگابایتی ارائه می‌دهد و در فضای ابری گوگل اجرا می‌شود که عملکرد شبکه و احراز هویت را تا حد زیادی افزایش می‌دهد. بخش عمده‌ای از کار شما در این آزمایشگاه کد، اگر نگوییم همه، را می‌توان با یک مرورگر انجام داد.

پس از اتصال به 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].

۳. یک 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

۴. برنامه Petclinic را به صورت محلی کلون و آزمایش کنید

  1. اکنون برنامه Petclinic را به صورت محلی کلون خواهید کرد.
$ git clone https://github.com/spring-projects/spring-petclinic

$ cd spring-petclinic
  1. مطمئن شوید که نسخه جاوا صحیح تنظیم شده است و برنامه Petclinic را به صورت محلی اجرا کنید.
$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/

$ ./mvnw spring-boot:run
  1. روی پیش‌نمایش وب کلیک کنید ۱a۹۴d۵bd۱۰bfc۰۷۲.png در Cloud Shell، سپس پیش‌نمایش را روی پورت ۸۰۸۰ انتخاب کنید.

3aca52f76c6c22a3.png

شما باید صفحه اصلی Petclinic را همانطور که در اینجا در مرورگر شما نشان داده شده است، ببینید:

34e0d4f1e1765560.png

  1. کمی بازی کنید و داده اضافه کنید. برنامه از یک پایگاه داده HyperSQL درون حافظه‌ای استفاده می‌کند. اکنون از HyperSQL به استفاده از Cloud SQL به عنوان پایگاه داده خود تغییر خواهید داد.

۵. از 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. در نهایت، با اضافه کردن mysql به ویژگی spring.profiles.active از application.properties ، یک پروفایل Cloud SQL برای MySQL در برنامه Spring Boot فعال کنید:

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

۶. برنامه را در Cloud Shell اجرا کنید

  1. شما می‌توانید برنامه Spring Boot را به طور عادی با افزونه Spring Boot اجرا کنید:
$ ./mvnw -DskipTests spring-boot:run
  1. پس از شروع برنامه، روی پیش‌نمایش وب کلیک کنید ۱a۹۴d۵bd۱۰bfc۰۷۲.png در نوار ابزار Cloud Shell، سپس پیش‌نمایش را روی پورت ۸۰۸۰ انتخاب کنید.

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

۷. تبریک

شما یاد گرفتید که چگونه در برنامه Spring Boot خود به Cloud SQL متصل شوید!

اطلاعات بیشتر