Menghubungkan aplikasi Spring Boot ke Cloud SQL

Menghubungkan aplikasi Spring Boot ke Cloud SQL

Tentang codelab ini

subjectTerakhir diperbarui Apr 22, 2020
account_circleDitulis oleh Googler

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 dengan mudah memanfaatkan Cloud SQL dengan perubahan minimal pada kode Anda. 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

  • Menggunakan Cloud SQL di aplikasi Spring Boot.

Yang Anda butuhkan

2. Penyiapan dan persyaratan

Penyiapan lingkungan mandiri

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

Ingat project ID, nama unik di semua project Google Cloud (maaf, nama di atas telah digunakan dan tidak akan berfungsi untuk Anda!) Project ID tersebut selanjutnya akan dirujuk di codelab ini sebagai PROJECT_ID.

  1. Selanjutnya, Anda harus mengaktifkan penagihan di Cloud Console untuk menggunakan resource Google Cloud.

Menjalankan melalui codelab ini tidak akan menghabiskan biaya lebih dari beberapa dolar, tetapi bisa lebih jika Anda memutuskan untuk menggunakan lebih banyak resource atau jika Anda membiarkannya tetap berjalan.

Pengguna baru Google Cloud memenuhi syarat untuk mendapatkan uji coba gratis senilai $300.

Aktifkan Cloud Shell

  1. Dari Cloud Console, klik Aktifkan Cloud Shell .

Jika belum pernah memulai Cloud Shell, Anda akan melihat layar perantara (di paruh bawah) yang menjelaskan apa itu Cloud Shell. Jika demikian, klik Lanjutkan (dan Anda tidak akan pernah melihatnya lagi). Berikut tampilan layar sekali-tampil tersebut:

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

Mesin virtual ini berisi semua alat pengembangan yang Anda perlukan. 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 hanya dengan browser atau Chromebook.

Setelah terhubung ke Cloud Shell, Anda akan melihat bahwa Anda sudah 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`
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 Cloud Console.

  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. Sekarang Anda akan meng-clone dan menguji aplikasi Petclinic secara lokal.
$ git clone https://github.com/spring-projects/spring-petclinic
$ cd spring-petclinic
$ ./mvnw spring-boot:run
  1. Klik Pratinjau Web di Cloud Shell , lalu pilih Pratinjau di port 8080.

Anda akan melihat halaman beranda Petclinic seperti yang ditampilkan di browser ini:

  1. Cobalah dan tambahkan data. Aplikasi menggunakan database HyperSQL dalam memori. Anda sekarang akan beralih dari HyperSQL ke Cloud SQL sebagai database Anda.

5. Menggunakan Cloud SQL dalam Petclinic

Mengupdate file Maven pom.xml

Perbarui 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 tersebut.

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>

Mengupdate application-mysql.properties

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

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
  1. Terakhir, aktifkan profil Cloud SQL untuk MySQL di aplikasi Spring Boot dengan menambahkan mysql ke properti 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. 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 Pratinjau Web di toolbar Cloud Shell, lalu pilih Pratinjau di port 8080.

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

  1. Tambahkan entri pemilik hewan peliharaan.

Opsional: Pastikan Cloud SQL telah menyimpan data

Anda dapat memverifikasi bahwa data yang Anda masukkan telah disimpan ke Cloud SQL seperti yang ditunjukkan di sini. Tekan enter (kembali pada Macintosh) 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 Anda

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