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

1. Başlamadan önce

Cloud SQL, Google Cloud'daki ilişkisel veritabanlarınızı kurmayı, yönetmeyi ve bunları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 Spring Boot uygulamasını, arka uç depolama alanı olarak Cloud SQL örneğini kullanacak şekilde güncellemeyi öğreneceksiniz. Spring Boot Starter for Google Cloud SQL, otomatik olarak yapılandırılmış bir DataSource sağlar. Bu sayede, kodunuzda minimum 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 sahibi olma
  • Vim, Emacs ve nano gibi standart Linux metin düzenleyicileri hakkında bilgi sahibi olmanız gerekir.

Yapacaklarınız

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

Gerekenler

2. Kurulum ve şartlar

Yönlendirmesiz ortam kurulumu

  1. Google Cloud Console'da oturum açın ve 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. Bu bilgiyi istediğiniz zaman güncelleyebilirsiniz.
  • Proje kimliği, tüm Google Cloud projelerinde benzersizdir ve sabittir (ayarlandıktan sonra değiştirilemez). Cloud Console, benzersiz bir dizeyi otomatik olarak oluşturur. Genellikle bu dizenin ne olduğuyla ilgilenmezsiniz. Çoğu codelab'de proje kimliğinize (genellikle PROJECT_ID olarak tanımlanır) başvurmanız gerekir. Oluşturulan kimliği beğenmezseniz başka bir rastgele kimlik oluşturabilirsiniz. Dilerseniz kendi adınızı deneyerek kullanılabilir olup olmadığını kontrol edebilirsiniz. Bu adım tamamlandıktan sonra değiştirilemez ve proje süresince geçerli kalır.
  • Bazı API'lerin kullandığı üçüncü bir değer olan Proje Numarası da vardır. Bu üç değer hakkında daha fazla bilgiyi belgelerde bulabilirsiniz.
  1. Ardından, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i tamamlamak neredeyse hiç maliyetli değildir. Bu eğitimin ötesinde faturalandırılmayı önlemek için kaynakları kapatmak üzere oluşturduğunuz kaynakları veya projeyi silebilirsiniz. Yeni Google Cloud kullanıcıları 300 ABD doları değerinde ücretsiz deneme programından yararlanabilir.

Cloud Shell'i etkinleştirme

  1. Cloud Console'da Cloud Shell'i etkinleştir 'i 853e55310c205094.png 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 ekran gösterildiyse Devam'ı tıklayın.

9c92662c6a846a5c.png

Cloud Shell'in temel hazırlığı ve bağlanması yalnızca birkaç dakikanızı alır.

9f0e51b578fecce5.png

Bu sanal makineye, ihtiyaç duyacağınız tüm geliştirme araçları yüklenmiştir. 5 GB boyutunda kalıcı bir ana dizin bulunur ve Google Cloud'da çalışır. Bu sayede ağ performansı ve kimlik doğrulama önemli ölçüde güçlenir. Bu codelab'deki çalışmalarınızın neredeyse tamamını tarayıcıyla yapabilirsiniz.

Cloud Shell'e bağlandıktan sonra kimliğinizin doğrulandığını ve projenin, proje kimliğinize ayarlandığını görürsünüz.

  1. Kimliğinizin doğrulandığını onaylamak için Cloud Shell'de şu 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 projeniz hakkında bilgi sahibi olduğunu onaylamak için Cloud Shell'de aşağıdaki komutu çalıştırın:
gcloud config list project

Komut çıkışı

[core]
project = <PROJECT_ID>

Değilse şu 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 Petclinic uygulaması için kullanacağınız bir veritabanı oluşturun:
$ gcloud sql databases create petclinic --instance my-instance

Örneğe Cloud Console üzerinden de erişebilir ve örneği yapılandırabilirsiniz.

  1. Aşağıdaki komutu çalıştırarak project-id:zone-id:instance-id biçiminde ö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ı klonlama ve yerel olarak test etme

  1. Şimdi 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 numaralı bağlantı noktasında önizle'yi seçin.

3aca52f76c6c22a3.png

Tarayıcınızda Petclinic ana sayfasını burada gösterildiği gibi görmeniz gerekir:

34e0d4f1e1765560.png

  1. Denemeler yapın ve veri ekleyin. Uygulama, bellek içi HyperSQL veritabanı kullanıyor. Artık HyperSQL'den veritabanınız olarak Cloud SQL'e geçeceksiniz.

5. Petclinic'te Cloud SQL'i kullanma

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

pom.xml dosyasını burada gösterildiği gibi 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 dosyasını güncelleme

  1. src/main/resources/application-mysql.properties içeriğini aşağıdaki özelliklerle değiştirin. Önceki adımda ö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, mysql özelliğine application.properties ekleyerek Spring Boot uygulamasında MySQL için Cloud SQL profilini etkinleştirin: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. Uygulamayı Cloud Shell'de çalıştırma

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

3aca52f76c6c22a3.png

Tarayıcınızda Spring Petclinic ana sayfasını tekrar görmelisiniz (burada gösterildiği gibi):

34e0d4f1e1765560.png

  1. Evcil hayvan sahibi girişi ekleyin.

İsteğe bağlı: Cloud SQL'in verileri kalıcı hale getirdiğini doğrulayın

Girdiğiniz verilerin Cloud SQL'e kalıcı olarak kaydedildiğini burada gösterildiği gibi 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