Slide 1

Slide 1 text

BuriKaigi 2025 #burikaigi 2025/02/01 クラスメソッド株式会社 ⽥中孝明 Zenn のウラガワ ~エンジニアのアウトプットを⽀える環境で Google Cloud が採⽤されているワケ~

Slide 2

Slide 2 text

話す内容 2 ● Zenn について ○ 歴史的経緯 ● Zenn を⽀える技術 ○ Google Cloud 上で動いています ○ 統計ダッシュボード機能について ○ ⽣成AI Gemini を使ってスパム検出 ○ WAF を Cloudflare に変更 ● Zenn からのおしらせ ○ AI Agent Hackathonを開催中 ○ Publication 導⼊事例 ○ ユーザーグループが始動 ○ 直近の機能追加

Slide 3

Slide 3 text

Zenn について...の前に

Slide 4

Slide 4 text

その前に‧‧‧クラスメソッドってどんな会社‧‧‧? 4 子会社
 および
 関連会社
 
 
 
 認定
 
 
 
 
 
 
 売上高
 (単位:億円)
 プリズマティクス株式会社   ネクストモード株式会社 
 アノテーション株式会社   アンダースコア株式会社 
 プロパゲート株式会社   Classmethod (Europe) GmbH 
 Classmethod Canada Inc.   Classmethod Danang Co., Ltd.
 Classmethod (Thailand) Co., Ltd.  Classmethod Korea Co., Ltd. 
 
 オープンな発想と高い技術力によりすべての人々の創造活動に貢献し続ける
 名称
 
 
 代表者
 
 設 立
 
 本 社
 
 
 拠 点
 
 
 
 資本金
 
 従業員
 クラスメソッド株式会社 
 (英語表記:Classmethod, Inc.) 
 
 横田 聡
 
 2004年7月7日
 
 東京都港区西新橋1-1-1 
 日比谷フォートタワー26階 
 
 東京、札幌、仙台、上越、名古屋、大阪、福岡、 那覇、ベルリン、バンクーバー、ダナン、バンコ ク、ソウル
 
 1億円
 
 780名(2024年7月現在/グループ全体) 
 (年度)


Slide 5

Slide 5 text

その前に‧‧‧クラスメソッドってどんな会社‧‧‧? 5 SI Partner of the Year ‒ APJ 2023 売上⾼、案件創出数、新規資格保有者数、 AWS 技術認定等に⼤きく貢献したアジア太 平洋および⽇本地域(APJ)のパートナー 企業に贈られる賞 SI Partner of the Year - Global ファイナリスト2023 AWSの最上位プレミアティアサービスパートナー 8年連続 AWSパートナーネットワーク(APN)にお いて最上位である「AWS プレミアティア サービスパートナー」に2014年から継続し て認定されています。 公式資格取得数は2000以上 売上⾼、案件創出数、新規資格保有者数、 AWS 技術認定等に⼤きく貢献したグローバ ルパートナー企業に贈られる賞 AWSコンピテンシーパートナープログラム AWS移⾏コンピテンシー デジタルカスタマーエクスペリエンスコンピテ ンシー AWSデータと分析コンピテンシー DevOpsコンピテンシー IoTサービスコンピテンシー SaaSコンピテンシー SMBコンピテンシー パブリックセクターパートナー マネージドサービスプロバイダー AWSサービスの技術認定 14個 AWS IoT Core Amazon EC2 Systems Manager Amazon Kinesis AWS Lambda Amazon RDS AWS Database Migration Service Amazon CloudFront Amazon Redshift AWS WAF Amazon DynamoDB Amazon EC2 for Windows Server Amazon API Gateway AWS Control Tower Amazon Connect ⽉間300万PV、100万UUを誇る技術ブログDevelopersIO https://dev.classmethod.jp/ 憶測やセオリーだけでなく、実地検証に基づ く「やってみた」記事を公開。ユーザに有益 な情報であれば社内のノウハウも余すところ なく記事化。現在40,000本以上の記事を掲載

Slide 6

Slide 6 text

その前に‧‧‧クラスメソッドってどんな会社‧‧‧? 6

Slide 7

Slide 7 text

その前に‧‧‧クラスメソッドってどんな会社‧‧‧? 7 「Google Cloud Partner Top Engineer 2025」に、クラスメソッドのエンジニアが選出され、  ⾼い技術⼒を表彰されたことをお知らせします。 詳細はこちら 【Google Cloud Partner Top Engineer について】 パートナー企業に所属する⾼い技術⼒を持った エンジニアを表彰するプログラムとして、 2021年よりスタートしました。 Google Cloud Partner Top Engineer の 受賞カテゴリ、審査基準などの詳細については、 こちらをご参照ください。

