Slide 1

Slide 1 text

1 © Commune Inc. All rights reserved Direct VPC egress 移⾏で起こった コスト低減と棚ぼた改善

Slide 2

Slide 2 text

© Commune Inc. All rights reserved ⾃⼰紹介 2 加藤 智也 ➢ 所属 ○ コミューン株式会社 開発部 SRE チーム ➢ 経歴 ○ SIer、社内SE(2年半) ○ SLOT(3年弱) ○ HRTech SaaS SRE(2年間) ○ 2024/02 ⼊社 ➢ 趣味 ○ 節約、筋トレ、⿇雀、Splatoon3

Slide 3

Slide 3 text

プロダクト紹介 コミューンは、単なる場作りを越えて活性化し、 事業成果が出るコミュニティサクセスプラットフォーム © Commune Inc. All rights reserved ロイヤルユーザー育成のためのUXを⼀気通貫で提供 プロジェクトを成功に導く運⽤サポート体制 ⽀援と実績で培ったノウハウ提供 コミューンの3つのポイント 1.プロダクト 2.運⽤サポート 3.ノウハウ提供 3

Slide 4

Slide 4 text

© Commune Inc. All rights reserved Communeのアーキテクチャ 4

Slide 5

Slide 5 text

© Commune Inc. All rights reserved ⽬次 ➢ 移⾏結果 ➢ Serverless VPC Access connector or Direct VPC egress ➢ コスト ➢ 移⾏⽅法 ○ Cloud Run ○ Cloud Functions ○ Cloud Run Jobs ➢ 棚ぼた改善 ➢ まとめ

Slide 6

Slide 6 text

© Commune Inc. All rights reserved Serverless VPC Access connector Direct VPC egress 6 ‧約-500$/⽉ ‧Cloud Run コンテナ起動時間66% UP 移⾏結果

Slide 7

Slide 7 text

© Commune Inc. All rights reserved VPC内リソースとプライベートIPで接続する⼿段 7 VPC network Cloud SQL Memorystore ComputeEngine Cloud Run Cloud Functions Serverless VPC Access connector Direct VPC egress or VPC外

Slide 8

Slide 8 text

© Commune Inc. All rights reserved 8 Serverless VPC Access connector

Slide 9

Slide 9 text

© Commune Inc. All rights reserved Serverless VPC Access connector   9 (※参考1:サーバレスVPCアクセスコネクタとの⽐較より引⽤) VMマシン (常時起動&スケールインしない) コストは VMマシン起動時間分のコスト + ネットワークコスト (最低インスタンス数は2)

Slide 10

Slide 10 text

© Commune Inc. All rights reserved 10 Direct VPC egress

Slide 11

Slide 11 text

© Commune Inc. All rights reserved Direct VPC egress 11 (※参考1:ダイレクトVPC下り(外向き)とはより引⽤) ✖ GA VMマシンは不要!(Cloud RunはVPC内の内部IPを使⽤する) 料⾦は ネットワークコストのみ 2023/8/14 Preview、2024/4/24 GA (※参考2: Cloud Run release notesより抜粋)

Slide 12

Slide 12 text

© Commune Inc. All rights reserved 12 Serverless VPC Access connectorとDirect VPC egressの⽐較 Serverless VPC Access connector Direct VPC egress コスト ⾼ 低 パフォーマンス 低 ⾼ 使⽤するIPアドレスの数 少ない 多い 新旧 旧 新 リリースステージ GA GA (Cloud Run Jobsは除く) (※参考3:ダイレクトVPC下り(外向き)とVPCコネクタの⽐較 ⽐較表より引⽤)

Slide 13

Slide 13 text

© Commune Inc. All rights reserved コスト 13 ネットワークコスト VMマシン ネットワークコスト コスト削減 Direct VPC Egress (上記はコスト削減を分かりやすく⽰す⽬的で使⽤しておりグラフの幅は実際の⽐率を正確に表現していない。) (VMマシンコストはVMインスタンス数×インスタンスタイプに応じた料⾦×時間で計算している。※料⾦単価については参考4のComputeEngine料⾦の汎 ⽤マシンタイプを使⽤している。) 535($/month)

Slide 14

Slide 14 text

© Commune Inc. All rights reserved 移⾏の流れ 14 コスト試算 コネクタ使⽤ リソース確認 開発環境 試⽤ Preview General Availability ステージング/本番 部分的 ステージング/本番 全体

Slide 15

Slide 15 text

© Commune Inc. All rights reserved 15 移⾏⾃体は簡単(Cloud Run) チェックを⼊れる VPCとサブネットを選択する (Cloud Run Jobsも同様)

Slide 16

Slide 16 text

