Slide 1

Slide 1 text

2024/09/12 日本経済新聞社 SRE チーム 山崎 一樹 Cloud Run と GitHub Template Repository による 軽量なアプリケーションプラットフォーム NIKKEI TECH TALK #24

Slide 2

Slide 2 text

#nikkei_tech_talk 山崎一樹 About me 2 日経 SRE チーム プラットフォームの開発・運用業務を行いながら SRE プラクティスを推進

Slide 3

Slide 3 text

#nikkei_tech_talk 本日話すこと 3 ● 日経の SRE チームが提供するプラットフォーム ● 社内のアプリケーション基盤のニーズ ● Cloud Run プロジェクトテンプレートの紹介 ○ プラットフォームの構成 ○ 仕組みと機能 ● プラットフォームの効果

Slide 4

Slide 4 text

日経のプラットフォーム 4

Slide 5

Slide 5 text

#nikkei_tech_talk 日経の SRE チームが提供するプラットフォーム ● アプリケーション基盤 ● 負荷試験基盤 ○ 一年前の NIKKEI Tech Talk #11 で話ました! ● 監視・オブザーバビリティ基盤 ○ ログ、メトリクス ● インシデント管理ツール ● etc. 5 SRE チームが多くのプラットフォームを開発・運用しています

Slide 6

Slide 6 text

#nikkei_tech_talk アプリケーション基盤 ● Vessel ○ 以前からあるプロダクションレベルの高信頼なプラットフォーム ○ GKE (Kubernetes) ベース ○ 学習コスト高め ● Cloud Run プロジェクトテンプレート ○ 新しく作った社内デモや PoC 用途のプラットフォーム ○ Google Cloud Run ベース ○ シンプルで利用が簡単 6

Slide 7

Slide 7 text

#nikkei_tech_talk 今回の話 アプリケーション基盤 ● Vessel ○ 以前からあるプロダクションレベルの高信頼なプラットフォーム ○ GKE (Kubernetes) ベース ○ 学習コスト高め ● Cloud Run プロジェクトテンプレート ○ 新しく作った社内デモや PoC 用途のプラットフォーム ○ Google Cloud Run ベース ○ シンプルで利用が簡単 7

Slide 8

Slide 8 text

アプリケーション基盤の要望 8

Slide 9

Slide 9 text

#nikkei_tech_talk 社内の声 9 デモや PoC でサクっと使える基盤が欲しい 認証の仕組みがあるといいな〜 Cloud Run 使いたいけど Google Cloud のプロジェクトを持っていないんだよね エンジニア部署ではないのでインフラに詳しい人が少ない

Slide 10

Slide 10 text

#nikkei_tech_talk 既存の基盤ではダメ? ● プロダクションレベルの高信頼なプラットフォーム ○ マルチクラスタ、有事における事業継続計画 (BCP) ● GKE (Kubernetes) ベースで学習コストが比較的高い ● 利用するためには基盤チームによる初期セットアップが必要 ○ 作業に最短でも数日要する 10 以前から Vessel というアプリケーション基盤があった

Slide 11

Slide 11 text

#nikkei_tech_talk 既存の基盤ではダメ? ● プロダクションレベルの高信頼なプラットフォーム ○ マルチクラスタ、有事における事業継続計画 (BCP) ● GKE (Kubernetes) ベースで学習コストが比較的高い ● 利用するためには基盤チームによる初期セットアップが必要 ○ 作業に最短でも数日要する 11 以前から Vessel というアプリケーション基盤があった 社内向けのちょっとしたアプリケーションを デプロイしたい場合には不向き

Slide 12

Slide 12 text

#nikkei_tech_talk 要件の整理 背景 ● 単発・一時的な用途で使えるアプリケーション基盤がない ● 一時的な用途のために環境構築に労力をかけたくない 要件 ● 簡単な仕組みで利用の敷居が低い 12 デモや PoC でサクっと使える基盤が欲しい

Slide 13

Slide 13 text

#nikkei_tech_talk 要件の整理 背景 ● 社内向けのツールやサイトなので基本は認証・制限が必要 要件 ● 基盤として認証の仕組みを提供する ● 社内の既存の認証の仕組みを利用することで認知負荷も抑える 13 認証の仕組みがあるといいな〜

Slide 14

Slide 14 text

#nikkei_tech_talk 要件の整理 背景 ● 誰もが Cloud Run を動かすためのプロジェクトを持っているわけではない ● Google Cloud プロジェクトの作成は社内申請が必要で、ちょっとした用途には 敷居が高く、リードタイムも発生する 要件 ● 開発者が Google Cloud プロジェクトを用意する必要がない 14 Cloud Run 使いたいけど Google Cloud のプロジェクトを持っていないんだよね

Slide 15

Slide 15 text

#nikkei_tech_talk 要件の整理 背景 ● 記者や編集業務の方がアプリケーションをデプロイしたいケースが増えている ○ 日経ではビジュアルコンテンツなど、新しい報道表現などを日々追求している ● すばやく試作し、社内デモを共有するための仕組みが欲しい 要件 ● 可能な限りシンプルに ● 利用のために十分なドキュメントを 15 エンジニア部署ではないのでインフラに詳しい人が少ない

Slide 16

Slide 16 text

Cloud Run プロジェクトテンプレート 16

Slide 17

Slide 17 text

#nikkei_tech_talk Cloud Run プロジェクトテンプレート 17

Slide 18

Slide 18 text