Slide 8

Slide 8 text

その前に‧‧‧クラスメソッドってどんな会社‧‧‧? 8 Google が提供する「Google Cloud Innovators プログラム」にて、クラスメソッドから新規事業部 Zenn チームの 和⽥祐介 がサーバーレスアプリ開発の Champion Innovators に認定されました。 【Champion Innovators とは】 Champion Innovators は、500⼈以上のプロ フェッショナルからなるグローバルネットワー クです。Champion認定の条件は以下となって います。 - Google社員から指名されていること - Google Cloud製品での本番ワークロードの実 ⾏経験があること - 技術コミュニティや⼤規模組織内での知識共有 と貢献の実績があること - 特定の分野における Google Cloud の深い技術 的理解があること

Slide 9

Slide 9 text

今⽇登壇する⼈の⾃⼰紹介 9 田中 孝明 (Takaaki TANAKA) こーめい 
 ● 製造ビジネステクノロジー部 
 ○ チームマネージャー 
 ○ 福岡オフィス所属 
 ● 2024 Japan AWS ALL Certifications Engineer 
 ● Google Cloud Partner Top Engineer 2023 
 ● サウナ・スパ プロフェッショナル 
 credly DevelopersIO X (Twitter)

Slide 10

Slide 10 text

Zenn チームの⼈じゃないのかい!! 10

Slide 11

Slide 11 text

󰢛 11

Slide 12

Slide 12 text

ぶりしゃぶの感想は伝えておきます。 12

Slide 13

Slide 13 text

Zenn について

Slide 14

Slide 14 text

Zenn はエンジニアのための情報共有コミュニティです。 14 特色 ・マークダウン で書ける書きやすさ ・エンジニアの役に立つ、質のいい技術記事 が多い

Slide 15

Slide 15 text

Zenn の現在の規模 15 約 1300万PV (月間) 約 235万UU (月間) Publication 約 1000組織 登録ユーザー 約 13万人

Slide 16

Slide 16 text

Zenn の略歴 16 ● 2020年9⽉ catnose さんが個⼈プロジェクトとしてリリース ● 2021年2⽉ クラスメソッド株式会社が Zenn の買収を発表 ● 2021年6⽉ 運営会社がクラスメソッド株式会社に ● 2022年4⽉ 本格的に Zenn をチームで運⽤開始 ● 2022年8⽉ Publication をリリース ● 2024年1⽉ Publication Pro をリリース 6⼈の⼩さなチーム(※)で運営中 ※エンジニア3名、デザイナー1名、ビジネス1名、オペレーター1名

Slide 17

Slide 17 text

ちょうど4年前 17

Slide 18

Slide 18 text

Zenn Publication  組織で発信するための機能です 18 Publication (無料) 個々⼈が投稿した記事を組織(Publication)に紐づけられる機能。メンバー管理や権限設定が可能 約1000組織 利⽤中 ● スタートアップ ● エンタープライズ ● ⽂教 ● コミュニティ

Slide 19

Slide 19 text

Zenn を⽀える技術

Slide 20

Slide 20 text

Zenn の初期構成 20

Slide 21

Slide 21 text

Zenn は Google Cloud 上で稼働しています 21 ● Zenn について ○ 歴史的経緯 ○ Publication について ○ 導⼊事例 ○ コミュニティへの取り組みについて ● Zenn の技術 ○ 構成 ○ 統計ダッシュボード機能について ○ ⽣成AI Gemini を使ってスパム検出 ○ CDN を Cloudflare に変更

Slide 22

Slide 22 text

要件を達成するために必要なサービスたち(※⼀部抜粋) 22 WAF + CDN ロードバランサー アプリケーション サーバー データベース 分析基盤 Cloud Run

Slide 23

Slide 23 text

要件を達成するために必要なサービスたち(※⼀部抜粋) 23 WAF + CDN ロードバランサー アプリケーション サーバー データベース 分析基盤 Cloud Run Cloud SQL

Slide 24

Slide 24 text

要件を達成するために必要なサービスたち(※⼀部抜粋) 24 WAF + CDN ロードバランサー アプリケーション サーバー データベース 分析基盤 Cloud Load Balancing Cloud Run Cloud SQL