© Commune Inc. All rights reserved 16 注意点① サブネットのCIDR設定 VPCやサブネットを意識せずdefaultサブネットを使いがち (asia-northeast1だと、10.146.0.0/20の4096個) (Google Cloudの良いところでもある) ➢ IPアドレスの数 少なくとも Cloud Runインスタンスの4倍の数が必要 (※参考5:VPC ネットワークによるダイレクト VPC 下り(外向き )より引⽤) 最⼤インスタンス数の合計とRevisionの切り 替えを意識してIPアドレスを確保しておく必 要がある (古いRevisionも最⼤20分間IPアドレスを保 持するため) 余裕を持たせるなら8倍の数

Slide 17

Slide 17 text

© Commune Inc. All rights reserved 17 注意点②-1 最⼤インスタンス数 最⼤インスタンスを100以下にする必要がある

Slide 18

Slide 18 text

© Commune Inc. All rights reserved 18 注意点②-2 使⽤量割り当ての上限緩和申請 最⼤インスタンス数は100まで可能 (200のリージョンもある) (Communeでは500のCloud Runも存在) ⇨ Cloud Run Admin APIの割り当てを増やす申請 ステージング環境お断りメールが届く 簡単に申請できそう!

Slide 19

Slide 19 text

© Commune Inc. All rights reserved 19 Cloud Functionsの移⾏① gen1 → 関数をコピーしてリネーム → オリジナル削除 → 関数コピーでgen2指定 gen1ではDirect VPC egressは使⽤できない

Slide 20

Slide 20 text

© Commune Inc. All rights reserved 20 Cloud Functionsの移⾏② gen2へ変更してdeploy → Cloud Runの画⾯に表⽰

Slide 21

Slide 21 text

© Commune Inc. All rights reserved 21 Cloud Run Jobsの移⾏① Cloud Run Jobs ⽤のコンストラクトを作成(CDK for Terraform ) 1. 可読性 2. 再利⽤性 3. 隠蔽 実装者はこれだけ書けば良い

Slide 22

Slide 22 text

© Commune Inc. All rights reserved 22 Cloud Run Jobsの移⾏②(改善の余地) サービスアカウント、IAMなど もセットで作成 実装者が意識せずとも適切な権限 設定が可能

Slide 23

Slide 23 text

© Commune Inc. All rights reserved 23 Cloud Run Jobsの移⾏③(やらかし) デプロイ⽤スクリプト gcloud beta run jobs deploy ${JOB_NAME} \ --project=${GCLOUD_PROJECT} \ --region=${GCLOUD_REGION} \ --vpc-connector=cloud-run-sql-connector\ --parallelism=0 \ --max-retries=0 \ --task-timeout=$TASK_TIMEOUT \ --wait (参考6: gcloud beta run jobs deploy) オプション消し忘れ ⇨Cloud Runだったら影響範囲でかくてヤバかったかも‧‧‧

Slide 24

Slide 24 text

© Commune Inc. All rights reserved 24 connectorの削除 コネクタの削除はDELETEワンポチですが消さなきゃ節約できません ※簡単に削除可能である⼀⽅で使⽤中のリソースがあっても削除できて しまう

Slide 25

Slide 25 text

© Commune Inc. All rights reserved 棚ぼた(Cloud Runの起動時間が速くなった!?) 25 direct VPC egress 切り替え とあるCloud RunのContainer startup latency 66%程度短縮! opentelemetry-sdkなどの影響で 遅くなっていた

Slide 26

Slide 26 text

© Commune Inc. All rights reserved まとめ 26 ➢ コスト削減効率良い ○ 535($/month)程度削減 (Google Cloudで Cloud Runどっぷりなら) ➢ 影響範囲の確認は丁寧に ○ リソース変更の際には関連する設定ファイル、スクリプトファ イルは要チェック(今回は運良く助かった) ➢ ⾼速化するかもしれない ○ 起動時間66%UP

Slide 27

Slide 27 text

© Commune Inc. All rights reserved 参考資料 27 1. https://cloud.google.com/blog/ja/products/serverless/announcing-direct- vpc-egress-for-cloud-run 2. https://cloud.google.com/run/docs/release-notes 3. https://cloud.google.com/run/docs/configuring/connecting-vpc?hl=ja 4. https://cloud.google.com/compute/all-pricing?hl=ja 5. https://cloud.google.com/run/docs/configuring/vpc-direct-vpc?hl=ja 6. https://cloud.google.com/sdk/gcloud/reference/beta/run/jobs/deploy

Slide 28

Slide 28 text

コミューンの会社情報 エンジニア向け会社情報 Xアカウント (Commune Developers) https://commmune.notio n.site/ver-0b895a0187ef4 954a2d5182afd82082d 28

Slide 29

Slide 29 text

© Commune Inc. All rights reserved