Cloud SQL'e Spring Boot uygulaması bağlayın

1. Başlamadan önce

Cloud SQL, Google Cloud üzerinde ilişkisel veritabanlarınızı kurmayı, yönetmeyi ve bu veritabanlarının bakımını yapmayı kolaylaştıran, tümüyle yönetilen bir veritabanı hizmetidir. Cloud SQL'i MySQL için Cloud SQL veya PostgreSQL için Cloud SQL ile kullanabilirsiniz.

Bu codelab'de MySQL için Cloud SQL örneği oluşturmayı ve ardından Cloud SQL örneğini arka uç depolama alanı olarak kullanmak üzere bir Spring Boot uygulamasını güncellemeyi öğreneceksiniz. Google Cloud SQL için Spring Boot Starter, otomatik olarak yapılandırılmış bir DataSource sağlar. Bu sayede kodunuzda çok az değişiklik yaparak Cloud SQL'den kolayca yararlanabilirsiniz. Bu codelab'de Spring Petclinic kaynak kodu kullanılır.

Ön koşullar

  • Java programlama dili ve araçları hakkında bilgi
  • Vim, Emacs ve nano gibi standart Linux metin düzenleyicileri hakkında bilgi

Yapacaklarınız

  • Spring Boot uygulamanızda Cloud SQL'i kullanın.

Gerekenler

2. Kurulum ve şartlar

Kendi hızınızda ortam kurulumu

  1. Google Cloud Console'da oturum açıp yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. Gmail veya Google Workspace hesabınız yoksa hesap oluşturmanız gerekir.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • Proje adı, bu projenin katılımcıları için görünen addır. Google API'leri tarafından kullanılmayan bir karakter dizesidir. İstediğiniz zaman güncelleyebilirsiniz.
  • Proje Kimliği, tüm Google Cloud projelerinde benzersizdir ve değiştirilemez (belirlendikten sonra değiştirilemez). Cloud Console, otomatik olarak benzersiz bir dize oluşturur. bunun ne olduğunu umursamıyorsunuz. Çoğu codelab'de proje kimliğinizi (genellikle PROJECT_ID olarak tanımlanır) belirtmeniz gerekir. Oluşturulan kimliği beğenmezseniz rastgele bir kimlik daha oluşturabilirsiniz. Alternatif olarak, kendi ölçümünüzü deneyip mevcut olup olmadığına bakabilirsiniz. Bu adımdan sonra değiştirilemez ve proje süresince kalır.
  • Bilginiz olması açısından, bazı API'lerin kullandığı üçüncü bir değer, yani Proje Numarası daha vardır. Bu değerlerin üçü hakkında daha fazla bilgiyi belgelerde bulabilirsiniz.
  1. Sonraki adımda, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i çalıştırmanın maliyeti, yüksek değildir. Bu eğitim dışında faturalandırmanın tekrarlanmasını önlemek amacıyla kaynakları kapatmak için oluşturduğunuz kaynakları silebilir veya projeyi silebilirsiniz. Yeni Google Cloud kullanıcıları 300 ABD doları değerindeki ücretsiz denemeden yararlanabilir.

Cloud Shell'i etkinleştirme

  1. Cloud Console'da, Cloud Shell'i etkinleştir 853e55310c205094.png simgesini tıklayın.

55efc1aaa7a4d3ad.png

Cloud Shell'i ilk kez başlatıyorsanız ne olduğunu açıklayan bir ara ekran gösterilir. Ara bir ekran görüntülendiyse Devam'ı tıklayın.

9c92662c6a846a5c.png

Temel hazırlık ve Cloud Shell'e bağlanmak yalnızca birkaç dakika sürer.

9f0e51b578fecce5.png

Gereken tüm geliştirme araçları bu sanal makinede yüklüdür. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud'da çalışarak ağ performansını ve kimlik doğrulamasını büyük ölçüde iyileştirir. Bu codelab'deki çalışmalarınızın tamamı olmasa bile büyük bir kısmı tarayıcıyla yapılabilir.

Cloud Shell'e bağlandıktan sonra kimliğinizin doğrulandığını ve projenin proje kimliğinize ayarlandığını göreceksiniz.

  1. Kimlik doğrulamanızın tamamlandığını onaylamak için Cloud Shell'de aşağıdaki komutu çalıştırın:
gcloud auth list

Komut çıkışı

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

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. gcloud komutunun projenizi bildiğini onaylamak için Cloud Shell'de aşağıdaki komutu çalıştırın:
gcloud config list project

