Google App Engine アプリケーションは、作成、保守、およびトラフィックとデータ ストレージのニーズの変化に合わせたスケール変更が容易です。App Engine で保守できないサーバーはありません。アプリケーションをアップロードするだけで利用できます。

App Engine アプリケーションは、入トラフィックに基づき自動的にスケール変更します。負荷分散、マイクロサービス、承認、SQL および NoSQL データベース、Memcache、トラフィック分割、ログ、検索、バージョニング、ロールアウトおよびロールバック、セキュリティスキャニングすべてにネイティブで対応しており、カスタマイズ性が高いです。

App Engine の環境 (標準環境フレキシブル環境) は、Java、Python、PHP、NodeJS、Go などのプログラミング言語のホストに対応しています。これら 2 つの環境によって、各環境にはそれぞれの強みがあるため、ユーザーはアプリケーションの挙動を最大限柔軟に調整できます。詳細については、「App Engine 環境」を参照してください。

このコードラボでは、Web を介して Google Cloud Platform でホストされているコンピューティング リソースへの接続方法について学びます。Cloud Shell および Cloud SDK gcloud コマンドの使用方法について学びます。

本チュートリアルでは、『Spring Boot 導入ガイド』のサンプル コードを使用します。

学習内容

必要な環境

本チュートリアルをどのように使用しますか?

通読するだけ 通読し、演習をこなす

HTML/CSS Web アプリの構築についてのあなたの習熟度として、最も適切なものを選択してください

初心者 中級者 上級者

Google Cloud Platform サービスの使用についてのあなたの習熟度として、最も適切なものを選択してください

初心者 中級者 上級者

自己学習環境セットアップ

Google アカウント (Gmail または Google Apps) をまだ持っていない場合、作成する必要があります。Google Cloud Platform コンソール (console.cloud.google.com) にサインインし、新しいプロジェクトを作成します。

すべての Google Cloud プロジェクトで一意の名前であるプロジェクト ID (上記の名前はすでに取得されているため、使用できません!) を覚えてください。以降、本コードラボでは PROJECT_ID と呼びます。

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

本コードラボの実行には数ドルもかかりませんが、より多くのリソースを利用するか、実行し続けると、より多く料金がかかる場合があります (本書末尾の「クリーンアップ」セクションを参照してください)。

Google Cloud Platform の新規ユーザーは、300 ドル無料トライアルの対象となります。

Google Cloud Shell

Google Cloud と Kubernetes はラップトップからリモートで操作できるため、本コードラボでは、Cloud で動作するコマンドライン環境である Google Cloud Shell を使用します。この Debian ベース仮想マシンには、必要なすべての開発ツール (ockergcloudkubectl など) がロードされています。それは、永続的な 5GB ホームディレクトリを提供し、Google Cloud で動作し、ネットワーク性能と認証を大幅に改善します。そのため、本コードラボに必要なものは、ブラウザのみです (本コードラボは Chromebook でも動作します)。

Google Cloud Shell をアクティブにするには、開発者コンソールで右上のボタンをクリックするだけです (プロビジョニングと環境への接続には数分しかかかりません)。

クラウド シェルに接続すると、すでに認証済みであり、プロジェクトがすでに PROJECT_ID に設定されていることが分かります。

$ gcloud auth list
認定済みアカウント:
 - <myaccount>@<mydomain>.com (アクティブ)
$ gcloud config list project
[core]
project = <PROJECT_ID>

何かしらの理由でプロジェクトが設定されていない場合、次のコマンドを発行してください。

$ gcloud config set project <PROJECT_ID>

PROJECT_ID が分かりませんか?セットアップステップでどの ID を使用したかを確認するか、コンソール ダッシュボードで検索してください。

重要。最後に、デフォルト ゾーンとプロジェクト構成を設定します。

$ gcloud config set compute/zone us-central1-f
$ gcloud config set compute/region us-central1

別のゾーンも選択できます。ゾーンの詳細については、『領域及びゾーン説明書』を参照してください。

他のブラウザ タブ/ウィンドウから Google Cloud Console (https://console.cloud.google.com) に移動します。ラボプロクターから与えられたログイン資格情報を使用します。

作業はすべて、Google Cloud Shell (Cloud で動作するコマンド ライン環境) で行います。この Debian ベース仮想マシンには、必要な開発ツール (gcloudgit など) がすべてロードされており、永続的な 5GB ホーム ディレクトリを提供します。画面右上のアイコンをクリックして、Google Cloud Shell を開きます。

Google Cloud Shell には、Java 7 と Java 8 が両方インストールされています。デフォルトでは、Java 7 が使用されます。Java 8 に切り替えましょう。Cloud Shell では、update-alternative コマンドを使用して、デフォルト Java バージョンを変更します (必ず「2」を入力して、java-8-openjdk オプションを選択してください)。

$ sudo update-alternatives --config javac
代替 javac (providing /usr/bin/javac) には 2 つの選択肢があります。
  選択    パス                                         優先順位   ステータス
------------------------------------------------------------
* 0            /usr/lib/jvm/java-7-openjdk-amd64/bin/javac   ...
  1            /usr/lib/jvm/java-7-openjdk-amd64/bin/javac   ...
  2            /usr/lib/jvm/java-8-openjdk-amd64/bin/javac   ...
Enter を押して現在の選択 [*] を維持するか、選択番号を入力してください。2
update-alternatives: /usr/lib/jvm/java-8-openjdk-amd64/bin/javac を使用して、手動モードで /usr/bin/javac (javac) を提供します

$ sudo update-alternatives --config java
代替 java (providing /usr/bin/java) には 2 つの選択肢があります。
  選択    パス                                            優先順位   ステータス
------------------------------------------------------------
* 0            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   ...
  1            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   ...
  2            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   ...
Enter を押して現在の選択 [*] を維持するか、選択番号を入力してください。2
update-alternatives: /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java を使用して、手動モードで /usr/bin/java (java) を提供します

Cloud Shell を起動すると、次のコマンド ラインを使用してホーム ディレクトリでサンプル ソース コードを複製できます。

$ git clone https://github.com/spring-guides/gs-spring-boot.git
$ cd gs-spring-boot/complete

Maven または Gradle プラグインを使用するか、war パッケージ ディレクトリを展開して、Java サーバー プリケーションを展開できます。

展開プロセスを簡易化する Google Cloud Platform プラグインを含めるよう、pom.xml を更新します。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.appengine</groupId>
        <artifactId>gcloud-maven-plugin</artifactId>
        <version>2.0.9.106.v20160420</version>
      </plugin>
    </plugins>
  </build>
</project>

通常、Spring Boot プラグインを使用して、Spring Boot アプリケーションを起動できます。

$ mvn spring-boot:run

アプリケーションが起動したら、Cloud Shell ツールバーで Web Preview アイコンをクリックし、[preview on port 8080]を選択します。

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

App Engine 環境にアプリケーションを展開し、mvn gcloud:deploy を実行します。

$ mvn gcloud:deploy

アプリケーションの展開後、Web ブラウザで URL http://<project-id>.appspot.com を開いてアクセスできます。

まとめ

このステップでは、単一の Spring Boot アプリケーションをセットアップし、App Engine でアプリケーションを実行および展開できました。

最初の App Engine Web アプリケーションを書き込む方法について学びました!

参考

ライセンス

本書は、Creative Commons Attribution 2.0 Generic License でライセンスされています。