#nikkei_tech_talk 構成要素 18 GitHub ● テンプレートレポジトリ ○ Dockerfile ○ Cloud Run 設定 ○ Actions Workflow Google Cloud ● Cloud Run

Slide 19

Slide 19 text

#nikkei_tech_talk 使い方 1. テンプレートレポジトリから アプリケーションレポジトリを作成 2. Dockerfile をカスタマイズ 3. コミットを GitHub へ Push、 ワークフローが走りデプロイ 19

Slide 20

Slide 20 text

#nikkei_tech_talk 使い方 1. テンプレートレポジトリから アプリケーションレポジトリを作成 2. Dockerfile をカスタマイズ 3. コミットを GitHub へ Push、 ワークフローが走りデプロイ 20

Slide 21

Slide 21 text

#nikkei_tech_talk 使い方 1. テンプレートレポジトリから アプリケーションレポジトリを作成 2. Dockerfile をカスタマイズ 3. コミットを GitHub へ Push、 ワークフローが走りデプロイ 21

Slide 22

Slide 22 text

#nikkei_tech_talk 使い方 1. テンプレートレポジトリから アプリケーションレポジトリを作成 2. Dockerfile をカスタマイズ 3. コミットを GitHub へ Push、 ワークフローが走りデプロイ 22

Slide 23

Slide 23 text

#nikkei_tech_talk GitHubテンプレートレポジトリ SRE チームのサポートがなくとも誰でも 簡単に利用できる 23 ● コンテナイメージをビルドするための Dockerfile ● CloudRun の設定 YAML ● GitHub Actions の CI/CD ● 使い方を十分に示した README シンプルな構成で 可能な限り認知負荷を下げる

Slide 24

Slide 24 text

#nikkei_tech_talk GitHub Actions Workflow デプロイ用ワークフローをテンプレートレポジトリに 内包しており、基本はデフォルト設定でOK。 コミットを Push すればデプロイされる。 必要に応じてテストや Lint のようなステップを挿入するなどカ スタマイズ可能 設定不要でデプロイ 24 Checkout [actions/checkout] Build [Nikkei/cloudrun-template/build-action] Deploy [Nikkei/cloudrun-template/deploy-action]

Slide 25

Slide 25 text

#nikkei_tech_talk GitHub Actions Workflow ● 「Build」と 「Deploy」アクションは、別のアクショ ン用レポジトリで管理している ● アクションレポジトリにて実装を行い、各アプリ ケーションからは参照するだけ 基盤の CI/CD の実装をアプリケーションから分 離し、独立して変更を行える CI/CD のメンテナンス性を高める 25

Slide 26

Slide 26 text

#nikkei_tech_talk オブザーバビリティ アプリケーションのメトリクス・ログを表示する Grafana ダッシュボードを提供 ● Cloud Run のメトリクスやログは Google Cloud Monitoring に自動で取り込まれる ● 開発者には Google Cloud を意識させない設計方針のため Grafana で確認できるように 26

Slide 27

Slide 27 text

#nikkei_tech_talk ユーザー認証 社内認証サービスへリダイレクトする サイドカーコンテナをアプリケーションの前段に挿 入 Cloud Run のマルチコンテナ機能により実現 認証はデフォルトで有効。必要に応じて無効化で きる 社内認証を透過的に実現 27

Slide 28

Slide 28 text

#nikkei_tech_talk 軽量なプラットフォーム ● 基盤チームが管理するものが多いほど運用負荷が高まる ○ 依存サービス・ライブラリのアップデート、障害対応、etc. ● 基盤を運用する SRE チームは少人数 ○ できるだけ運用負荷は低く抑えたい Cloud Run プロジェクトテンプレートは、ほぼすべてをマネージドサービス・SaaS を利用して構築している ● 自分たちで管理が必要なインフラを持っていない ● 独自で実装しているのは、GitHub Actions ワークフローのみ 28 管理するものを減らして運用負荷を減らす

Slide 29

Slide 29 text

プラットフォームの効果 29

Slide 30

Slide 30 text

#nikkei_tech_talk 利用状況 ● 稼動アプリケーション数 ○ ローンチ後約 1 年で 73 アプリケーション ● 主要なアプリケーション ○ ビジュアルコンテンツ制作のプロトタイプやデモが多い ■ 当初のニーズを満たせている ○ 社内向けの便利ツールなども 30

Slide 31

Slide 31 text

#nikkei_tech_talk 利用者の声 ● ビジュアルコンテンツのプロトタイプのデ プロイが高速化された ● チーム・グループ内におけるモックの共有 が円滑に行えるようになった ● これまでモノリシックに開発していたが、コ ンテンツごとにプロトタイプを管理しやすく なった Cloud Run テンプレートで 高速にプロトタイピングを行い 実際に公開に至ったコンテンツの例 31 「地震列島」日本 地図とデータで見る https://vdata.nikkei.com/newsgraphics/japan-epicenter-map/

Slide 32

Slide 32 text

まとめ 32

Slide 33

Slide 33 text

#nikkei_tech_talk まとめ ● GitHub と Cloud Run を利用した軽量なアプリケーションプラットフォーム ○ ユーザのニーズに対応し、開発・ビジネスを加速 ○ できるだけ独自にインフラを抱えず、既存のサービスを活用 ○ 運用負荷の低く抑え、数人のチームで運用 ● 小規模なチーム・組織でも実践可能 ○ 「プラットフォーム」と聞くと大変と思いがち ○ 小さく軽量なプラットフォームでも十分に効果を発揮し、ビジネスに貢献できる 33

Slide 34

Slide 34 text

34 ありがとうございました!