Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ZennとCloud Runの歩み - プロダクト開発に全集中できる相棒になるまで
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Yusuke Wada
September 25, 2025
Technology
950
6
Share
ZennとCloud Runの歩み - プロダクト開発に全集中できる相棒になるまで
こちらのイベントで Zenn と Cloud Run の事例を紹介しました。
https://offers-jp.connpass.com/event/366307/
Yusuke Wada
September 25, 2025
More Decks by Yusuke Wada
See All by Yusuke Wada
Claude Code でアプリ開発をオートパイロットにするためのTips集 Zennの場合 / Claude Code Tips in Zenn
wadayusuke
8
6.8k
Zennの運営完全に理解した #完全に理解したTalk
wadayusuke
1
510
ZennにCloudflare WAFを導入してDDoSを防いだ例 / zenn-cloudflare-waf-blocked-ddos
wadayusuke
1
1.1k
Google Cloud でシンプルなブログサイト Xenn をつくろう / xenn-google-cloud-handson
wadayusuke
4
330
Google Cloud で プロダクト開発 事業として成長させるZennの例 / grows-zenn-with-google-cloud
wadayusuke
3
920
ZennにみるCloudRunとBigQueryによるアプリケーション構築 / zenn-cloudrun-bigquery-serverless
wadayusuke
16
7.3k
Zennを支える Google Cloud の技術
wadayusuke
5
1.7k
個人ブログサイトを構築して学ぶGraphQL NestJSとNext.js使うよ! / graphql nestjs nextjs bootcamp
wadayusuke
6
4.3k
Step Functions と Lambda Function で組む Athena によるファイル処理 / serverless lightweight etl
wadayusuke
3
4.3k
Other Decks in Technology
See All in Technology
Oracle AI Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
6
1.7k
障害対応のRunbookは作った、でも本当に動くの? AWS FIS で EKS の AZ 障害を再現してみた
tk3fftk
0
110
Swift Sequence の便利 API 再発見
treastrain
1
290
Claude Code / Codex / Kiro に AWS 権限を 渡すとき、何を設計すべきか
k_adachi_01
6
1.7k
R&D 祭 2024 UE5で絵コンテ・作画の制作支援ツールをつくる話
olmdrd
PRO
0
190
続 運用改善、不都合な真実 〜 物理制約のない運用改善はほとんど無価値 / 20260518-ssmjp-kaizen-no-value-without-physical-constraints
opelab
2
250
分断された OT と IT を繋ぐ架け橋 -Kubernetes が切り拓く 産業用組み込み製品の現在地 -
yudaiono
1
120
20260515 ⾃分のアカウントとプライバシーを守る認証と認可の話〜利⽤者向け〜
oidfj
0
710
サイボウズ、プラットフォームエンジニアリング始めるってよ ― プラットフォームチームの事業貢献と組織アラインメントの強化
ueokande
0
120
RedmineをAIで効率的に使う検証
yoshiokacb
0
140
そのSLO 99.9%、本当に必要ですか? 〜優先度付きSLOによる責任共有の設計思想〜 / Is that 99.9% SLO really necessary? Design philosophy of shared responsibility through prioritized SLOs
vtryo
0
810
AI飲み会幹事エージェントを作っただけなのに
ykimi
0
230
Featured
See All Featured
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.6k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
540
Heart Work Chapter 1 - Part 1
lfama
PRO
7
35k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
530
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.3k
Docker and Python
trallard
47
3.8k
Unsuck your backbone
ammeep
672
58k
RailsConf 2023
tenderlove
30
1.4k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
120
Utilizing Notion as your number one productivity tool
mfonobong
4
300
Transcript
Zenn と Cloud Run の歩み プロダクト開発に全集中できる相棒になるまで クラスメソッド株式会社 和田祐介
自己紹介 クラスメソッド株式会社 Zennチーム エンジニア 和田祐介 Zennの開発と運営を担当 Zennチームへ異動 2021年7月 勤務地 生まれ
大学時代 東京 福岡県 北九州市 糸島市(九州大学) Google Developer Experts プログラム認定 Google Cloud / 2024年04月 クラスメソッドへ入社 2016年2月 AWS EC2、Scala、Backend API Cloud Run、Next.js、Ruby on Rails、 Zenn全般
今日お話する内容 Zennでの Cloud Run の使い方をなるべく具体的に紹介 みなさまのサービス開発の手札に加えていただく
Zenn - 技術情報共有コミュニティ 2025年8月時点 1,500 万/月 PV 16万 登録ユーザー 19万
投稿記事数 1,300 組織利用 記事や本を書いて投稿
Zennは2021年にクラスメソッド社が買収しました
2021年当時のおおよその構成 Zennを支える技術とサービス構成 データベース Cloud SQL Analytics 画像など Cloud Storage Assets
Scheduled Tasks Cloud Scheduler タスクAPIへ Monitoring Logging Bulk Tasks Cloud Tasks タスクAPIへ 著者‧読者 管理者 ユーザーAPI App Engine 管理サーバー App Engine タスクAPI App Engine
2022年初頭、Cloud Run へ移行する機運が高まった • 課題1: Vercel のまま利用者が増えるとコストがかさむ ◦ 当時Bandwidth制限が厳しく、Enterprise or
Migration • 課題2: App Engine フレキシブル環境の起動が遅い ◦ スケールアウト時、起動に数分かかっていた… • 課題3: GKEなど管理コストがかかるものは回避 ◦ 3人で開発・運用していたため(今も) アプリケーションをコンテナベースに統一し、Cloud Run へ移行すると決定
現在も Ruby on Rails と Next.js がメイン イベントデータ Cloud Load
Balancing データベース Cloud SQL Analytics 画像など Cloud Storage タスク API Cloud Run 管理用サーバー Cloud Run ユーザーAPI Cloud Run HTML / JS Cloud Run Assets Stats BigQuery Scheduled Tasks Cloud Scheduler タスクAPIへ Monitoring Logging Bulk Tasks Cloud Tasks タスクAPIへ 著者‧読者 管理者 WAF CDN Cloud Armor
いまふりかえって移行はどうだったか? • 成功です。移行してよかったです • 何が良かった? ◦ 課題がほぼ解消できた ◦ Cloud Run
のサービス抽象度がZennと合っていた。ビジネスに集中できる ◦ Cloud Run のアップデートにあやかれる
プロダクトを成長させるとなると… • そうなんです、移行するだけでは不足です • Webアプリをデプロイするのは圧倒的に得意 • 継続的な開発と運用には、いろいろなサービスのちからを借りる必要あり
Cloud Run 活用 具体例 DBマイグレーションしたい キューイングしたい Geminiをアプリに組み込みたい
DBマイグレーションしたい DBマイグレーションはどの現場でも実施されていることと思います ZennのアプリはRuby on Railsの db:migrate コマンドでDBマイグレーションし ている App Engine
時代は SSH ログインして実行していたが、いまは Cloud Run ジョ ブ でDBマイグレーション用のジョブを定義してそれを実行する方式
DBマイグレーションしたい GitHub - mainブランチへマージ ステップ1 Cloud Build - Dockerイメージ作成 ステップ2
Cloud Build - Cloud Run ジョブ 更新 ステップ3 Cloud Build - Cloud Run リビジョン作成 ステップ4 Cloud Shell - DBマイグレーション実行 ステップ5 Cloud Shell - リリース ステップ6
DBマイグレーションしたい GitHub - mainブランチへマージ ステップ1 Cloud Build - Dockerイメージ作成 ステップ2
Cloud Build - Cloud Run ジョブ 更新 ステップ3 Cloud Build - Cloud Run リビジョン作成 ステップ4 Cloud Shell - DBマイグレーション実行 ステップ5 Cloud Shell - リリース ステップ6 - id: deploy-rails-command-job name: gcr.io/google.com/cloudsdktool/cloud-sdk:a lpine entrypoint: gcloud args: - [“run”, “jobs”, “deploy”] - rails-command - --quiet - --image=$IMAGE_NAME - --service-account=$ACCOUNT - --set-cloudsql-instances=$NAME - --command=bundle,exec,rails - --args=db:migrate,db:migrate:status cloudbuild.yaml
DBマイグレーションしたい GitHub - mainブランチへマージ ステップ1 Cloud Build - Dockerイメージ作成 ステップ2
Cloud Build - Cloud Run ジョブ 更新 ステップ3 Cloud Build - Cloud Run リビジョン作成 ステップ4 Cloud Shell - DBマイグレーション実行 ステップ5 Cloud Shell - リリース ステップ6 gcloud run jobs update rails-command \ --project zenn-project \ --region=asia-northeast1 \ --command=bundle,exec,rails \ #なくてもOK --args=db:migrate \ #なくてもOK --execute-now \ --wait
運用してどうか? Cloud Run ジョブ は指定した Docker イメージでコマンドを実行する手段 検証環境ではdb:migrateまでCloud Buildで実行してしまうなど、柔軟性も◯ db:rollback
は本番環境では実質封印 なにか問題が起きた場合は修正を db:migrate したほうが安定すると判断
キューイングしたい Cloud Tasks を使います。ZennではMarkdownの一括変換で利用 Zennでは読み込み速度向上のため変換済みHTMLをDBに保存している Markdown => HTML の変換仕様がかわり、すべての記事を洗いがえるケース
キューイングしたい Cloud Tasks を使います。ZennではMarkdownの一括変換で利用 create_params = { queue: "markdown-convert", target_path:
"/tasks/md_convert/run", payload: { id: new_task.id, item_name: item.class.name, item_id: item.id } } tasks.create(**create_params) enqueue.rb Scheduled Tasks Cloud Scheduler タスクAPIへ 投入側
キューイングしたい Cloud Tasks を使います。ZennではMarkdownの一括変換で利用 create_params = { queue: "markdown-convert", target_path:
"/tasks/md_convert/run", payload: { id: new_task.id, item_name: item.class.name, item_id: item.id } } tasks.create(**create_params) enqueue.rb Scheduled Tasks Cloud Scheduler タスクAPIへ 投入側 post "/tasks/md_convert/run" def run convert(target_item) end markdown.rb 変換側
運用してどうか? 最高です。PUSH型のキューイングサービス • アプリ側の仕事 ◦ エンキュー(パラメータをセットしてリクエストするだけ) ◦ 受け側のエンドポイントと処理を実装(ふだんのWeb APIとかわらない) Markdown
変換処理はユーザー利用のものと共通にできる オフロードしたくなったら Cloud Tasks を第一に考える ステートレス思想なCloud Runがここまで戦えるのは Cloud Tasks のおかげ
Geminiをアプリに組み込みたい 特別なことをせずともRails(Cloud Run)から Vertex AI API で呼び出せる Zenn ではAIレビュー機能、スパムチェック機能で利用中 Cloud
Run の サービスアカウントに “Vertex AIユーザー” がついていればOK
AIレビュー機能 書いた記事をAI(実体は gemini-2.5-flash)にレビューしてもらえる @gemini = VertexAiApi::Gemini.new( model: "gemini-2.5-flash", response_schema: response_schema,
) @gemini.call(“”” ## はじめに あなたはIT技術系ブログプラットフォーム ZennのAIレビュー担当者です。 以下の記事について、品質向上のためのレ ビューを行ってください。 “””) ai_reviewer.rb ユーザー API Cloud Run
スパムチェック機能 明らかな誘導記事などを自動で凍結(強制非公開)措置をとる機能 データベース タスク API Cloud Run Cloud SQL @gemini
= VertexAiApi::Gemini.new( model: "gemini-2.5-flash", response_schema: response_schema, ) @gemini.call(“”” あなたはIT技術系ブログプラットフォームの Zennのスパム検知ロボットです。 次のコンテンツがスパム投稿である確率を判定 してください。 “””) spam_checker.rb
運用してどうか? 他の Google Cloud サービスと同じ手順でGeminiが利用できる点がよい 少ないステップでアプリに生成AIを組み込める リーズナブルに利用できる • 2025年8月 ◦
AIレビュー機能: 611回利用された ◦ スパムチェック: 5550投稿された記事に対して適度に間引いて実行した ◦ __________円
運用してどうか? 他の Google Cloud サービスと同じ手順でGeminiが利用できる点がよい 少ないステップでアプリに生成AIを組み込める リーズナブルに利用できる • 2025年8月 ◦
AIレビュー機能: 611回利用された ◦ スパムチェック: 5550投稿された記事に対して適度に間引いて実行した ◦ 8,846円
Cloud Run だけでアプリ作れるって本当? • 本当です。Zennが作れます • Cloud Run ジョブ や
Cloud Tasks など、手数少なく統合できる • 事業のフェーズやユースケースに合わせて強化できる • Zennにとってはなくてはならない相棒です 年月 プルリクエスト合計 2025年4月 175 2025年5月 198 2025年6月 191 年月 プルリクエスト合計 2021年4月 56 2021年5月 47 2021年6月 25
Zenn と Cloud Run のこれから • SLAやSLOの設定 • 取り扱う個人情報が増えた場合 •
連携するサービスが増えた場合 • コンテンツのパーソナライゼーションとロジック
None