【DeNATechCon2024】IRIAM の SRE が追求する 「あたりまえ品質 」と「密な連携」

886 Views

February 29, 24

スライド概要

高速リアルタイム通信を提供する IRIAM では、サービスの成長に伴い、開発組織が急拡大し、開発するコンポーネントの数も増えています。

それらのアジリティの高い開発とサービスの安定性を両立を実現しているのが、"あたりまえ品質" を追求したインフラ構成と、SREと開発メンバーとの密な連携です。

本登壇では、まず、"当たり前品質"を追求するための具体的なインフラ構成とその管理方法を紹介します。そして、IRIAMがどのようにSREと開発メンバーとが協力し、日々の開発・運用を行っているのかについて、具体的な経験談を交えて紹介します。

profile-image

DeNA が社会の技術向上に貢献するため、業務で得た知見を積極的に外部に発信する、DeNA 公式のアカウントです。DeNA エンジニアの登壇資料をお届けします。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

IRIAM の SRE が追求する 「あたりまえ品質 」と「密な連携」 井早 匠平 / 林 ⼤丘 / 細⾕ 泰平 株式会社IRIAM © DeNA Co., Ltd.

2.

⾃⼰紹介 井早 匠平 2020年 ディー‧エヌ‧エー新卒⼊社 IT基盤部配属後、2022年に IRIAM に異動しSRE を担当。 Shohei Ihaya 林 ⼤丘 2022年 IRIAM 中途⼊社 SRE としてインフラ基盤の構築‧運⽤を担当。 Taiki Hayashi 細⾕ 泰平 Taihei Hosoya © DeNA Co., Ltd. 2022年 ディー‧エヌ‧エー新卒⼊社 IRIAM 最初の新卒エンジニアとして配属された。 サーバー‧Webの開発を担当。 2

3.

アジェンダ 1. SRE チームの苦悩と SRE Values 2. “あたりまえ”品質のインフラ 3. SREと開発メンバーの密な連携 © DeNA Co., Ltd. 3

4.

IRIAMについて What is IRIAM? スマホひとつで、いつでも‧どこでも 「キャラのライブ配信」を楽しめるアプリです。 © DeNA Co., Ltd. 4

5.

モーションライブ⽅式 © DeNA Co., Ltd. 5

6.

IRIAM 会社紹介資料, DeNA 2024年3⽉期第3四半期 決算説明会資料 より © DeNA Co., Ltd. 6

7.

SRE の数も3⼈に © DeNA Co., Ltd. 7

8.

ある程度平和な運⽤ 超緊急で やらないといけないこと © DeNA Co., Ltd. < やった⽅が 良さそうなこと 8

9.

ある程度平和な運⽤...しかし... CI/CD の さらなる改善 やれるとうれしい モダン化 パフォーマンス チューニング トイルの削減 通常のインフラ構築 やった⽅が 良さそうなこと © DeNA Co., Ltd. エラーバジェット の策定‧運⽤ SLO の策定‧運⽤ インフラ管理コード のリファクタ 9

10.

SRE としてやるべきことがわからん CI/CD の さらなる改善 パフォーマンス チューニング やれるとうれしい モダン化 トイルの削減 通常のインフラ構築 SLO の策定‧運⽤ エラーバジェット の策定‧運⽤ インフラ管理コード のリファクタ © DeNA Co., Ltd. 10

11.

⼀般的な “SREっぽいこと” SLO の策定‧運⽤ エラーバジェット の策定‧運⽤ © DeNA Co., Ltd. トイルの削減 11

12.

⼀般的な “SREっぽいこと” SLO の策定‧運⽤ ” 今 当に” 本 、 たり このあ るべき...? や エラーバジェット の策定‧運⽤ © DeNA Co., Ltd. トイルの削減 12

13.

SRE が事業貢献するためには? ??? 事業貢献度が 最⼤化された 具体的な打ち⼿ © DeNA Co., Ltd. 13

14.

SRE が事業貢献するためには? 適度に抽象的な ⾏動原則 事業貢献度が 最⼤化された 具体的な打ち⼿ 現在の組織状況 © DeNA Co., Ltd. 14

15.

適度に抽象的な ⾏動原則 事業貢献度が 最⼤化された 具体的な打ち⼿ 現在の組織状況 © DeNA Co., Ltd. 15

16.

SRE メンバーが 1⼈ → 3⼈ に増えるにあたり、 個々⼈が暗黙的に思い浮かべていた 「理想のSRE 像」のよ うなものを、 適度に抽象的な ⾏動原則 しっかり⾔語化した上で、共通認識として持ちたかった → SRE メンバーで、「SRE として重要視するべき項⽬」に ついてディスカッション © DeNA Co., Ltd. 16

17.

SRE Values 信頼性の向上 UX の最⼤化 可観測性の 確保‧維持 DevOps 体験 の向上 スケーラビリティ の維持 コスト コントロール 致命傷を 避ける © DeNA Co., Ltd. 17

18.

