Slide 1

Slide 1 text

データ基盤で Four Keysを可視化した話 近藤宇智朗 / GMO PEPABO inc. 2022.02.07 datatech-jp Casual Talks #1 1

Slide 2

Slide 2 text

2 自己紹介 技術部 データ基盤チーム/技術基盤チーム シニアプリンシパル 2013年 入社 近藤宇智朗 Uchio Kondo (@udzura) 駆け出しデータ基盤エンジニア、シニアシレンジャー。 ● PythonよりRubyが得意... 最近はRustが好き ● GCP, BigQuery, Cloud Run ● 好きなYouTubeチャンネルはやんちゃクラブ ● 福岡三大うどんは資さんうどん過激派です 福岡在住

Slide 3

Slide 3 text

3 自己紹介 最近必死にやっていること

Slide 4

Slide 4 text

4 アジェンダ 1. ペパボのデータ基盤チームの紹介 2. Four Keysについて 3. 開発活動データのETL 4. Dashboard as CodeとStreamlit 5. まとめ

Slide 5

Slide 5 text

5 1. セクションタイトル ペパボのデータ基盤チーム

Slide 6

Slide 6 text

6 ペパボのデータ基盤チーム データ基盤チームのミッション ペパボ内のあらゆるデータに意味をつけ、そのデータによって 意思決定の支援を行えるプラットフォームを構築し ペパボの全パートナーに提供する。

Slide 7

Slide 7 text

7 ペパボのデータ基盤チーム ざっくりしたアーキテクチャ(2022年最新版)

Slide 8

Slide 8 text

8 1. セクションタイトル Four Keys

Slide 9

Slide 9 text

9 Four Keys とは SRE - トイルのトラッキング (https://cloud.google.com/blog/ja/products/gcp/identifying-and-tracking-toil-using-sre-principles) > トイルに割かれる SRE 1 人あたりの時間を 50% 未満に抑え、 > 残りの 50% をエンジニアリング プロジェクトの作業用に確保する リーンとDevOpsの科学 開発チームの生産性を測るための様々な指標の解説 Four Keys (https://cloud.google.com/blog/ja/products/gcp/using-the-four-keys-to-measure-your-devops-performance) > DevOps Research and Assessment(DORA)チームが実施した 6 年間の > 研究から、ソフトウェア開発チームのパフォーマンスを示す 4 つの指標が > 確立されました。 生産性の計測

Slide 10

Slide 10 text

10 Four Keys とは Four Keysとは?

Slide 11

Slide 11 text

11 Four Keys とは 可視化してみた → どうやっていったか...? という話

Slide 12

Slide 12 text

12 1. セクションタイトル 開発活動データのETL

Slide 13

Slide 13 text

13 開発活動データのETL 生産性指標の収集・可視化システムの概要 https://tech.pepabo.com/2022/01/06/four-keys-dashboard/

Slide 14

Slide 14 text

14 開発活動データのETL GitHub (Enterprise Server) の活動データを軸にすることにした。 以下のようなデータが取得できます : ● Issue (P/R) の作成数、コメント、紐づいたイベント、クローズ時間 ● Commit の内容や回数 ● Release の作成数 ● GitHub Actions に関する情報(回数、成功失敗、経過時間) … 生産性指標のソースデータ

Slide 15

Slide 15 text

15 開発活動データのETL APIを経由したETL APIを叩いて CSVを作成する cli tool 前日分のみを ロード SQLでuniq

Slide 16

Slide 16 text

16 1. セクションタイトル Dashboard as Code

Slide 17

Slide 17 text

17 Dashboard as Code 皆さんもダッシュボードは作っているとは思いますが ... 問題1: ダッシュボードの内容を共有できない ● どういうSQLか、レイアウトは、などなど エクスポートしたりシェアするのが面倒なことが多い 問題2: ダッシュボードの変更履歴、構成などが管理できない ● うっかり壊した際の復元はどうすれば? 退職者が出たら? どのチームがどれくらいダッシュボードを作ってる? など一覧できない 「可視化」にまつわるダッシュボード問題

Slide 18

Slide 18 text

18 Dashboard as Code 問題の内容が、インフラの構成管理と似ているため、 コードで管理するというアプローチを取れないか? Streamlit のことを知る ● Streamlitとは: ○ 様々なグラフ描画ライブラリに対応した Webフレームワーク ○ 宣言的なコードを書くとダッシュボードが作れる ○ Python 製、類似したフレームワークにDashなどがある ● https://streamlit.io/ Dashboard as Code と Streamlit

Slide 19

Slide 19 text

19 Dashboard as Code ● 最大のポイントは、Google Colabでガチャガチャ可視化したコードを ダッシュボードに持っていきやすい点( Pandas/NumPyをそのまま使える) Streamlit のメリット

Slide 20

Slide 20 text

20 Dashboard as Code ● ほぼ @tosh2230 の記事の通りの構成: ○ https://ts223.hatenablog.com/entry/gcp/cloudrun-streamlit ● アクセス制限 … Identity Aware Proxy ○ Google CLBを前段に ● バックエンドはCloud Runを並べる ○ 複数のダッシュボードを 同じドメインの配下にマウント可能 ○ GCPのSAと容易に紐づけ ● 費用面も優しい Cloud Run+IAP+Streamlitによるダッシュボード基盤

Slide 21

Slide 21 text

21 Dashboard as Code ● ダッシュボードは全て Python + SQL でコードに残る ● コンテナに固めて、デプロイも GitHub Actions + Cloud Build で自動化 ダッシュボードのコード管理

Slide 22

Slide 22 text

22 まとめ

Slide 23

Slide 23 text

23 まとめ 生産性の可視化のためにやったこと GHESの活動のETL 開発者の活動が SaaSに集約された ことで、可視化を することができた Dashboard as Code ダッシュボードを コード管理することで 変更履歴管理や再利用 自動化ができた

Slide 24

Slide 24 text

24 まとめ 成果物

Slide 25

Slide 25 text

25 まとめ ● そもそもダッシュボードを有効活用してもらっているか? 必要なものか? ○ アクセス状況を分析し、実際の利用シーンを把握する ○ 各事業部のテックリードに継続的にインタビューしたい ● Four Keys の他に有効な指標がないか? → テスト周りの可視化を試作中 ○ ActionsのAPIを経由して CI実行時間などもわかる ○ k1LoW/octocov により カバレッジの変遷もわかる 今後の課題や展開

Slide 26

Slide 26 text

26 Thank You! Thank You! We’re hiring!! https://recruit.pepabo.com/