Slide 25

Slide 25 text

要件を達成するために必要なサービスたち(※⼀部抜粋) 25 WAF + CDN ロードバランサー アプリケーション サーバー データベース 分析基盤 Cloud Load Balancing Cloud Run Cloud SQL BigQuery

Slide 26

Slide 26 text

要件を達成するために必要なサービスたち(※⼀部抜粋) 26 WAF + CDN ロードバランサー アプリケーション サーバー データベース 分析基盤 Cloud Load Balancing Cloud Run Cloud SQL BigQuery Cloud Armor Cloud CDN

Slide 27

Slide 27 text

要件を達成するために必要なサービスたち(※⼀部抜粋) 27 WAF + CDN ロードバランサー アプリケーション サーバー データベース 分析基盤 Cloud Load Balancing Cloud Run Cloud SQL BigQuery

Slide 28

Slide 28 text

要件を達成するために必要なサービスたち(※⼀部抜粋) 28 WAF + CDN ロードバランサー アプリケーション サーバー データベース 分析基盤 Cloud Load Balancing Cloud Run Cloud SQL BigQuery

Slide 29

Slide 29 text

要件を達成するために必要なサービスたち(※⼀部抜粋) 29 WAF + CDN ロードバランサー アプリケーション サーバー データベース 分析基盤 Cloud Load Balancing Cloud Run Cloud SQL BigQuery AI⽀援 Vertex AI + Gemini

Slide 30

Slide 30 text

要件を達成するために必要なサービスたち(※⼀部抜粋) 30 WAF + CDN ロードバランサー アプリケーション サーバー データベース 分析基盤 Cloud Load Balancing Cloud Run Cloud SQL BigQuery AI⽀援 Vertex AI + Gemini

Slide 31

Slide 31 text

要件を達成するために必要なサービスたち(※⼀部抜粋) 31 WAF + CDN ロードバランサー アプリケーション サーバー データベース 分析基盤 Cloud Load Balancing Cloud Run Cloud SQL BigQuery AI⽀援 Vertex AI + Gemini

Slide 32

Slide 32 text

Cloud Run 32 ● スモールスタートに適した Cloud Run ○ 「アプリを早く市場投⼊する」 vs 「アプリをスケールする」はト レードオフになりがち ○ Cloud Run はコンテナイメージからデプロイでき、デフォルト設定 でも勝⼿にスケールしてくれる ○ 超絶優秀、とりあえず最初にこれ使っておこうとなる ● サービス開発に必要な機能がある程度そろってる ○ ロードバランサーを内包 ■ バージョントラフィック / スケールアウト ○ 豊富な起動オプション ■ Startup CPU boost / CPU の割り当て / 最⼩起動数

Slide 33

Slide 33 text

Cloud Run 33 ● サーバーレスで管理コスト軽減 ○ 設定した値に応じて⾃動スケーリング ○ 従量課⾦、実際に使⽤したリソース(CPU、メモリ、ネットワーク)に対 して課⾦が発⽣ ● 処理の性質に応じたタイプの選択肢 ○ 第⼀世代 ○ 第⼆世代 ■ サービス ● HTTP リクエストベース ■ ジョブ ● バッチ処理‧並列処理 ● 各種 Google Cloud のサービスとの統合 ○ Cloud Logging / Cloud Monitoring / Eventac / Cloud Storage

Slide 34

Slide 34 text

Cloud Run 34 ● 開発者が気をつけること ○ アプリをステートレスに保つ ○ データベースのコネクションプール枯渇 ○ 外部サービスのレート ○ 運⽤コスト、料⾦計算ツールで⾒積もっておく コスト試算の例(※Zenn とは関係ありません)

Slide 35

Slide 35 text

その強⼒さ、体験できます。 35

Slide 36

Slide 36 text

事例集 36

Slide 37

Slide 37 text

要件を達成するために必要なサービスたち(※⼀部抜粋) 37 WAF + CDN ロードバランサー アプリケーション サーバー データベース 分析基盤 Cloud Load Balancing Cloud Run Cloud SQL BigQuery AI⽀援 Vertex AI + Gemini

Slide 38

Slide 38 text

統計ダッシュボード 38 ● BigQuery / BI Engine について書く ○ いいぞ ○ いいぞ ○ いいぞ

Slide 39

Slide 39 text

