LoginSignup
4
6

More than 3 years have passed since last update.

CloudRunを試してるけど、GCPはまだまだAppEngineが最強の話

Last updated at Posted at 2019-05-05

概要

2019/5/13追記
CloudRunからSQLデータベースへ接続できるようになりました。

Serverlessでシステム作るときにだいたい必要になってくる秘匿情報管理、VPCリソースへのアクセス、非同期処理をCloudRunで利用可能か見てみました。
また、CloudRunだけでなくAppEngine、CloudFunctionsでもどうか調べてみたら、結局まだまだAppEngineが最強だったってお話です。

秘匿情報の管理

berglasを使えば、AppEngine、CloudFuntions、CloudRunどれでも管理が可能です。

VPC内へのアクセス

GCPではマネージドサービスからVPC内へのルーティングとしてServerless VPC Accessというサービスがあります。

アーキテクチャ

Serverless VPC Access Connectorを作成し、AppEngine、CloudFunctionsからはConnectorにアクセスします。VPCへはConnectorからアクセスします。

スクリーンショット 2019-05-03 19.02.17.png

ただ、この図を見ても分かる通り、現状AppEngineとCloudFunctionsしか対応していません。
SQLデータベースやMemoryStore(Redis)へのアクセスが必要なケースではまだCloudRunでの運用は難しそうです。

また、このServlerless VPC Access自体us-central1にしかないので、早く他のリージョンへ展開してほしいところです。(AppEngineを東京リージョンに作っても一度us-central1経由になると思われる)

非同期処理

マイクロサービス間を非同期につなぐキューイングのサービスとしてCloudTasksがあります。(AWSでいうところのSQS)

ドキュメント

キューの作成

gcloud beta tasks queues create <キュー名>

キューが作成されると、ブラウザから確認できるようになる。

スクリーンショット 2019-05-03 19.29.38.png

思いっきり、AppEngineキューって書いてます。。。

キューへのデータ登録

APIのドキュメント

必要ライブラリ(python)

google-cloud-tasks==1.0.0

キューへのデータ登録はCloudRunからでもできます。

    data = 'hoge'
    client = tasks_v2.CloudTasksClient()
    parent = client.queue_path('<プロジェクト名>', '<リージョン>', '<キュー名>')
    task = {
            'app_engine_http_request': {  # Specify the type of request.
                'http_method': 'POST',
                'relative_uri': '/example_task_handler'
            }
    }
    task['app_engine_http_request']['body'] = data.encode()
    response = client.create_task(parent, task)

タスクのフォーマット

ただ、タスクのフォーマットを見ても分かる通り、AppEngine向けの仕様になっており、キューに登録されたデータの自動ディスパッチはAppEngineになります。
(キューへの登録や手動で取り出す分にはCloudRunからでも可能ですが)

まとめ

Serverlessでアーキテクチャを考えるときにだいたい出てくる秘匿情報管理、VPCアクセス、非同期処理と見てきましたが、全てに対応できているのはAppEngineのみでした。
CloudRunは期待しているんですが、まだ機能が少ないのと、us-central1にしかないので、早く機能追加&東京リージョンへきてほしいですね。

4
6
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
4
6