App Engine standart ortamına Spring Boot uygulaması dağıtma

App Engine uygulamaları kolayca oluşturulabilir, kolayca korunabilir ve trafik ile veri depolama ihtiyaçlarınız değiştikçe kolayca ölçeklendirilebilir. App Engine ile bakımını yapmanız gereken sunucu yoktur. Uygulamanızı yüklemeniz yeterlidir.

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, trafik bölme, günlük kaydı, arama, sürüm oluşturma, kullanıma sunma ve geri alma işlemleri ile güvenlik taraması yerel olarak desteklenir ve son derece özelleştirilebilir.

App Engine standart ortamı ve App Engine esnek ortamı; Java, Python, PHP, NodeJS ve Go gibi çeşitli programlama dillerini destekler. Bu iki ortam, geliştiricilere uygulamalarının davranış şekli konusunda maksimum esneklik sağlar. Her ortamın belirli avantajları vardır. Daha fazla bilgi için App Engine ortamı seçme başlıklı makaleyi inceleyin.

Bu eğitimde, Spring Boot uygulamasını App Engine standart ortamına dağıtmayı öğreneceksiniz. Standart ortam, kimse kullanmadığında sıfır örneğe ölçeklenir ve otomatik olarak ölçeklenir.

Ö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

  • App Engine'de Spring Boot Java uygulaması oluşturma

Gerekenler

Kendi hızınızda ortam kurulumu

  1. Cloud Console'da oturum açın ve yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. (Gmail veya G Suite hesabınız yoksa oluşturmanız gerekir.)

Proje kimliğini unutmayın. Bu kimlik, tüm Google Cloud projelerinde benzersiz bir addır (Yukarıdaki ad zaten alınmış olduğundan sizin için çalışmayacaktır). Bu codelab'in ilerleyen kısımlarında PROJECT_ID olarak adlandırılacaktır.

  1. Ardından, Google Cloud kaynaklarını kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir.

Bu codelab'i tamamlamak birkaç dolardan fazla tutmaz. Ancak daha fazla kaynak kullanmaya karar verirseniz veya kaynakları çalışır durumda bırakırsanız maliyet artabilir.

Google Cloud'un yeni kullanıcıları 300 ABD doları değerinde ücretsiz deneme sürümünden 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

  1. Cloud Console'da Cloud Shell'i etkinleştir 'i tıklayın.

Daha önce Cloud Shell'i başlatmadıysanız ne olduğunu açıklayan bir ara ekran (sayfanın alt kısmında) gösterilir. Bu durumda Devam'ı tıklayın (bu ekranı bir daha görmezsiniz). Bu tek seferlik ekran aşağıdaki gibi görünür:

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

Bu sanal makine, ihtiyaç duyacağınız tüm geliştirme araçlarını içerir. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud'da çalışır. Bu sayede ağ performansı ve kimlik doğrulama önemli ölçüde iyileştirilir. Bu codelab'deki çalışmalarınızın çoğu (hatta tamamı) yalnızca bir tarayıcı veya Chromebook'unuzla yapılabilir.

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

Değilse aşağıdaki komutla ayarlayabilirsiniz:

gcloud config set project <PROJECT_ID>

Komut çıkışı

Updated property [core/project].

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=2.1.8.RELEASE \
  -d dependencies=web \
  -d baseDir=gae-standard-example | tar -xzvf -
$ cd gae-standard-example

Java sunucu uygulamasını dağıtmanın iki yolu vardır: Maven App Engine Eklentisi veya Gradle App Engine Eklentisi'ni kullanarak ya da war paket dizinini dağıtarak. Uygulamayı dağıtmak için Maven App Engine Eklentisi'ni kullanacaksınız.

Maven App Engine Plugin'i ekleme

Dağıtım sürecini basitleştiren bir Google Cloud eklentisi eklemek için pom.xml'yı 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.1.0</version>
        <configuration>
          <version>1</version>
          <projectId>GCLOUD_CONFIG</projectId>
        </configuration>
      </plugin>
      ...
    </plugins>
  </build>
</project>
  1. Uygulamayı App Engine standart ortamına dağıtmak için yeni bir src/main/appengine/app.yaml tanımlayıcı dosyası oluşturmanız gerekir.
$ mkdir -p src/main/appengine/
$ touch src/main/appengine/app.yaml
  1. src/main/appengine/app.yaml dosyasını düzenleyip aşağıdaki içeriği ekleyin:

src/main/appengine/app.yaml

runtime: java11
instance_class: F4

DemoApplication.java içinde "hello world!" döndüren yeni bir denetleyici ekleyin.

src/main/java/com/example/demo/DemoApplication.java

package com.example.demo;

...

// Add imports
import org.springframework.web.bind.annotation.*;

@SpringBootApplication
@RestController
public class DemoApplication {
  public static void main(String[] args) {
    SpringApplication.run(DemoApplication.class, args);
  }

  @GetMapping("/")
  public String hello() {
    return "hello world!";
  }
}
  1. Spring Boot uygulamasını Spring Boot eklentisiyle başlatabilirsiniz:
$ ./mvnw -DskipTests spring-boot:run
  1. Uygulama başladıktan sonra Cloud Shell araç çubuğunda Web Önizlemesi'ni tıklayın ve 8080 numaralı 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.

  1. Öncelikle, App Engine uygulamalarını çalıştırabilmek için projeyi başlatın. Ayrıca, projenin ABD'nin merkez bölgesinde çalıştırılmasını sağlayacak ş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
  1. 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
  1. Uygulama dağıtıldıktan sonra web tarayıcınızda http://<project-id>.appspot.com adresini açarak uygulamayı ziyaret edebilir veya Cloud Shell'de aşağıdaki komutu kullanabilirsiniz:
$ gcloud app browse
... [It may print out the URL for your app]

İlk App Engine web uygulamanızı yazmayı öğrendiniz.

Daha fazla bilgi