目次
* はじめに * GCPのコンピューティングの歴史 * Runを使うモチベーション * Runの弱点と対策はじめに
CloudRunには、フルマネージド版とAnthos版があります。 ここでの説明は、フルマネージド版のみです。 また、以降の説明では、フルマネージド版のCloudRunを「Run」と表記します。GCPのコンピューティングの歴史
GCPのコンピューティングサービスの一つであるGAE。
そもそも 昔はGAEしかなかった。
GCP年表
![スクリーンショット 2020-09-08 001207.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/385683/c73cf734-258f-b28a-69ff-1677c0c62ec6.png) 画像は以下の記事から (古い記事なので読まなくて良いです) [GCP誕生から10年、その進化の歴史を振り返る](https://ascii.jp/elem/000/001/757/1757103/#:~:text=Google%20Cloud%20Authorized%20Trainer%E3%81%AE,10%E9%80%B1%E5%B9%B4%E3%82%92%E8%BF%8E%E3%81%88%E3%81%BE%E3%81%99%E3%80%82)GAEしか使えないサービス、APIがたくさんあった。
一例を挙げると
- Cron
- TaskQueue
- Images API
などなど
しかし、今では、、
- Cron => Cloud Scheduler
- TaskQueue => Cloud Tasks
- Images API => 移行先なし
GAE以外のコンピューティングサービスから利用可能
Runを使うモチベーション
- サーバーレス
- フルマネージド
- 従量課金制
- コンテナ
サーバーレスのメリット
- サーバーの管理が不要
- 柔軟なスケーラビリティ
- 約束された高可用性
- 使った分だけの課金
サーバーレスのメリット
- サーバーの管理が不要! => フルマネージド
- 柔軟なスケーラビリティ! => サーバーレス
- 約束された高可用性! => フルマネージド
- 使った分だけの課金! => 従量課金制
サーバーレス
Q. GCPのサーバーレスのサービスってどれ?
サーバーレス
Q. GCPのサーバーレスのサービスってどれ?
A. GAE, Run, Cloud Functions
じゃあ GAE で良くね?なんで Run 使うの?
コンテナ使えるのは Run だけ
コンテナ
詳細は省くので、ちゃんと知りたい人は各自で調べて!!
コンテナは起動しているホストPCのOSの「カーネル」を使う
Docker コンテナは、アプリケーションの実行環境の構成を「Dockerイメージ」として保存できる。
開発者は、DockerレジストリーからDockerイメージを取得し、実行環境を再現できるし、本番環境でも同じように再現できる。
コンテナが使えるメリット
自分の経験で言えば、GAE, Cloud Functions は 数年経つと、アプリで使ってる言語のバージョンアップをしないと、デプロイできなくなり、そして動かせなくなる。
そもそも、バージョンアップするしないは、アプリ側で決めることだと思う。サービス側で決められたくはない。
Run ならアプリ側で決められる。
これは、アプリを長期運用する上でかかる、保守の手間を考えると重要なことだと思う。
CloudRunの弱点と対策
弱点はないです。
弱点はないです。(嘘です)
コンテナの制限
- Linux x86_64 ABI
- PORTの環境変数をListenする
- リクエストを受信してから4分以内に立ち上げる
- リクエストタイムアウトは Max 15分(短くない?)
コンテナの制限
- Linux x86_64 ABI
- PORTの環境変数をListenする
- リクエストを受信してから4分以内に立ち上げる
- リクエストタイムアウトは Max 15分(短くない?)
ただし、βで既にリクエストタイムアウトの Max は 1h です。
つまり、弱点はない。
コールドスタート問題
立ち上げに時間がかかる。今の自分達のプロダクトだと 3分くらい
解決策: Cloud Scheduler を使い、定期的にリクエストを送る。
ちなみに、Cloud On Air を見たら Googleの人曰く、体感5分くらいで 0になるらしいです。
コールドスタート問題
立ち上げに時間がかかる。今の自分達のプロダクトだと 3分くらい
解決策: Cloud Scheduler を使い、定期的にリクエストを送る。
ちなみに、Cloud On Air を見たら Googleの人曰く、体感5分くらいで 0になるらしいです。
ただし、βで既に Minimumインスタンスを設定できる
なので、今から開発するなら、気にしなくて良い。
つまり、弱点はない。
GRPCのストリーミングに未対応
unary といって単発のリクエストとレスポンスを送る形式のみは、対応しているが、ストリーミングが使えません。
解決策: なし。GKE使え。
GRPCのストリーミングに未対応
unary といって単発のリクエストとレスポンスを送る形式のみは、対応しているが、ストリーミングが使えません。
解決策: なし。GKE使え。
ただし、βで既に対応済み。
つまり、弱点はない。
ロードバランサー繋がりません。CDN使えません。IAP使いたいです!!
解決策: なし。GAE使え。
ロードバランサー繋がりません。CDN使えません。IAP使いたいです!!
解決策: なし。GAE使え。
ただし、βで使えるようになりました。
つまり、弱点はない。
まとめ
- コンテナをサーバーレスで使える
- GAEとかは、プログラミング言語縛り辛いぞ!
- まだ GAE で消耗してるの?