適度に抽象的な ⾏動原則 事業貢献度が 最⼤化された 具体的な打ち⼿ 現在の組織状況 © DeNA Co., Ltd. 18

19.

現在の組織状況 ● 組織的にはまだギリギリ密なコミュニケーションが とれる規模 ● 品質担保とSRE⼯数確保のバランスを考えた時に、 まだインフラ構築を開発チームにお願いする フェーズではない ● エラーバジェットのような共通認識のための数字を 介さなくても話を進められる ○ Biz/Dev メンバーが信頼性に対して理解がある ○ 経営層がエンジニアに対して信頼を置いて コミュニケーションがとれる状況 © DeNA Co., Ltd. 19

20.

適度に抽象的な ⾏動原則 事業貢献度が 最⼤化された 具体的な打ち⼿ 現在の組織状況 © DeNA Co., Ltd. 20

21.

SRE チームが直近やっていくこと © DeNA Co., Ltd. 1. 2. “あたりまえ品質” のインフラを提供 開発チームとの 密な連携 21

22.

SRE チームが直近やっていくこと © DeNA Co., Ltd. 1. 2. “あたりまえ品質” のインフラを提供 開発チームとの 密な連携 22

23.

“あたりまえ品質” とは? SRE Values を満たす、SRE にとってあたりまえに提供していきたい品質 © DeNA Co., Ltd. 23

24.

SRE Values を満たす、SRE にとってあたりまえに提供していきたい品質 信頼性の向上 UX の最⼤化 可観測性の 確保‧維持 スケーラビリティ の維持 コスト コントロール 致命傷を避ける DevOps 体験の向上 © DeNA Co., Ltd. 低遅延な配信を提供したい 配信基盤構築 ログ、メトリクスをブラウザでみたい マルチクラウドで統⼀的な⽅法を使いたい 配信の膨⼤なメトリクスの取得をしたい ログ基盤 テレメトリ基盤 エラーレポート基盤 オートスケールしたい ボトルネックを事前に潰したい 負荷試験ツール作成 突発コストに気づきたい/無くしたい ランニングコストを減らしたい インフラコスト削減 権限管理を正しく⾏いたい 監査ログを取得したい コンポーネントごとの必要最低限の権限付与 開発環境を楽に⽴ち上げたい GitOps による⾃動デプロイをしたい なるべく ssh したくない 各種ライブラリ/ツールの整備 脆弱性対応 CI/CD パイプライン整備 tf、k8s 等を⽤いた IaC / CaD の運⽤ 24

25.

“あたりまえ品質のインフラを提供”のために マネージドに寄せたテンプレート化された構成 ⾼難度のビジネス要求に応える独⾃の構成 © DeNA Co., Ltd. 25

26.

マネージドに寄せたテンプレート化された構成 スケーラビリティ の維持 致命傷を避ける DevOps 体験 の向上 © DeNA Co., Ltd. 可観測性 の確保‧維持 26

27.

マネージドに寄せたテンプレート化された構成 © DeNA Co., Ltd. 27

28.

マネージドに寄せたテンプレート化された構成 全体のコンポーネントの 8割弱で テンプレートを使⽤ © DeNA Co., Ltd. 28

29.

マネージドに寄せたテンプレート化された構成 ● Cloud Run や Service Account による権限管理など、仕組みを最⼤限利⽤する ● CI / CD は、GitHub Actions の Composite Action を使⽤し共通化を⾏う ● インフラ構築⾃体も Terraform を利⽤し、再利⽤性の⾼いようにする あたりまえ品質を、楽かつ⾼速に提供できるようにしている © DeNA Co., Ltd. 29

30.

⾼難度のビジネス要求に応える独⾃の構成 配信システムは、IRIAM のユーザー体験のコア部分であるため、 より⾼度な要求を実現できるカスタマイズ性の⾼い状態にしておきたい 例えば、 ● 超低遅延な配信 ● 独⾃のロジックによる配信サーバの割り当て ● 詳細かつ膨⼤なメトリクスの取得 ● コストパフォーマンスの⾼い配信サーバの供給 UXの最⼤化 可観測性の 確保‧維持 コスト パフォーマンス © DeNA Co., Ltd. 30

31.

⾼難度のビジネス要求に応える独⾃の構成 © DeNA Co., Ltd. 31

32.

⾼難度のビジネス要求に応える独⾃の構成 ● 内製の配信サーバに最適化したインスタンス作成 ● 配信数や⼈気配信者に応じた独⾃ロジックの配信サーバ割り当て ● 詳細かつ膨⼤なメトリクスの取得のためのメトリクス基盤 難しい要求には関⼼とリソースを集中して、あたりまえ品質を提供 © DeNA Co., Ltd. 32

33.

あたりまえ品質のインフラを提供を マネージドに寄せたテンプレート化された構成 ⾼難度のビジネス要求に応える独⾃の構成 を使い分けることで、効率よく⾏っています! © DeNA Co., Ltd. 33

34.

