Google App Engine Java Standard 環境で手っ取り早くSpring Boot アプリケーションを開発する
Xamarin を試したく、バックエンドのサービスを、GAE(.NET) として、C#で言語をそろえて、なるべきスピーディーに開発を目論見るが、以下の記述。
https://cloud.google.com/appengine/docs/flexible/java/flexible-for-standard-users?hl=ja
フレキシブル環境は、スタンダード環境を補完することを目的としています。既存のアプリケーションをスタンダード環境で実行している場合、アプリケーション全体をフレキシブル環境に移行することは、通常必要ありません。そうではなく、アプリケーションの中で、より多くの CPU やメモリ、特殊なサードパーティ ライブラリやプログラムを必要とする部分や、スタンダード環境では不可能な動作を必要とする部分を見極めてください。アプリケーションにそのような部分があったら、その部分だけをフレキシブル環境を使用して処理する小さな App Engine サービスを作成します。
まぁそうだよなと思いつつ、フレキシブル環境に、ASP.NET MVCのサンプルを作ってデプロイ、しばらく、そのままにしていたら、ご、ごせんよんひゃくえん!?と結構な額の使用料!
まだ、プロモーション用にいただいた、残額が結構あったから、実際の支払いにはいたらなかったが、うーん怖い。AWSも支払苦で撤収しているので、やはりここは、無料枠もあるスタンダード環境で行こう。
1.Google App Engine Standard 環境 Java
https://cloud.google.com/appengine/docs/standard/java/building-app/environment-setup?hl=JA
ということで、上記を参照してチュートリアルをこなしてみようとしたが、、、
うーん懐かしすぎる。バージョンは進んでいるが、10年以上前、まだ JavaがSunのころに受験したWebこんぽーねんとでべろっぱー的なチュートリアル。。。
これはこれで、初学者には勉強になるが、ちょっとらちが空かない。何らかのフレームワークを導入せねば、Slim3とかまだあるのか?と思いつつ、
2. Google App Engine で Spring Boot を利用する
おお、Spring がそのまま使えそう。上記チュートリアルを片手間にこなし、自分の中のSpringのバージョンが、3.5 くらいで止まっているので、書籍を購入。
DIやら、AOPやらのコンセプトは、よいので、手順などが知りたかったのだが、この書籍は丁寧な記述で分かりやすい。
3.環境構築
Spring 開発環境のSpring Tool Suite を導入する、、前に Eclipse + Google Cloud Platform SDK導入済みだったので、Eclipseのプラグインとして、STSを導入する。
http://typea.info/tips/wiki.cgi?page=Google+App+Engine%28Java%29
https://cloud.google.com/appengine/docs/standard/java/building-app/environment-setup?hl=JA
上記を参考に、以下のツール類をインストール。
- Eclipse
- Maven
- Google SDK コマンドラインツール
できたら、Eclipse を立ち上げ、Help – Eclipse Marketplace から、sts を検索して、インストール
4.プロジェクトの作成
FIle – New – Spring Starter Project から、Webアプリケーションのプロジェクトを作成する。
Type は Maven とする!あとは、Mavenのお作法に従って入力し、次へ
Webにチェックを入れて、プロジェクト作成。細かい手順については、上記書籍を購入すると捗るのでは。
この段階で、一度実行すると、エラーとなる。このくだりも書籍通りで、想定内。
5.Google App Engine 化
とりあえず、想定通り、Spring Boot アプリケーションが動いたので、GAE化をしていく。
5.1 pom.xml の編集。以下を追記
- <plugin>
- <groupId>com.google.cloud.tools</groupId>
- <artifactId>appengine-maven-plugin</artifactId>
- <version>1.3.2</version>
- <configuration>
- <version>1</version>
- </configuration>
- </plugin>
5.2 App Engine のディスクリプタを追加
src/main/webapp/WEB-INF/appengine-web.xml
ファイルを追加し、以下を記述
- <appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
- <threadsafe>true</threadsafe>
- <runtime>java8</runtime>
- </appengine-web-app>
6.アプリケーションの作成
上記で実行したときにエラーになっていたが、それは、リクエストを処理するコントローラーが指定されていなかったため。
- package info.typea;
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.SpringBootApplication;
- @SpringBootApplication
- public class FavPhraseApplication {
- public static void main(String[] args) {
- SpringApplication.run(FavPhraseApplication.class, args);
- }
- }
自動生成された、アプリケーションには、@SpringBoolApplication により、SpringBootApplicationであることを識別し、Spring Bootで起動するようになっているため、チュートリアルに従い、URIをハンドリングする、メソッドを追加し、以下とする。
- package info.typea;
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.SpringBootApplication;
- import org.springframework.web.bind.annotation.GetMapping;
- import org.springframework.web.bind.annotation.RestController;
- @SpringBootApplication
- @RestController
- public class FavPhraseApplication {
- public static void main(String[] args) {
- SpringApplication.run(FavPhraseApplication.class, args);
- }
- @GetMapping("/")
- public String hello() {
- return "Hello GAE Java std env with Spring boot !";
- }
- }
再度実行し、ローカル環境で動くことを確認!
7.Google App Entineにデプロイ
http://typea.info/tips/wiki.cgi?page=Google+App+Engine%28Java%29#p4
pom.xml のディレクトリで、以下のコマンドを実行
- >mvn appengine:deploy
成功したのを確認し、以下のコマンドで、ブラウザをたちあげる
- >gcloud app browse
おお。Spring Boot Application が、Google App Engine Starndard環境で実行された!
めでたし!!