2018/12/25

App EngineのGo 1.11 Runtimeが素敵なのでGCP始めましたʕ◔ϖ◔ʔ

発端


ずいぶん前なのですが、Go言語の公式ブログで「Announcing App Engine’s New Go 1.11 Runtime」という記事がありました。内容は「おまじないコード無しの普通のWebサービスのコードを、そのままApp Engineにデプロイできるようになったよ」というもので、GCPにとても魅力を感じました。

やってみる


素敵だなと感じたら実践せずにはいられないフレンズなので、やってみますʕ◔ϖ◔ʔ
記事によると以下の3ステップでデプロイできるとのこと。


  • Create an account with https://cloud.google.com.
  • Create a project.
  • Install the Cloud SDK on your system.

https://blog.golang.org/appengine-go111



Google Cloud Platformにアカウント登録

ざっくりと以下の流れでGCP用のアカウント登録ができました。
  1. Google Cloud Platformのページで「GCP 無料トライアル」ボタンをクリック
  2. Googleアカウントでログイン
  3. クレジットカード情報を入力
実は「いろいろ失敗して、高額な請求が来てしまう事態になったらどうしよう」という心配があったのですが、以下の説明を読んでそれらの杞憂は簡単に払拭できました。
無料トライアルで料金が発生することはありますか?
いいえ、トライアルで料金が発生することはありません。トライアルが終了したアカウントは一時停止となり、有料アカウントへアップグレードすることで同じアカウントを従量課金で使うことができます。登録後、Google から $0~$1 の取引が発生する場合があります。これは、Google の請求システムとクレジット カードやデビットカードの発行会社との承認リクエストが保留中であることを示します。承認は、カード発行会社によって現地通貨に換算される場合があり、これらの取引は、保留中の取引として明細書に最大 1 か月間表示されます。この取引は承認手続きによるもので、実際には請求されません。ご質問は、承認状況について取引先の銀行までお問い合わせください。
https://cloud.google.com/free/docs/frequently-asked-questions

Google Cloud Platform の無料枠」にあるように無料枠を与えてくれますし、登録したクレジットカードに請求が発生するような有料アカウントへの移行は自動で行わない、ということが確認できて安心して始められました。

gcloudコマンドインストール

私はシェルにfish shellを使っていることもあって、「Cloud SDK のインストール - 対話型インストーラ」の方法でインストールするのが一番よかったです。あとは「Cloud SDK の初期化」も参照して初期設定を済ませましょう。

なお、リージョンやゾーンについては「リージョンとゾーン」に一覧がありますのでここで確認して設定します。東京リージョンならasia-northeast1を、ゾーンはasia-northeast1-aなどを使えば良さそうです。

サーバーサービスのコードと設定ファイル

上記ブログ記事のコードをコピペしてmain.goファイルを作ります。
// This server can run on App Engine.
package main

import (
    "fmt"
    "log"
    "net/http"
    "os"
)

func main() {
    port := os.Getenv("PORT")
    if port == "" {
        port = "8080"
    }
    http.HandleFunc("/", hello)

    log.Fatal(http.ListenAndServe(fmt.Sprintf(":%s", port), nil))
}

func hello(w http.ResponseWriter, r *http.Request) {
    w.Write([]byte("Hello, 世界"))
}

さらにapp.yamlも作って以下の内容を書きます。
runtime: go111

デプロイ

デプロイします。
gcloud app deploy

なんと、これだけですか。素晴らしいですね(*´ω`*)

なぜ今か


実は、こんなご時世でクラウドサービスの登録や利用を躊躇していたのは、
  • AWSでSecret Access Keyを流出させて○○万円不正利用された
  • Big Queryで○○万円溶けた
といった記事を読んで「あ、ドジな私はこれ絶対やるわ。やめとこ。」と思って様子見していたからでした。

しかし、2年ほど前にGo言語を使い始めてサーバーサービスなどを自分で作るようになり、Dockerコンテナで簡単に各種サービスをデプロイする簡単さを体験し、業務でAlexaのカスタムスキルを作るようになって確信したのでした。「そんなん言うてられへん。やっぱクラウド技術いるわ」と。

まとめ


そんなこんなでGCPに入門しました。
公式のチュートリアルがかなり充実しているので完全に好みの問題ですが、Manningの「Google Cloud Platform in Action」がなかなか楽しく読めてオススメです。各種GCPサービスのコンセプトを、図を使って丁寧に説明してくれるので「なぜ必要か」「どういった用途で使うか」がイメージしやすいです。

0 件のコメント: