Table of Contents
はじめに
普段は業務で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で書いていきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
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)
1 |
runtime: go112 |
- 作成したソースはGitHubにプッシュします。
- GCPで新規プロジェクトを作成します。
- GCPコンソール上でターミナルを開きます。
→ ローカルでCLIを使う方法もありますが、今回は手軽に試したいのでGCPが用意してくれている簡易的なターミナルを使用します。
- ソースをGitHubからクローンします。
- ソースのあるディレクトリに移動したら、下記コマンドを叩きます。
1 |
gcloud app create |
- 最後にデプロイ用のコマンドを叩きます。
1 |
gcloud app deploy |
おわりに
こんなに簡単なのは本当に感動しました。
Cloud FunctionsやKubernetes Engineも使ってみたいなあ。