Cloud SQL adalah layanan database terkelola sepenuhnya yang mempermudah 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 memperbarui aplikasi Spring Boot untuk menggunakan instance Cloud SQL sebagai penyimpanan backend-nya. Spring Boot Starter for Google Cloud SQL menyediakan DataSource yang dikonfigurasi otomatis, sehingga Anda dapat memanfaatkan Cloud SQL dengan mudah dan perubahan minimal pada kode Anda. Codelab ini menggunakan kode sumber Spring Petclinic.
Prasyarat
- Memahami 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
- Project Google Cloud
- Browser, seperti Google Chrome atau Firefox
Penyiapan lingkungan mandiri
- Login ke Cloud Console lalu 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
.
- Selanjutnya, Anda harus mengaktifkan penagihan di Konsol Cloud untuk menggunakan resource Google Cloud.
Menjalankan operasi dalam 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 berjalan.
Pengguna baru Google Cloud memenuhi syarat untuk mendapatkan uji coba gratis senilai$300.
Mengaktifkan Cloud Shell
- Dari Cloud Console, klik Activate 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.
- 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].
- 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.
- 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.
- 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
- 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
- Klik Pratinjau Web
di Cloud Shell , lalu pilih Pratinjau di port 8080.
Anda akan melihat halaman beranda Petclinic seperti yang ditampilkan di browser Anda:
- Bereksperimen dan tambahkan data. Aplikasi menggunakan database HyperSQL dalam memori. Sekarang Anda akan beralih dari HyperSQL ke penggunaan Cloud SQL sebagai database.
Perbarui file Maven pom.xml
Perbarui file pom.xml
seperti yang ditunjukkan di sini. Starter menyediakan objek DataSource
yang dikonfigurasi 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>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>
Perbarui application-mysql.properties
- 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
- Terakhir, aktifkan profil Cloud SQL untuk MySQL di aplikasi Spring Boot dengan menambahkan
mysql
ke propertiapplication.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
- Anda dapat memulai aplikasi Spring Boot secara normal dengan plugin Spring Boot:
$ ./mvnw -DskipTests spring-boot:run
- 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 ditampilkan di browser Anda:
- Tambahkan entri pemilik hewan peliharaan.
Opsional: Verifikasi bahwa Cloud SQL telah menyimpan data secara persisten
Anda dapat memverifikasi bahwa data yang Anda masukkan telah dipertahankan ke Cloud SQL seperti yang ditunjukkan di sini. Tekan enter (return di 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: Hapus instance Cloud SQL Anda
Setelah menghentikan aplikasi, Anda dapat menghapus instance Cloud SQL menggunakan perintah berikut:
$ gcloud sql instances delete my-instance
Anda telah mempelajari cara terhubung ke Cloud SQL di aplikasi Spring Boot.