1. Başlamadan önce
App Engine uygulamalarını oluşturmak ve bakımı kolay olmasının yanı sıra trafik ve veri depolama ihtiyaçlarınız değiştikçe kolayca ölçeklendirilebilir. App Engine'de bakım gerektiren bir sunucu yoktur. Kullanıma hazır hale getirmek için uygulamanızı yüklemeniz yeterli.
App Engine uygulamaları, gelen trafiğe göre otomatik olarak ölçeklendirilir. Yük dengeleme, mikro hizmetler, yetkilendirme, SQL ve NoSQL veritabanları, bellek önbelleğe alma, trafiği bölme, günlük kaydı, arama, sürüm oluşturma, kullanıma sunma ve geri alma işlemleri ile güvenlik taramasının tümü yerel olarak desteklenir ve büyük ölçüde özelleştirilebilir.
App Engine standart ortamı ve App Engine esnek ortamı; Java, Python, PHP, NodeJS ve Go gibi bir dizi programlama dilini destekler. Bu iki ortam, geliştiricilere uygulamalarının davranışı konusunda maksimum esneklik sağlar. Her ortamın belirli güçlü yanları vardır. Daha fazla bilgi için App Engine ortamı seçme bölümüne bakın.
Bir Spring Boot uygulaması uygulamasını App Engine standart ortamına dağıtmayı öğreneceksiniz. Standart ortam, kimse kullanmadığında sıfır örneğine ölçeklendirilir ve otomatik olarak yukarı ölçeklenir.
Ö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
- App Engine'de Spring Boot Java uygulaması oluşturma
Gerekenler
- Bir Google Cloud projesi
- Google Chrome 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
Google Cloud'da çalışan bir komut satırı ortamı olan Cloud Shell'i kullanacaksınız.
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. Yeni bir Spring Boot web uygulaması oluşturma
Cloud Shell başlatıldıktan sonra, Spring Initializr ile yeni bir Spring Boot uygulaması oluşturmak için komut satırını kullanabilirsiniz.
$ curl https://start.spring.io/starter.tgz \ -d bootVersion=3.0.5 \ -d dependencies=web \ -d type=maven-project \ -d baseDir=gae-standard-example | tar -xzvf - $ cd gae-standard-example
4. Maven pom.xml dosyasını güncelleyin
Java sunucu uygulamalarını dağıtmanın iki yolu vardır: Maven App Engine Plugin ya da Gradle App Engine Plugin kullanarak ya da war
paket dizinini dağıtarak. Uygulamayı dağıtmak için Maven App Engine Plugin kullanacaksınız.
Maven App Engine Eklentisini Ekle
pom.xml
uygulamasını, dağıtım sürecini basitleştiren bir Google Cloud eklentisi içerecek şekilde güncelleyin. 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" ...>
...
<build>
<plugins>
...
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>appengine-maven-plugin</artifactId>
<version>2.4.4</version>
<configuration>
<version>1</version>
<projectId>GCLOUD_CONFIG</projectId>
</configuration>
</plugin>
...
</plugins>
</build>
</project>
5. App Engine tanımlayıcısı ekleyin
- Uygulamayı App Engine standart ortamına dağıtmak için yeni bir
src/main/appengine/app.yaml
açıklayıcı dosyası oluşturmanız gerekir.
$ mkdir -p src/main/appengine/ $ touch src/main/appengine/app.yaml
src/main/appengine/app.yaml
dosyasını düzenleyerek aşağıdaki içeriği ekleyin:
src/main/appengine/app.yaml
runtime: java17
instance_class: F1
6. Denetleyici ekleyin
DemoApplication.java
içinde "hello world!"
değerini döndüren yeni bir kumanda ekleyin.
src/main/java/com/example/demo/DemoApplication.java
package com.example.demo;
...
// Add imports
import org.springframework.web.bind.annotation.*;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
// Add the controller.
@RestController
class HelloWorldController {
@GetMapping("/")
public String hello() {
return "hello world!";
}
}
7. Uygulamayı yerel olarak çalıştırma
- JAVA_HOME öğesinin doğru JDK sürümüne ayarlandığından emin olun:
$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/
- Spring Boot uygulamasını Spring Boot eklentisiyle başlatabilirsiniz:
$ ./mvnw -DskipTests spring-boot:run
- Uygulama başladıktan sonra Cloud Shell araç çubuğunda Web Önizlemesi'ni tıklayın ve 8080 bağlantı noktasında önizle'yi seçin.
Tarayıcınızda bir sekme açılır ve başlattığınız sunucuya bağlanır.
8. Uygulamayı App Engine'e dağıtma
- Öncelikle, App Engine uygulamalarını çalıştırabilmek için projeyi başlatın. Ayrıca projeyi ABD'nin orta bölgesinde çalışacak şekilde başlatın.
$ gcloud app create --region us-central You are creating an app for project [...]. WARNING: Creating an App Engine application for a project is irreversible and the region cannot be changed. More information about regions is at https://cloud.google.com/appengine/docs/locations
- Ardından
mvn appengine:deploy
komutunu çalıştırarak uygulamanızı App Engine standart ortamına dağıtın.
$ ./mvnw -DskipTests package appengine:deploy ... first time deploy may take a couple of minutes
- Uygulama dağıtıldıktan sonra web tarayıcınızda http://<proje-kimliği>.appspot.com sayfasını açarak veya Cloud Shell'de aşağıdaki komutu kullanarak uygulamayı ziyaret edebilirsiniz:
$ gcloud app browse ... [It may print out the URL for your app]
9. Temizleme
Bir App Engine uygulamasını silemezsiniz ancak devre dışı bırakabilirsiniz.
Google Cloud Console'da App Engine
ve Settings
bölümlerine gidip Disable Application
öğesini seçin:
Alternatif olarak projenin tamamını silebilirsiniz:
$ gcloud projects delete YOUR-PROJECT-ID
10. Tebrikler
İlk App Engine web uygulamanızı yazmayı öğrendiniz.