LoginSignup
3
4

More than 3 years have passed since last update.

GCPのApp Engineを使ってGolang製のAPIをデプロイしたら簡単すぎました

Posted at

はじめに

普段は業務でAWSをガッツリ触らせていただいていますが、今回は前々から興味のあったGCP(Google Cloud Platform)でアプリケーションをデプロイすることにしました。

ちなみに、GCPでプロジェクト作成後、クレジットカードを登録したら1年間使える3万円分のクレジットもらえました。。

至れり尽くせりすぎる!ありがたく使わせていただきます!

GCPとAWSの違いとは?

個人的な所感ですが、

AWSはいろんなサービスがあって、インフラエンジニアの方からすると痒いところに手が届くようなサービスが豊富にあるように思えます。

ただ、僕のようにインフラに詳しいわけではなく、ただ自分のアプリを手軽にデプロイしたいような人間からすると、AWSは若干ハードルが高いように感じます。

それに対してGCPは、下記のようなメリットがあります!

  • 公式ドキュメントが豊富で読みやすい
  • コンソールのUIがAWSに比べてわかりやすい
  • サービスの数はAWSほど多くなく、どれを使えば良いか初心者でもわかりやすい
  • Firebaseを使う場合、GCP内であれば連携が容易

特に、個人開発でFirebaseをよく使うので、Firebaseとの連携が容易にできる(プロジェクトIDを指定するだけ)のは最高だと思います。

App Engineとは?

App Engineの公式ドキュメントはこちらです

一言でいうと、フルマネージドなサーバーレスコンピューティングサービスです。

オートスケーリングの機能もあるので、AWSのFargateのようなイメージです(App Engineはコンテナ基盤ではありませんが)。

僕たち開発者は、インフラ周りのことを全てGoogleに丸投げでアプリをデプロイできるわけですね。最高。

App Engineにアプリケーションをデプロイする

いよいよデプロイしていきましょう。

今回はリクエストがきたらHello Worldと返すだけのシンプルなAPIをデプロイします。

  • まずはソースを作成します。マイブームのGolangで書いていきます。
helloworld.go
import (
    "net/http"
    "os"

    "github.com/labstack/echo"
)

func main() {
    // サーバーのインスタンス作成
    e := echo.New()

    // ルーティング設定
    e.GET("/", helloworld)

    // サーバー起動
    e.Logger.Fatal(e.Start(":" + os.Getenv("PORT")))
}

func helloworld(c echo.Context) error {
    return c.String(HttpStatus.OK, "Hello, World")
}
  • App Engineでアプリを起動するために必要なyamlファイルを作成します。
app.yaml
runtime: go112
  • 作成したソースとyamlファイルをGitHubにプッシュします。

  • GCPで新規プロジェクトを作成します。

  • GCPコンソール上でターミナルを開きます。

→ ローカルでCLIを使う方法もありますが、今回は手軽に試したいのでGCPが用意してくれている簡易的なターミナルを使用します。

  • ソースをGitHubからクローンします。

  • ソースのあるディレクトリに移動したら、下記コマンドを叩きます。

gcloud app create
  • 最後にデプロイ用のコマンドを叩きます。
gcloud app deploy

以上です!!!ターミナルに表示されるURLに実際にリクエストを送ってみると正常に動いているはずです。

おわりに

こんなに簡単なのは本当に感動しました。

Cloud FunctionsやKubernetes Engineも使ってみたいなあ。

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4