Menghubungkan aplikasi Spring Boot ke Cloud SQL

1. Sebelum memulai

Cloud SQL adalah layanan database terkelola sepenuhnya yang memudahkan penyiapan, pemeliharaan, pengelolaan, dan pengaturan database relasional di Google Cloud. Anda dapat menggunakan Cloud SQL dengan Cloud SQL untuk MySQL atau Cloud SQL untuk PostgreSQL.

Dalam codelab ini, Anda akan mempelajari cara menyiapkan instance Cloud SQL untuk MySQL, lalu mengupdate aplikasi Spring Boot untuk menggunakan instance Cloud SQL sebagai penyimpanan backend-nya. Spring Boot Starter untuk Google Cloud SQL menyediakan DataSource yang dikonfigurasi otomatis, sehingga Anda dapat memanfaatkan Cloud SQL dengan mudah tanpa perlu banyak perubahan pada kode. Codelab ini menggunakan kode sumber Spring Petclinic.

Prasyarat

  • Pemahaman tentang bahasa dan alat pemrograman Java
  • Pengetahuan tentang editor teks Linux standar, seperti Vim, Emacs, dan nano

Yang akan Anda lakukan

  • Gunakan Cloud SQL di aplikasi Spring Boot Anda.

Yang Anda butuhkan

2. Penyiapan dan persyaratan

Penyiapan lingkungan mandiri

  1. Login ke Google Cloud Console dan buat project baru atau gunakan kembali project yang sudah ada. Jika belum memiliki akun Gmail atau Google Workspace, Anda harus membuatnya.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • Project name adalah nama tampilan untuk peserta project ini. String ini adalah string karakter yang tidak digunakan oleh Google API. Anda dapat memperbaruinya kapan saja.
  • Project ID bersifat unik di semua project Google Cloud dan tidak dapat diubah (tidak dapat diubah setelah ditetapkan). Cloud Console otomatis membuat string unik; biasanya Anda tidak mementingkan kata-katanya. Di sebagian besar codelab, Anda harus merujuk Project ID-nya (umumnya diidentifikasi sebagai PROJECT_ID). Jika tidak suka dengan ID yang dibuat, Anda dapat membuat ID acak lainnya. Atau, Anda dapat mencobanya sendiri, dan lihat apakah ID tersebut tersedia. ID tidak dapat diubah setelah langkah ini dan tersedia selama durasi project.
  • Sebagai informasi, ada nilai ketiga, Project Number, yang digunakan oleh beberapa API. Pelajari lebih lanjut ketiga nilai ini di dokumentasi.
  1. Selanjutnya, Anda harus mengaktifkan penagihan di Konsol Cloud untuk menggunakan resource/API Cloud. Menjalankan operasi dalam codelab ini tidak akan memakan banyak biaya, bahkan mungkin tidak sama sekali. Guna mematikan resource agar tidak menimbulkan penagihan di luar tutorial ini, Anda dapat menghapus resource yang dibuat atau menghapus project-nya. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai $300 USD.

Mengaktifkan Cloud Shell

  1. Dari Cloud Console, klik Aktifkan Cloud Shell 853e55310c205094.pngS.

55efc1aaa7a4d3ad.png

Jika ini pertama kalinya Anda memulai Cloud Shell, Anda akan melihat layar perantara yang menjelaskan apa itu Cloud Shell. Jika Anda melihat layar perantara, klik Lanjutkan.

9c92662c6a846a5c.pngS

Perlu waktu beberapa saat untuk penyediaan dan terhubung ke Cloud Shell.

9f0e51b578fecce5.pngS

Mesin virtual ini dimuat dengan semua alat pengembangan yang dibutuhkan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Sebagian besar pekerjaan Anda dalam codelab ini dapat dilakukan dengan browser.

Setelah terhubung ke Cloud Shell, Anda akan melihat bahwa Anda telah diautentikasi dan project sudah ditetapkan ke project ID Anda.

  1. Jalankan perintah berikut di Cloud Shell untuk mengonfirmasi bahwa Anda telah diautentikasi:
gcloud auth list

Output perintah

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. Jalankan perintah berikut di Cloud Shell untuk mengonfirmasi bahwa perintah gcloud mengetahui project Anda:
gcloud config list project

Output perintah

[core]
project = <PROJECT_ID>

Jika tidak, Anda dapat menyetelnya dengan perintah ini:

gcloud config set project <PROJECT_ID>

Output perintah

Updated property [core/project].

3. Menyiapkan instance Cloud SQL untuk MySQL

  1. Setelah Cloud Shell diluncurkan, Anda dapat menggunakan command line untuk membuat instance Cloud SQL baru:
$ gcloud sql instances create my-instance

Setelah operasi ini selesai, instance Anda akan siap digunakan.

  1. Sekarang buat database yang akan Anda gunakan untuk aplikasi Petclinic:
$ gcloud sql databases create petclinic --instance my-instance

Anda juga dapat mengakses dan mengonfigurasi instance melalui Konsol Cloud.

  1. Dapatkan nama koneksi instance dalam format project-id:zone-id:instance-id dengan menjalankan perintah berikut. Anda akan menggunakannya nanti dalam mengonfigurasi aplikasi Spring Boot.
$ gcloud sql instances describe my-instance | grep connectionName

4. Meng-clone dan menguji aplikasi Petclinic secara lokal

  1. Anda sekarang akan meng-clone aplikasi Petclinic secara lokal.
$ git clone https://github.com/spring-projects/spring-petclinic

$ cd spring-petclinic
  1. Pastikan versi Java yang benar telah ditetapkan dan menjalankan aplikasi Petclinic secara lokal.
$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/

$ ./mvnw spring-boot:run
  1. Klik Web Preview 1a94d5bd10bfc072.pngS di Cloud Shell , lalu pilih Preview on port 8080.

3aca52f76c6c22a3.pngS

Anda akan melihat halaman beranda Petclinic seperti yang ditunjukkan di sini pada browser Anda:

34e0d4f1e1765560.pngS

  1. Coba-coba dan tambahkan data. Aplikasi ini menggunakan database HyperSQL dalam memori. Sekarang Anda akan beralih dari HyperSQL ke Cloud SQL sebagai database Anda.

5. Menggunakan Cloud SQL di Petclinic

Update file pom.xml Maven

Update file pom.xml seperti yang ditunjukkan di sini. Pemicu menyediakan objek DataSource yang dikonfigurasi secara otomatis untuk terhubung ke database Cloud SQL Anda. Anda dapat menggunakan Vim, nano,atau Emacs untuk mengedit file.

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>

Mengupdate application-mysql.properties

  1. Ganti konten src/main/resources/application-mysql.properties dengan properti berikut. Anda perlu menetapkan nama koneksi instance dari langkah sebelumnya.

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. Terakhir, aktifkan profil Cloud SQL untuk MySQL di aplikasi Spring Boot dengan menambahkan mysql ke application.properties Properti 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. Menjalankan aplikasi di Cloud Shell

  1. Anda dapat memulai aplikasi Spring Boot secara normal dengan plugin Spring Boot:
$ ./mvnw -DskipTests spring-boot:run
  1. Setelah aplikasi dimulai, klik Web Preview 1a94d5bd10bfc072.pngS di toolbar Cloud Shell, lalu pilih Preview on port 8080.

3aca52f76c6c22a3.pngS

Anda akan melihat halaman beranda Spring Petclinic lagi seperti yang ditampilkan di sini pada browser Anda:

34e0d4f1e1765560.pngS

  1. Tambahkan entri pemilik hewan peliharaan.

Opsional: Memastikan Cloud SQL telah mempertahankan data

Anda dapat memverifikasi bahwa data yang dimasukkan telah disimpan ke Cloud SQL seperti yang ditunjukkan di sini. Tekan enter saat diminta memasukkan sandi.

$ 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;

Opsional: Menghapus instance Cloud SQL

Setelah menghentikan aplikasi, Anda dapat menghapus instance Cloud SQL menggunakan perintah berikut:

$ gcloud sql instances delete my-instance

7. Selamat

Anda telah mempelajari cara terhubung ke Cloud SQL di aplikasi Spring Boot!

Pelajari Lebih Lanjut