decochのブログ

フリーランスのiOSエンジニア decoch のブログです

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上でリリースしたビルドを確認することができます。

f:id:decoch:20181110215524p:plain

この機能で前のバージョンに戻したり、トラフィック割り当てを設定することでバージョンごとにリクエストの割り当てを簡単に行う事ができ、手動でカナリアリリースのようなことが行なえます。

アプリケーションの監視

ログ監視は最初から用意されています。

f:id:decoch:20181110220247p:plain

f:id:decoch:20181110220453p:plain

最初からログをブラウザ上で確認ができ、文字列検索や、http status での検索を行うことができます。

まとめ

まとめると

  • インフラを構築せずに簡単にリリースができる
  • 用意されている機能が非常に強力で充分に運用できる
  • 1インスタンス運用であればほとんど費用はかからない

今回はこれぐらいしかまとめられませんでしたが、他にも機能がたくさんあるので一度使ってみてください。