BigQuery 39 ● Google Cloud が誇るフルマネージドデータレイク ○ サーバーレスで管理コストを削減 ○ クエリの実⾏量とストレージ使⽤料に応じて課⾦が発⽣ ● 統計ダッシュボード以外でも活躍 ○ アクセスログ -> BIgQuery -> Looker Studio ■ レイテンシ集計レポートを作成して潜在的なパフォーマンス問題がないか確認 ○ Google Analytics 4 -> BIgQuery -> Looker Studio ■ PV などのレポート

Slide 40

Slide 40 text

BigQuery の課題 40 ● BigQuery 以外の選択肢はあったか ○ 統計ダッシュボードの実現にもいくつか候補はあった ※先述のブログに記載 ■ Cloud SQL に集計データを持たせて完結させる⽅法も検討したが、page_view を はじめとしたイベントデータの容量とレコード数、またその後のスケールを鑑み ⾒送り ● ログインユーザーの認証‧認可 ○ 他のユーザーのデータを⾒れないようにする ● Google Analytics 4 のイベントデータと Cloud SQL のデータをどうにか して JOIN する必要がある ● 不特定多数のユーザーに呼ばれるため、クエリ課⾦を回避したい

Slide 41

Slide 41 text

BigQuery BI Engine による⾼速化とコスト効率 41 ● 頻繁に使⽤するテータをインテリジェントにキャッ シュに保存することで、BigQuery の多くの SQL クエ リを加速する⾼速なメモリ内分析サービス ● BI Engine に保存されたデータから結果を取得するク エリを実⾏する場合、データの読み取りについては課 ⾦されない ○ キャッシュ容量をあらかじめ購⼊し、キャッシュに⼊れた BigQuery テーブルを指定する ○ ユーザーの統計で利⽤するデータがすべてキャッシュ内に収まれ ば、統計ページを表⽰する時のオンデマンド料⾦がかからずに 済む

Slide 42

Slide 42 text

BigQuery BI Engine による⾼速化とコスト効率 42 ● スケジュールクエリで必要最低限のデータを⽤意する ○ 必要なのは⽇ごとのデータなので、あらかじめ集計に必要なデータを⼀段階まとめて おくことで BigQuery BI Engine のキャッシュ内に収めやすくする ■ 不要なデータを削ぎ落とす ■ ⽇ごとのデータを集計する

Slide 43

Slide 43 text

BigQuery BI Engine による⾼速化とコスト効率 43

Slide 44

Slide 44 text

BigQuery BI Engine による⾼速化とコスト効率 44

Slide 45

Slide 45 text

BigQuery BI Engine による⾼速化とコスト効率 45 BI Engine モードが FULL、課⾦されるバイト数が 0 B となっており、ク エリ課⾦が発⽣していない。

Slide 46

Slide 46 text

統計ダッシュボードの実装⽅法 46

Slide 47

Slide 47 text

要件を達成するために必要なサービスたち(※⼀部抜粋) 47 WAF + CDN ロードバランサー アプリケーション サーバー データベース 分析基盤 Cloud Load Balancing Cloud Run Cloud SQL BigQuery AI⽀援 Vertex AI + Gemini

Slide 48

Slide 48 text

⽣成 AI の活⽤ 48 Google Cloud 主催の Generative AI Summit Tokyo '24 Fall で登壇された Zenn チームの 吉川さん

Slide 49

Slide 49 text

統計ダッシュボードの実装⽅法 49

Slide 50

Slide 50 text

⽣成 AI を 運⽤業務に適⽤した実例 50 ● スパム投稿が急増 ○ 2024年 6 ⽉ごろ〜 ○ 特定 URL への誘導などのスパムコ ンテンツが⼤量に投稿される ○ 読者体験の急激な悪化を懸念し、 早急な対処が必要に

Slide 51

Slide 51 text

⽣成 AI を 運⽤業務に適⽤した実例 51

Slide 52

Slide 52 text

要件を達成するために必要なサービスたち(※⼀部抜粋) 52 WAF + CDN ロードバランサー アプリケーション サーバー データベース 分析基盤 Cloud Load Balancing Cloud Run Cloud SQL BigQuery AI⽀援 Vertex AI + Gemini

Slide 53

Slide 53 text

WAF を Cloudflare に変更 53

Slide 54

Slide 54 text

Zenn は 少⼈数運⽤ということもあり Google Cloud に寄せてた 54

Slide 55

Slide 55 text

Zenn は 少⼈数運⽤ということもあり Google Cloud に寄せてた 55

