dora-team/fourkeysを使ってFour Keysを測定する環境を構築した

業務委託で入っている開発現場に dora-team/fourkeys を導入したという話を書きます。

https://github.com/dora-team/fourkeys

dora-team/fourkeys でよくできていると思った点は、terraformで管理されている点と、「webhookを受け取るサーバ」と「受け取ったwebhookを加工するサーバ」と「ダッシュボード」がそれぞれ別のアプリケーションとして作られているあたりだ。また、データストアにBigQueryを使っているのもよい。データ量の増加によるパフォーマンスの劣化がよく起きるのでそれを考えなくてよい。

dora-team/fourkeysのどこを改修して現場の運用にフィットさせるかは、https://speakerdeck.com/ouchi2501/fourkeysji-pan-wogou-zhu-sitahua に書いている内容を大いに参考した。

手を加えた箇所は次の通り

  • BigQueryのviewの変更
    • 測定対象のリポジトリのviewを作った
    • デプロイメントの定義を「masterブランチのマージ」にした
    • 障害の入力を「特定のリポジトリで作られるissueの本文内に含まれる文字列」にした
  • terraformのバックエンドをCloud Storageにした
  • grafanaの認証(googleログイン)を有効にした
    • Cloud Bulidの定義ファイルでシークレットを扱う変更を入れる必要がある
  • ダッシュボードの見た目の更新
    • 巨大なjsonを編集した

数週間運用してみてどうだったか

  • 「障害」の定義を明確にするべし
    • fourkeysに関する資料を見ていると、障害の定義について曖昧な現場は多いようだった
    • メトリクスに一貫性を持たせるためにメンバー間で定義を明確にする必要があり、スッと導入して終わりではない
  • リポジトリがterraformで管理されているとはいえ、CI/CDの整備がされていないので、ダッシュボードの修正をどうやって適用するかは多少のGCP力が必要だった
    • とはいえ、運用にフィットさせる変更は、grafanaとterraformのコード(BigQueryのview)の変更に限られるはず

以上。