SRE チームが直近やっていくこと © DeNA Co., Ltd. 1. 2. “あたりまえ品質” のインフラを提供 開発チームとの 密な連携 34

35.

密な連携を取るために SRE ↔ 機能開発エンジニアで、タッチポイントを増やしている © DeNA Co., Ltd. 1. プロジェクトチームにメンバーとしてjoinする 2. Slack や各定例を横断的に眺めて反応する 35

36.

プロジェクトチームにメンバーとしてjoinする 新規サービスや、複雑な技術要件のあるコンポーネントには SRE が開発メンバーとして⼊る ● 開発がはじまる前(MVP‧ユーザーストーリーが⼤枠固まってきた段階)から 実現可能性‧構成の相談 ● ⽇々の会議体に参加して、仕様策定や体験設計まで関わる ● 各プロジェクトのドメイン知識を最初の段階から理解しておく © DeNA Co., Ltd. 36

37.

プロジェクトチームにメンバーとしてjoinする 新規サービスや、複雑な技術要件のあるコンポーネントには SRE が開発メンバーとして⼊る ● 開発がはじまる前(MVP‧ユーザーストーリーが⼤枠固まってきた段階)から 実現可能性‧構成の相談 ● ⽇々の会議体に参加して、仕様策定や体験設計まで関わる ● 各プロジェクトのドメイン知識を最初の段階から理解しておく → つまり、「そのプロジェクトはどんな課題を解決したいのか?」をSREと共有している © DeNA Co., Ltd. 37

38.

実例: 開発プロジェクトへの参画 配信上(Unity上)でのアセットの⾒え⽅を Web上で簡単にプレビューしたい ● 配信で使われるギフトやモデルのデータをアップ → 配信上での動作を動画として確認できる機構を つくりたい ● Unity上での描画を動画として書き出す仕組みが 既にあった → これをサーバー上で動かして⾃動化したい © DeNA Co., Ltd. ? 38

39.

実例: 開発プロジェクトへの参画 アセットデータを Upload Unity上で描画 動画として 書き出す 完了を通知し プレビュー Unityの実⾏環境は、将来的な本番運⽤を⾒据えて スケーラブルな形にしたいんですが… 運⽤しやすさ観点だと CloudRun かしら... Unity on Container の実績ないのですが、挑戦してみます! © DeNA Co., Ltd. 39

40.

実例: 開発プロジェクトへの参画 アセットデータを Upload Unity上で描画 動画として 書き出す 完了を通知し プレビュー 指定したアセットをGCSから取ってきて、それを Unity + Xvfb で描画するサーバーを⽴てましょう ※Xvfb: 仮想ディスプレイフレームバッファ。 動画の⽣成は5分〜かかるので、 pub/subでキューイングですかね © DeNA Co., Ltd. 40

41.

実例: 開発プロジェクトへの参画 アセットデータを Upload Unity上で描画 動画として 書き出す 完了を通知し プレビュー Pub/Sub Cloud Run ⽣成終わったのを通知したいんですが、動画⽣成サーバーから APIサーバーのWebhook叩くのってどうですかね? 良いと思います!サーバー間の認証は SA の ID Tokenが使えます © DeNA Co., Ltd. 41

42.

実例: 開発プロジェクトへの参画 アセットデータを Upload Unity上で描画 Pub/Sub 動画として 書き出す 完了を通知し プレビュー Webhook Cloud Run ● プロジェクトの仕様策定や体験設計段階から深く関わり、構成の検討 + 素早い提供を⾏う ● 運⽤まで⾒据えたやりとりを⽇常的に⾏っている © DeNA Co., Ltd. 42

43.

密な連携を取るために SRE ↔ 機能開発エンジニアで、タッチポイントを増やしている © DeNA Co., Ltd. 1. プロジェクトチームにメンバーとしてjoinする 2. Slack や各定例を横断的に眺めて反応する 43

44.

Slack や各定例を横断的に眺めて反応する ● ● © DeNA Co., Ltd. Slack を横断的に眺めて反応する ○ 能動的に課題を拾っていく意識(メンションしなくても巡回している) ○ 「これはこうすると良い」「やめたほうがいい」を運⽤観点から助⾔ ─ SRE Values の体現 いろいろな定例に顔を出して聞いておく ○ 各プロジェクトでぶつかっている障壁を⾒抜く ○ 場にいるだけでも、「ラフに相談してみよう」という雰囲気を醸成できる 44

45.

SREの役割 → 本番運⽤まで⾒据えて、ボトルネックになりそうな部分を取り除く ● いわば、開発‧運⽤をする上で踏みそうな地雷を除去しておく ○ ● © DeNA Co., Ltd. 地雷 ... セキュリティリスク、コスト、スループット、開発容易性 ボトルネックを⾒つけるためには、互いの取り組みへの理解と信⽤が不可⽋ 45

46.

まとめ 事業貢献度が最⼤化された 具体的な打ち⼿ SRE Values ● あたりまえ品質のインフラ提供 ● 開発組織との密な連携 現在の組織状況 © DeNA Co., Ltd. 46