Komut çıkışı

[core]
project = <PROJECT_ID>

Doğru değilse aşağıdaki komutla ayarlayabilirsiniz:

gcloud config set project <PROJECT_ID>

Komut çıkışı

Updated property [core/project].

3. MySQL için Cloud SQL örneği oluşturma

  1. Cloud Shell başlatıldıktan sonra, komut satırını kullanarak yeni bir Cloud SQL örneği oluşturabilirsiniz:
$ gcloud sql instances create my-instance

Bu işlem tamamlandığında örneğiniz kullanıma hazır olur.

  1. Şimdi Petlabs uygulaması için kullanacağınız bir veritabanı oluşturun:
$ gcloud sql databases create petclinic --instance my-instance

Örneğe Cloud Console'dan da erişip yapılandırabilirsiniz.

  1. Aşağıdaki komutu çalıştırarak project-id:zone-id:instance-id biçimindeki örnek bağlantı adını alın. Bunu daha sonra Spring Boot uygulamanızı yapılandırırken kullanacaksınız.
$ gcloud sql instances describe my-instance | grep connectionName

4. Petclinic uygulamasını yerel olarak klonlayıp test edin

  1. Artık Petclinic uygulamasını yerel olarak klonlayacaksınız.
$ git clone https://github.com/spring-projects/spring-petclinic

$ cd spring-petclinic
  1. Doğru Java sürümünün ayarlandığından emin olun ve Petclinic uygulamasını yerel olarak çalıştırın.
$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/

$ ./mvnw spring-boot:run
  1. Cloud Shell'de Web Önizlemesi'ni 1a94d5bd10bfc072.png tıklayın , ardından 8080 bağlantı noktasında önizle'yi seçin.

3aca52f76c6c22a3.png

Evcil hayvan Kliniği ana sayfasını tarayıcınızda aşağıdaki gibi görmeniz gerekir:

34e0d4f1e1765560.png

  1. Deneme yapın ve veri ekleyin. Uygulama, bellek içi HyperSQL veritabanı kullanır. Şimdi HyperSQL'den veritabanınız olarak Cloud SQL'e geçiş yapacaksınız.

5. Petklinik'te Cloud SQL'i kullanma

Maven pom.xml dosyasını güncelleyin.

pom.xml dosyasını burada gösterildiği şekilde güncelleyin. Başlatıcı, Cloud SQL veritabanınıza bağlanmak için otomatik olarak yapılandırılmış bir DataSource nesnesi sağlar. Dosyayı düzenlemek için Vim, nano veya Emacs'i kullanabilirsiniz.

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'i güncelleme

  1. src/main/resources/application-mysql.properties içeriğini aşağıdaki özelliklerle değiştirin. Önceki adımda verilen örnek bağlantı adını ayarlamanız gerekir.

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. Son olarak, Spring Boot uygulamasında application.properties öğesine mysql ekleyerek MySQL için Cloud SQL profilini etkinleştirin. spring.profiles.active mülkü:

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. Uygulamayı Cloud Shell'de çalıştırın

  1. Spring Boot uygulamasını, Spring Boot eklentisiyle normal bir şekilde başlatabilirsiniz:
$ ./mvnw -DskipTests spring-boot:run
  1. Uygulama başladıktan sonra Cloud Shell araç çubuğunda Web Önizlemesi'ni 1a94d5bd10bfc072.png tıklayın, ardından 8080 bağlantı noktasında önizle'yi seçin.

3aca52f76c6c22a3.png

Bahar Evcil Hayvan Kliniği ana sayfasını tarayıcınızda aşağıdaki gibi tekrar görürsünüz:

34e0d4f1e1765560.png

  1. Evcil hayvan sahibi girişi ekleyin.

İsteğe bağlı: Cloud SQL'in verileri sakladığını doğrulama

Girdiğiniz verilerin burada gösterildiği gibi Cloud SQL'e aktarıldığını doğrulayabilirsiniz. Şifre istendiğinde Enter tuşuna basın.

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

İsteğe bağlı: Cloud SQL örneğinizi silin

Uygulamanızı durdurduktan sonra aşağıdaki komutu kullanarak Cloud SQL örneğini silebilirsiniz:

$ gcloud sql instances delete my-instance

7. Tebrikler

Spring Boot uygulamanızda Cloud SQL'e nasıl bağlanacağınızı öğrendiniz.

Daha Fazla Bilgi