Slide 56

Slide 56 text

当時の課題感 56 ● 不定期で DDoS らしき⼤量のアクセスを受けてた ● Cloud Armor の適⽤型保護での検知とブロックを期待してた ● DDoS に対して、IP アドレスごとに集計して⼿動でブロックしており、 深夜‧休⽇対応に課題が残っていた ● ユーザーからみたときのレイテンシ悪化が続いてしまう ● クラウド利⽤費にも影響

Slide 57

Slide 57 text

当時の課題感 57

Slide 58

Slide 58 text

DDoS 対策強化⽬的で WAF を Cloudflare へ 58

Slide 59

Slide 59 text

Cloudflare 導⼊のポイント 59 ● ゼロデイ攻撃への耐性、OWASP セキュリティリスクへの対処 ○ 管理ルールセット ○ OWASP コアルールセット ● レート制限ルールを追加 ○ カスタムレートリミットを追加 ○ 機械的な判定のため、ブロックが早いメリット有 ● Google Cloud 側は IP フィルタのみに ○ Cloudflare の IP レンジを受け⼊れるように ○ Load Balancing へのアクセスは Cloudflare を通るように ○ Cloudflare を外す時も元の構成に戻せるように ● SSL 証明書は DNS 認証にする ○ DNS 認証を使⽤した Google マネージド証明書に切り替える事でセキュアな通信を維持できるように

Slide 60

Slide 60 text

Cloudflare 導⼊後に DDoS 攻撃を受けた 60

Slide 61

Slide 61 text

Zenn のサイトは⼀時的に重くなったものの、2〜3分で復旧 61

Slide 62

Slide 62 text

副次的効果: CDN 料⾦が安くなった 62

Slide 63

Slide 63 text

最後にもう⼀度構成図をお⾒せしましょう 63

Slide 64

Slide 64 text

典型的な構成をモダンなプラットフォームで 64 ● シンプルな構成ながら、稼働実績あり ○ 1300 万 PV 以上 / ⽉ だが性能不⾜は無し ● ビジネスとともに成⻑する予定が少しでもあるならば、間違いない構成 の⼀つ モダンである事の基準: ビジネスに応じてアプリをスケールさせる時に作業の⼿間が⼩さいこと

Slide 65

Slide 65 text

Zenn のウラガワ まとめ 65 ● 当初から Google Cloud で運⽤されていたが、限られたリソースで事業 を成⻑させるための選択として最適 ● アプリケーション開発における「これがほしい」「ここが⾯倒だから楽 にしたい」が備わってる ● ユーザーの意⾒に⽿を傾けるために徹底的に⾃動化‧省⼒化 ⾯倒なことは Google Cloud で

Slide 66

Slide 66 text

Appendix 話しきれなかったけどご紹介したい記事 66

Slide 67

Slide 67 text

Zenn からのおしらせ

Slide 68

Slide 68 text

AI Agent Hackathonを開催中です! 既に400⼈を超える⽅から参加申し込み 提出物はコードリポジトリのURLと、Zenn の記事! ※2⽉上旬はハッカソン関連の記事が多くみ られると思います。 締め切りは2⽉10⽇!(登録は7⽇) まだ間に合います!参加‧応援のほど!

Slide 69

Slide 69 text

祝!ご利用 1000組織突破! Publication / Publication Proをよろしくお願いします レバテック開発部 技術広報チーム⽴ち上げに伴いProを利⽤開始 投稿数は年2本→⽉10〜15本、採⽤⼈数も倍増 SODA 技術広報のためPublication Proを利⽤ テックブログ⾃体がなかった状況から ”書く”⽂化が浸透中

Slide 70

Slide 70 text

ユーザーグループ ”Zenncafe”をよろしくお願いします ⽬的 著者へ感謝‧称賛の機会を増やした い Zennのあり⽅について直接お声を頂 く機会を作りたい 今後 軌道に乗ったら全国津々浦々でのイベン トや、オンラインのイベントも開催しま す。ご期待下さい!

Slide 71

Slide 71 text

機能追加、続々! 記事のブックマーク、メールアドレスログ インなどかねてからご要望のあった機能を 追加しました! Publication Proはオーナーからの聞き取り を基に機能を追加中。 直近はPublicationとGithubの連携機能を リリースしました。

Slide 72

Slide 72 text

最後に 今後ともZennをよろしくお願いいたします!

Slide 73

Slide 73 text

No content