Bu codelab hakkında
1. Başlamadan önce
Cloud SQL, Google Cloud'da 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 İçin Cloud SQL veya PostgreSQL İçin Cloud SQL ile kullanabilirsiniz.
Bu codelab'de, MySQL için Cloud SQL örneği ayarlamayı ve ardından Cloud SQL örneğini arka uç depolama alanı olarak kullanmak için bir Spring Boot uygulaması güncellemeyi öğreneceksiniz. Google Cloud SQL için Spring Boot Starter, kodunuzdaki minimum değişikliklerle Cloud SQL'den kolayca yararlanmanıza olanak tanıyan otomatik olarak yapılandırılmış bir DataSource sağlar. Bu codelab'de Spring Petclinic kaynak kodu kullanılmalıdı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
Ne yaparsınız?
- Spring Boot uygulamanızda Cloud SQL kullanın.
Gerekenler
- Bir Google Cloud projesi
- Google Chrome veya Firefox gibi bir tarayıcı
2. Kurulum ve gereksinimler
Bağımsız tempolu ortam kurulumu
- Cloud Console'da oturum açın ve yeni bir proje oluşturun ya da mevcut bir projeyi yeniden kullanın. (Henüz bir Gmail veya G Suite hesabınız yoksa hesap oluşturmanız gerekir.)
Proje kimliğini tüm Google Cloud projeleri genelinde benzersiz bir ad olarak hatırlayın (yukarıdaki ad zaten alınmıştı ve maalesef sizin için çalışmaz). Bu, daha sonra bu codelab'de PROJECT_ID
olarak adlandırılacaktır.
- Ardından, Google Cloud kaynaklarını kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir.
Bu codelab'i gözden geçirmeniz için size birkaç dolar tutarından daha fazla ödeme yapmanız gerekmez, ancak daha fazla kaynak kullanmaya karar verirseniz veya çalışır durumda bırakırsanız daha fazla harcama yapabilirsiniz.
Yeni Google Cloud kullanıcıları 300 ABD doları değerindeki ücretsiz denemeden yararlanabilir.
Cloud Shell'i etkinleştirme
- Cloud Console'dan Cloud Shell'i Etkinleştir'i tıklayın
.
Cloud Shell'i daha önce hiç başlatmadıysanız ne olduğunu açıklayan bir ara ekran (ekranın alt kısmında) gösterilir. Bu durumda Devam'ı tıklayın (bu seçeneği bir daha görmezsiniz). Tek seferlik ekran şu şekilde görünür:
Cloud Shell'in temel hazırlığı ve bağlantısı yalnızca birkaç dakika içinde tamamlanacak.
Bu sanal makine, ihtiyacınız olan tüm geliştirme araçları yüklüdür. 5 GB kalıcı bir ana dizin sunar ve Google Cloud'da çalışarak ağ performansını ve kimlik doğrulama işlemini önemli ölçüde iyileştirir. Bu codelab'deki çalışmalarınızın büyük bir kısmının tamamı bir tarayıcı veya Chromebook ile yapılabilir.
Cloud Shell'e bağlandıktan sonra kimliğinizin zaten doğrulanmış olduğunu ve projenin proje kimliğinize ayarlanmış olduğunu görmeniz gerekir.
- Kimliğinizin doğrulanmasını sağlamak 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 config list project
Komut çıkışı
[core] project = <PROJECT_ID>
Ayarlanmamışsa şu komutla ayarlayabilirsiniz:
gcloud config set project <PROJECT_ID>
Komut çıkışı
Updated property [core/project].
3. MySQL İçin Cloud SQL örneği oluşturma
- Cloud Shell başlatıldıktan sonra yeni bir Cloud SQL örneği oluşturmak için komut satırını kullanabilirsiniz:
$ gcloud sql instances create my-instance
Bu işlem tamamlandıktan sonra örneğiniz kullanıma hazır olacaktır.
- Ş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 yapılandırabilirsiniz.
- Aşağıdaki komutu çalıştırarak örnek bağlantısının adını
project-id:zone-id:instance-id
biçiminde alın. Bunu daha sonra Spring Boot uygulamanızı yapılandırmada kullanırsınız.
$ gcloud sql instances describe my-instance |grep connectionName
4. Petclinic uygulamasını klonlayın ve yerel olarak test edin
- Artık Petclinic uygulamasını klonlayıp test edeceksiniz.
$ git clone https://github.com/spring-projects/spring-petclinic $ cd spring-petclinic $ ./mvnw spring-boot:run
- Cloud Shell'de Web Preview (Web Önizlemesi)
seçeneğini tıklayın ve ardından 8080 bağlantı noktasında önizle'yi seçin.
Petclinic ana sayfasını tarayıcınızda aşağıda gösterildiği gibi göreceksiniz:
- Etrafta gezinin ve veri ekleyin. Uygulama bir bellek içi HyperSQL veritabanı kullanır. Artık HyperSQL'den veritabanınız olarak Cloud SQL'e geçeceksiniz.
5. Petclinic'te Cloud SQL 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>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>
app-mysql.properties dosyasını güncelleyin
src/main/resources/application-mysql.properties
içeriğini aşağıdaki özelliklerle değiştirin. Önceki bağlantıdan örnek bağlantı adını ayarlamanız gerekir.
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
- Son olarak,
application.properties' spring.profiles.active
özelliğinemysql
ekleyerek Spring Boot uygulamasında MySQL için Cloud SQL profilini etkinleştirin:
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
- 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ğundan Web Preview (Web Önizlemesi) seçeneğini tıklayıp 8080 bağlantı noktasında önizle'yi seçin.
Spring Petclinic ana sayfasını tarayıcınızda aşağıda gösterildiği 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'de korunduğunu doğrulayabilirsiniz. Şifre girmeniz istendiğinde Enter (Macintosh'ta iade) düğmesine 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 silme
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.