Classi開発者ブログClassi開発者ブログ教育プラットフォーム「Classi」を開発・運営するClassi株式会社の開発者ブログです。開発組織Tweetみなさま、おはこんハロチャオ〜。id:aerealです。この記事ではClassiにおけるGitHub運用委員という役割とその仕事について紹介します。Adventarの2日目の記事としてお届けします。GitHub運用委員とはClassiでは開発のコラボレーションツールとしてGitHubを活用しています。ActionsというCIサービスも利用できますから一歩間違えれば本番環境で稼働動しているサービスに大きな影響を与えかねません。当社には情シスやサイバーセキュリティ推進部といった部署が存在し、基本的なセキュリティガードレールの設置や情報システムの管理はそれら部署が責任をもって行ってくれています。上記の通りGitHubは誤用・濫用してしまった場合の影響が大きく、また機能も多岐に渡るため、サービスと我々の業務フローを深く理解した上でより進んだサポートが必要と考えられます。いった背景からGitHub運用委員は生まれました。GitHub運用委員はClassiのメンバーがGitHubを利用する上で望ましいデフォルトを提供したり、安全かつ快適に利用できるようサポートしたり、といったことをミッションに掲げています。情シスやサイバーセキュリティ推進部と連携しお願いしつつ、よりサービスに寄り添った運用業務をしています。実際に我々が行っている活動をピックアップして紹介したいと思います。Cloudというプランに加入しています。詳しい説明は省きますが、GitHubがホストするサービス形態の中で最も機能が充実しているプランと認識いただければ間違いはありません。Actionsなど従量課金制のサービスに対するクレジットが一定額含まれており、このクレジット以内であれば追加のコストを支払う必要はありません。言い換えればこのクレジットを使い切ると追加のコストを支払わなければなりません。ActionsやPackagesなどサービスのデプロイに不可欠なサービスも該当するので使えなくなった場合の影響はとても大きいです。従来GitHubのWeb上で毎月各種クレジットの残高を確認していたのですが、単純作業な割にそれなりに重要で忘れてはいけないためなんとかしたい業務のひとつとなっていました。GitHub運用委員はこの作業を引き受け、自動化および可視化することに成功しました。Classiは既にBIツールとしてRedashを、データウェアハウスとしてBigQueryを活用しています。可視化と監視にRedashを、データの蓄積場所としてBigQueryを選び、APIから取得したデータをBigQueryに定期的に挿入する作戦をとっています。APIで取得することができます。以下のような設定ファイルを書くとレスポンス結果をBigQueryのカラム定義にマッピングし、毎日自動でテーブルに挿入するツールを開発・運用しています。書きますこのようにしておくことで似たようなコードを繰り返し書かずとも、設定ファイルを追記するだけで取得するデータを増やせます。実際にPackagesの使用量も新たに監視することにしたのですが、設定ファイルの変更のみで簡単に追加できました。必要であればビューも定義します。Actionsの使用量を計算するビュークエリです。関数を使うことで前日と比較した値を計算できるのでこれを使ってその日に使った量を取得できます。実際に利用料を観察しようと思うと月毎では粗すぎるため、日毎の利用料を可視化することである日を境に傾向が変わったことを認識できます。最後にBigQueryをデータソースとして設定したRedashのグラフを作ります。実際にプロットした様子が以下のグラフです。月末にかけてきれいに減って月初で戻っている様子が伺えますね。このグラフからわかるように9月はクレジットをぎりぎり使い切りそうでした。これも月末にいきなり気付くのではなく月の途中で発見し、変わった利用が起きたのかヒアリングしています。ポリシーの制定と広報GitHub運用委員はGitHubの社内エキスパートとして望ましいデフォルトを用意したり広めることもまた重要な責務となっています。使うとGitHubのAPIにアクセスでき、個人やチームの生産性向上に役立てることができます。粗い粒度でしか権限を与えられないため過剰な権限を持ちがちで漏洩した際のリスクも大きくなりがちです。個人に紐付く認可情報なので異動や退職などのイベントで引き継ぎ漏れが起きやすいです。GitHub運用委員としてはPATのアクセス許可がリソースベースポリシーではなくアイデンティティベースポリシーになっていることも大きな懸念です。ごとにアクセスできるPATを一覧することができないので、知らぬ間に強い権限を持っているPATが増えているということが起きがちです。GitHub運用委員としてはPATはできるだけ使わないでほしい・どうしてもPATでなければいけないケースでのみやむなく使ってほしいものとして扱いたいです。組織の開発者にとってもいらぬリスクを背負わず効率化にいそしんでもらうため、上記のような問題点と回避策をまとめてポリシーを定め広報しています。以下のような内容をPATに関するポリシーとして定めています。このトークンはそのワークフローを実行するレポジトリに閉じた権限が与えられます。