【オンライン】【自動化何でもLT大会編】CircleCI コミュニティミートアップ での登壇資料です。 https://circleci.connpass.com/event/228801/
CircleCI の有料プランを導入するためにやったこと岡部恭平 / CO-OP Sapporo2021.11.24 / 【オンライン】【自動化何でも LT大会編】CircleCI コミュニティミートアップ
View Slide
自己紹介生活協同組合コープさっぽろデジタル推進本部 システム部 エンジニア岡部恭平 @okabeeeatWebアプリケーションエンジニア
最近Advent Calendar、実施します!!!https://adventar.org/calendars/6263
本日話すこと● CircleCIの有料プランをどのようにチーム・部内で提案し、導入したのかをお話しします● 本発表の主な対象者○ CI/CDサービスに興味がある方○ 有料のサービス・ツールを導入しようにも何をすれば良いのかわからない方● 話さないこと○ CircleCI の具体的な機能やTipsについて
つまりこういう人が対象自分そろそろ CircleCI を有料プランにしたいなぁ ...まぁ偉い人が良い感じにやってくれるだろう...
つまりこういう人が対象自分え!?私が導入するんですか !?何すれば良いかわからない ...
目次● 背景● 導入までにやったこと● 所感・今後● まとめ
背景● CI/CDとして CircleCI を利用している● プランは Free (2021年4月当時)○ 週に 2,500 分のビルドが可能○ iOSのビルドは不可CI/CDとは?※継続的インテグレーションと継続的デリバリーまたは継続的デプロイのいずれかを組み合わせたプラクティスを指す。CI / CDは、アプリケーションの構築、テスト、および展開の自動化を実施することにより、開発および運用アクティビティとチームの間のギャップを埋める。※引用: CI/CD(Wikipedia)
沢山テスト・ビルド・リリースやってますリリース テスト実行 リリース リリースリリース
ある日...Free プランの使用量を越える ...
つまり...
みたいなものを作る...!?
そして1件のメールが...CircleCI Japan です。有料プランいかがですか?
色々あって私が導入を進めることに...こういうのやったこと無いけど ...まぁ...何とかなるしょ!!
導入までにやったこと1. 実現したいことの整理2. チーム内で合意を得るa. CI/CDサービスの調査b. CircleCI Japan とのMTGc. GitHub リポジトリの調査d. その他調査したことe. チームへ提案する3. 部内で合意を得る(稟議に相当するもの)a. 上長に軽く相談b. 部内向けの提案資料を作成c. 部内で提案・申請する4. 有料プランを申し込む※実際の部内のルール(進め方)・資料の内容は本ミートアップ用に一部変更しております
実現したいことの整理
実現したいことの整理テキストや GitHub の issue などで整理する
チーム内での合意を得る
CI/CDサービスの調査● 候補となるCI/CDサービスを調査○ CircleCI と GitHub Actions Team(プラン) を比較
CircleCI Japan とのMTGMTGで以下の内容を確認・質問をした● Freeプランと有料プランの違い○ ビルド時間○ ビルドできるOSの種類○ 利用できるコンピュートエンジンの違い● 有料プランの種類○ Performanceプラン(従量課金)○ Performanceプラン(年間プラン)■ 年間1千万クレジット(使用量)が利用できる■ $6,000/年● 他に質問した内容○ 「クレジット」・「アクティブユーザー」の定義の確認○ 直接の契約と代理店経由での契約の違い○ 1アクティブユーザあたりの消費クレジット数の確認
従量課金か年間プランかウチはどっちが良いでしょうか ...?CircleCI Japanなんとも言えないですね ...他社さんではCTOの方が良い感じに決めているとよく聞きます ...
とりあえず1ヶ月試す方向で検討することに...(え...そうなの!?)判断についての知見などはヒアリングされていますでしょうか?わからないですね...あ!1ヶ月トライアルで動かしてみて決めるのはいかがでしょう?ただし、1ヶ月のトライアルは有料プランの契約が前提となりますCircleCI Japanわかりました
● CircleCIでの想定される消費クレジット数などを見積もるために GtiHub オーガニゼーションで主に以下を確認○ リポジトリ数や直近のコントリビューター数○ CircleCI を設定しているリポジトリ数○ GitHub API(octokit.rb を利用)利用し、リポジトリ数や利用している言語や設定ファイルの利用状況を確認● わかったことはスプレッドシートにメモし、グラフを作成(以下は例)利用プログラミング言語・ファイルの割合GitHub リポジトリの調査・・・グラフ化
GitHub リポジトリの調査・・・グラフ化グラフ化月毎のリポジトリ作成数CircleCI の設定リポジトリ数
その他調査したこと● 利用するチームメンバー数の確認○ 直近3〜6ヶ月で新しく入るメンバーも含める● チームメンバーのCI/CD利用経験・スキルなどの確認
CI/CDサービスを選定調査したことに加え、下記の観点でCI/CDサービスは CircleCI に決定● 主に(現時点での)開発で利用する言語・ファイルのビルドの時間○ Node.js, yml, Python● ダッシュボード機能がある○ 各リポジトリのデプロイ・リリース状況を把握できる● CircleCI の経験者の割合が多い● 社内のデプロイツールを有効活用できる
チームへ提案する● 今までに調査したことをドキュメントにまとめる○ ADR(Architecture Decision Records)のフォーマットを参考にした● ある程度まとまったらチームへ提案し、合意を得る○ フィードバックがあれば修正する
大事なのはここから...
部内で合意を得る
• 部内で提案・申請前に上長(キーマンになりそうな人)にここまでやったことの共有と相談を軽くしておく• 1on1や雑談(通りかかった際)などを上手く利用する上長に軽く相談CircleCI というCI/CDサービスの有料プランを導入したいと思っておりまして...本部長
上長に軽く相談そうなんだ!全然良いんだけど提案する時はちゃんと「数字」を使ってね!!「ROI」とかがキーワードになるかな本部長
上長に軽く相談数字!?...すうじ?「ROI」はちょっと聞いたことある...本部長
ROI(投資利益率)企業の収益性を測る指標のひとつで、投下資本に対する利益の割合のこと。英語表記「Return on Investment」の略でROIともいいます。投資に見合った利益を生んでいるかを判断します。※引用: わかりやすい用語集 解説:投資利益率(とうしりえきりつ) | 三井住友DSアセットマネジメント
つまりこのままだと...提案しま〜す本部長 部内メンバー
おそらくこうなるそんな〜違う、そうじゃない本部長 部内メンバー違う、そうじゃないなんかすごくて便利そうなのはわかるけど ...
ここらへんで挫折しかける...どうしよう...別にCI/CDサービスを導入しても儲かるわけじゃないからな ...
ググってもあまりわからず...
たまたま弊協の note を眺めていると...引用: https://dx.sapporo.coop/n/n45cbc47c059e
これだ!
「作業時間」に着目するROIの「利益」の部分を「作業時間」に置き換えて考えてみるアプリケーションのデプロイ作業の時間を計算してみる1. 手動でのデプロイ作業の人数・手順・時間を算出2. CircleCI を導入後のデプロイ作業の人数・手順・時間を算出3. どれだけ時間短縮ができたかを計算4. 1ヶ月にデプロイ作業が何回発生するかを数える5. 12ヶ月で計算し、年間の作業時間を計算
絵でまとめてみる
さらにリポジトリ(35個)期待できる年間でのリリース作業の削減時間35リポジトリ × 220 分 × 12ヶ月 = 92400分 / 60分=年間1540時間の削減※リポジトリ数は5(CircleCI を設定済みのリポジトリ数 ) + 6(「今後設定予定」及び「設定の検討予定」のリポジトリ数の合計 ) + 24 リポジトリ(1年間で増えると想定したリポジトリ数 ) で計算。
結構すごい!?
部内向けの提案資料を作成● 「背景」「目的」「効果」「料金プラン」「導入までのスケジュール」などをまとめたドキュメントを書く○ 今までに調査したことや作成したドキュメント上手く利用する○ 従量課金プランか年間プランのどちらにするのかは1ヶ月のトライアル期間で決める旨も記入● あくまで「ROI」を意識した資料を作る○ CircleCI の機能等の技術的な話はなるべく削る
作成した提案資料をもとに、再度相談した結果...部内向けの提案資料を作成ありがとうございます!(やったぜ!!)内容わかりました申請上げていいよー本部長
部内での提案・申請も無事OKを貰った部内向けの提案資料を作成ありがとうございます!(やったぜ!!) OKです!部内メンバー
1ヶ月のトライアルを実施● 積極的にテスト・ビルド・リリースをするようチームメンバーへ連絡● やりたいことを自由に検証する○ iOS のビルドの検証○ 利用できるリソースクラスをMAXにし、実行時間が短縮されるかの確認■ 実行時間はあまり短縮されなかった...
トライアルの結果を基にプランを決定なるほど!CircleCI Japanこの結果だと...年間プランの方が合ってそうですね!!
そして...🎉無事、有料プランになりました🎉
所感・今後所感● サービスやツールを導入するのは大変!○ 部内向け資料は「何をすれば良いのかがわからない」からのスタートだった● 「数字」にすると色々なことがわかってくる○ 収益、作業時間、リードタイム、工数など様々○ 自分なりの考え方で良いので「数字」に落とし込んでみる○ 「辛い」・「楽」などの主観的な情報ではなく客観的な情報になる○ 新たな提案手法が身に付いた● エンジニアに関わらず「数字」に落とし込む力をもっと上げていきたい○ どのように皆さんが数字にする力訓練・学習しているか知りたくなった今後● CircleCI の利用リポジトリの拡大
まとめ● CircleCI のFreeプランの利用枠を越えた● 有料のCI/CDサービスについて調査をした● CircleCI の有料プラン導入をチームと部へ提案した○ 提案資料は「数字」を意識した● CircleCI の有料プラン(年間プラン)を導入した
参考• octokit.rb• https://github.com/octokit/octokit.rb• Architectural Decision Records• https://adr.github.io/
ご清聴ありがとうございました