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
- Bir Google Cloud projesi
- Google Chrome veya Firefox gibi bir tarayıcı
2. Kurulum ve şartlar
Kendi hızınızda ortam kurulumu
- 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.
- 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.
- 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
- Cloud Console'da, Cloud Shell'i etkinleştir simgesini tıklayın.
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.
Temel hazırlık ve Cloud Shell'e bağlanmak yalnızca birkaç dakika sürer.
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.
- 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`
- 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
- 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.
- Ş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.
- 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
- Artık Petclinic uygulamasını yerel olarak klonlayacaksınız.
$ git clone https://github.com/spring-projects/spring-petclinic $ cd spring-petclinic
- 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
- Cloud Shell'de Web Önizlemesi'ni tıklayın , ardından 8080 bağlantı noktasında önizle'yi seçin.
Evcil hayvan Kliniği ana sayfasını tarayıcınızda aşağıdaki gibi görmeniz gerekir:
- 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
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
- Son olarak, Spring Boot uygulamasında
application.properties
öğesinemysql
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
- Spring Boot uygulamasını, Spring Boot eklentisiyle normal bir şekilde başlatabilirsiniz:
$ ./mvnw -DskipTests spring-boot:run
- Uygulama başladıktan sonra Cloud Shell araç çubuğunda Web Önizlemesi'ni tıklayın, ardından 8080 bağlantı noktasında önizle'yi seçin.
Bahar Evcil Hayvan Kliniği ana sayfasını tarayıcınızda aşağıdaki gibi tekrar görürsünüz:
- 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.