Open sakamomo554101 opened 2 years ago
コンポーネントは下記。 queue以外はGKEとかで良いのかなー。
queueをどうするか。
https://recruit.gmo.jp/engineer/jisedai/blog/gcp-tasks-pub-sub/
QueueはPub/Subが良いのかなー。 kafkaを組んでも良いが。
https://qiita.com/minarai/items/fb1bec88ce767ce69bfe Pub/Subについて分かりやすい記事
queue以外は、Cloud Runでコンポーネント作ってしまえばいいかなー。 ダッシュボードのみは外部に公開する必要がある。
cloud buildでコンテナイメージの作成は自動化して、インフラを構築するようにしないとだな。 インフラ自体は、terraformで書けば良い?
https://runble1.com/gcp-terraform-cloud-run/ terraformでCloud Runで構築するイメージ。
https://cloud.google.com/docs/terraform gcpでterraformを使うことについてのドキュメント
https://registry.terraform.io/providers/hashicorp/google/latest/docs あ、このterraformのドキュメント見ると、各GCPのコンポーネントの作り方が分かりそう。
CloudRunを使う場合、Dockerファイルをベースにコンテナやイメージを作るが、 docker-composeを使って、現状は動かしているので、ファイルコピーとかをproductionでは出来るようにする対応が必要(一部では対応しているんだけどね)
まずはこれやらんと、terraformも何もないな・・。
https://cloud.google.com/vpc/docs/vpc?hl=ja VPCとかも勉強せねば。
今回は、IPベースで外部マシン(GCP以外)からダッシュボードにアクセスして、要約処理が出来ればOKとする。 ※ドメインやロードバランシングは必須ではない。
https://www.topgate.co.jp/cloud-run-2021#cloud-run-4
あれ、CloudRun単独だと、完全オープンなのか(URLも発行されるみたいだし)
となると、VPCの構築は必須だなぁ。
ダッシュボードのみはオープンなURLとすればよく、他のCloudRunについては、internalのみに制限して、デプロイが必要。
以下のような構成で出来んかなー。ちょっと試してみるか。
CloudRunについて、詳しく調査するか。
CloudRunの公開について https://cloud.google.com/run/docs/authenticating/public#console
あぁ、、無限ループでsummarizer_processorは処理されているが、これはCloudRunでは合わん気がする。(トリガーが必要なため)
いや、そうか。キューも必要だった・・。
https://cloud.google.com/run/docs/triggering/pubsub-push
pub/subを使って、kafkaの代わりにしちゃう手もあるな。
もしくは、cloud tasksもある。 https://cloud.google.com/run/docs/triggering/using-tasks
https://recruit.gmo.jp/engineer/jisedai/blog/gcp-tasks-pub-sub/
pubsub vs cloud tasks
https://cloud.google.com/pubsub/docs/choosing-pubsub-or-cloud-tasks?hl=ja
ふーむ、キューっぽいのはCloud Tasksかと思ったが、push型になるな。 pull型のイメージとしては、Pub/Subの印象。
ただ、明示的と暗黙的だと、今回のキューは明示的にすべきな気がする。
pull型にするためにも、Pub/Subかなー。
ただ本来はpush型が正しい気はする。 ※リクエストが増えた際に大量に捌けるようなスケールが必須にはなるけど。
まぁ、とりあえず楽なpull型で対応する。
コンポーネントとして、ベースが何が必要かはまとまったかなぁ。 あとは、内部のやり取りに限定する・ダッシュボードのみを公開する、あたりを突き詰めたい。
Cloud RunをVPCに配置出来るのか?
あー、BQじゃなくて、CloudSQLを使うという手もありそう。
https://medium.com/google-cloud-jp/cloudrun-always-on-cpu-pubsub-pull-2664b9730781
おー、Always on Cpu使えば、無限ループ処理いけそうなんでは?
無限ループいけそう。 なので、summarizer_processorは実装変えずに、Cloud Runで動かせそう。 ※キューからのpull処理は修正必要。
https://cloud.google.com/run/docs/securing/ingress CloudRunの上り側のアクセス制限(つまり、インバウンドのこと)
ダッシュボードは、「すべて」に設定して、他コンポーネント(cloudrun)は「内部」にしてみるのが良いかな。
構成図はざっと作った。
残りは #55 で進めていく。
概要
GCPを用いた場合のインフラ構成図を検討し、全てGCP上(VertexAI含む)で稼働させる場合のタスクを作成する