Google AppEngine を使ったサーバーレスアプリ運用
Google AppEngine とは
Google App Engine は、Google のインフラの上でアプリケーションを作り、実行できるようにする PaaS です。
Google App Engine とは? | App Engine | Google Cloud
デフォルトで用意されている機能が非常に強力で、1インスタンスであればほぼ無料で運用することができます。
私が所属する事業部では自らインフラを構築せずサーバーレスでアプリ運用しているため、記事としてまとめました。
※今回はフレキシブル環境に関する記述となります。
簡単なアプリを用意
まずAppEngine上で動かすアプリを用意します。
今回はGolangでサンプルを実装します。
package main
import (
"fmt"
"log"
"net/http"
)
func main() {
http.HandleFunc("/", handle)
http.HandleFunc("/_ah/health", healthCheckHandler)
log.Print("Listening on port 8080")
log.Fatal(http.ListenAndServe(":8080", nil))
}
func handle(w http.ResponseWriter, r *http.Request) {
if r.URL.Path != "/" {
http.NotFound(w, r)
return
}
fmt.Fprint(w, "Hello world!")
}
func healthCheckHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "ok")
}
AppEngineの設定
次に app.yaml を記述しAppEngineの設定をします。
runtime: go
env: flex
automatic_scaling:
min_num_instances: 1
max_num_instances: 2
これでAppEngineのデプロイの順位が整いました。
デプロイ
リリース自体も非常に簡単で gcloud をインストールしてコマンドを実行するとリリースされます。
gcloud app deploy
リリースバージョンを管理
リリースすると、AppEngine上でリリースしたビルドを確認することができます。
この機能で前のバージョンに戻したり、トラフィック割り当てを設定することでバージョンごとにリクエストの割り当てを簡単に行う事ができ、手動でカナリアリリースのようなことが行なえます。
アプリケーションの監視
ログ監視は最初から用意されています。
最初からログをブラウザ上で確認ができ、文字列検索や、http status での検索を行うことができます。
まとめ
まとめると
- インフラを構築せずに簡単にリリースができる
- 用意されている機能が非常に強力で充分に運用できる
- 1インスタンス運用であればほとんど費用はかからない
今回はこれぐらいしかまとめられませんでしたが、他にも機能がたくさんあるので一度使ってみてください。