App Engine スタンダード環境に Spring Boot アプリをデプロイします。

App Engine スタンダード環境に Spring Boot アプリをデプロイする

この Codelab について

subject最終更新: 4月 22, 2020
account_circleGoogle 社員により作成

1. 始める前に

App Engine アプリは作成とメンテナンスが簡単で、トラフィックとデータ ストレージのニーズの変化に合わせて簡単にスケールできます。App Engine では、サーバーを維持管理する必要もありません。必要な作業は、アプリをアップロードするだけです。

App Engine アプリは受信トラフィックに基づいて自動的にスケーリングされます。負荷分散、マイクロサービス、認可、SQL および NoSQL データベース、メモリ キャッシュ、トラフィック分割、ロギング、検索、バージョニング、ロールアウトとロールバック、セキュリティ スキャンはすべてネイティブにサポートされており、自由にカスタマイズできます。

App Engine スタンダード環境App Engine フレキシブル環境では、Java、Python、PHP、NodeJS、Go などのさまざまなプログラミング言語がサポートされています。この 2 つの環境では、デベロッパーはアプリケーションの動作に最大限の柔軟性を提供できます。どの環境にも一定の強みがあります。詳細については、App Engine 環境の選択をご覧ください。

Spring Boot アプリを App Engine スタンダード環境にデプロイする方法を学習します。スタンダード環境は、誰も使用していない場合にゼロにスケールダウンし、自動的にスケールアップします。

前提条件

  • Java プログラミング言語とツールに精通していること
  • Linux の標準的なテキスト エディタ(Vim、Emacs、nano など)に関する知識

演習内容

  • App Engine で Spring Boot Java アプリを作成する方法

必要なもの

  • Google Cloud プロジェクト
  • Google Chrome などのブラウザ

2. 設定と要件

セルフペース型の環境設定

  1. Cloud Console にログインして新しいプロジェクトを作成するか、既存のプロジェクトを再利用します。(Gmail または G Suite アカウントをまだお持ちでない場合は、作成する必要があります)。

プロジェクト ID を忘れないようにしてください。プロジェクト ID はすべての Google Cloud プロジェクトを通じて一意の名前にする必要があります(上記の名前はすでに使用されているので使用できません)。以降、このコードラボでは PROJECT_ID と呼びます。

  1. 次に、Google Cloud リソースを使用するために、Cloud Console で課金を有効にする必要があります。

この Codelab を実施した場合、費用は数ドルを超えることはありませんが、より多くのリソースを使用する場合や、実行を継続する場合は、さらにコストがかかる可能性があります。

Google Cloud の新規ユーザーは 300 ドル分の無料トライアルをご利用いただけます。

Cloud Shell

Google Cloud で実行するコマンドライン環境である Cloud Shell を使用します。

Cloud Shell をアクティブにする

  1. Cloud Console で、Cloud Shell をアクティブにするアイコン をクリックします。

Cloud Shell を起動したことがない場合、その内容を説明する中間画面が(スクロールしなければ見えない範囲に)が表示されます。その場合は、[続行] をクリックします(以後表示されなくなります)。このワンタイム スクリーンは次のようになります。

Cloud Shell のプロビジョニングと接続に少し時間がかかる程度です。

この仮想マシンには、必要な開発ツールがすべて用意されています。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働するため、ネットワーク パフォーマンスが充実しており認証もスムーズです。このコードラボでの作業のほとんどは、ブラウザまたは Chromebook から実行できます。

Cloud Shell に接続すると、すでに認証は完了しており、プロジェクトに各自のプロジェクト ID が設定されていることがわかります。

  1. Cloud Shell で次のコマンドを実行して、認証されたことを確認します。
gcloud auth list

コマンド出力

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
gcloud config list project

コマンド出力

[core]
project = <PROJECT_ID>

上記のようになっていない場合は、次のコマンドで設定できます。

gcloud config set project <PROJECT_ID>

コマンド出力

Updated property [core/project].

3. 新しい Spring Boot ウェブアプリを作成する

Cloud Shell が起動したら、コマンドラインを使用して、Spring Initializr で新しい Spring Boot アプリを生成できます。

$ 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

4. Maven pom.xml を更新する

Java サーバーアプリをデプロイするには、Maven App Engine Plugin または Gradle App Engine プラグインを使用する方法と、war パッケージ ディレクトリをデプロイする方法の 2 つがあります。Maven App Engine プラグインを使用してアプリをデプロイします。

Maven App Engine Plugin を追加する

pom.xml を更新して、デプロイ プロセスを簡素化する Google Cloud プラグインを含めます。Vim、nano、または Emacs を使用してファイルを編集できます。

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>

5. App Engine 記述子を追加する

  1. アプリを App Engine スタンダード環境にデプロイするには、新しい src/main/appengine/app.yaml 記述子ファイルを作成する必要があります。
$ mkdir -p src/main/appengine/
$ touch src/main/appengine/app.yaml
  1. src/main/appengine/app.yaml ファイルを編集して、次の内容を追加します。

src/main/appengine/app.yaml

runtime: java11
instance_class
: F4

6. コントローラを追加

DemoApplication.java"hello world!" を返す新しいコントローラを追加します。

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!";
 
}
}

7. アプリをローカルで実行する

  1. Spring Boot プラグインを使用して Spring Boot アプリを起動できます。
$ ./mvnw -DskipTests spring-boot:run
  1. アプリが起動したら、Cloud Shell ツールバーの [ウェブでプレビュー] をクリックし、[ポート 8080 でプレビュー] を選択します。

ブラウザのタブが開き、起動したサーバーに接続されます。

8. App Engine にアプリをデプロイする

  1. まず、App Engine アプリを実行できるようにプロジェクトを初期化します。また、米国中部リージョンで実行するようにプロジェクトを初期化します。
$ 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. 次に、mvn appengine:deploy を実行して、アプリを App Engine スタンダード環境にデプロイします。
$ ./mvnw -DskipTests package appengine:deploy
... first time deploy may take a couple of minutes
  1. デプロイされたアプリは、ウェブブラウザで http://<project-id>.appspot.com を開くか、Cloud Shell で次のコマンドを使用します。
$ gcloud app browse
... [It may print out the URL for your app]

9. 完了

初めての App Engine ウェブアプリの作成について学習しました。

詳細