Dabits

サーバサイドから運営まで何でもやるエンジニア系DJ

Gitlab-CIの導入を例にみる組織への技術浸透5ステップ

Ateam Group Manager & Specialist Advent Calendar 2020の14日目はエイチームライフスタイル CTO室の@dabitsがお送りします。

はじめに

私は数年前から社内のCI/CD環境整備を行っており、現時点で約200を超えるリポジトリでCI/CD環境が使われるようになりました。 今回はその始まりから現在にかけてを例に、新たな技術を会社に導入する際の5つのステップについて考察してみたいと思います。

TL;DR

  • 導入する技術の運用実績を作る
  • 自身の信頼を醸成する
  • 一緒に導入を進める味方/仲間を増やす

ステップ1. 自身の責任範疇において狭く始め、技術の信頼を得る

f:id:dabits:20201212142734p:plain

私がGitlab-CIを初めて会社で利用し始めたときは、まず私が所属している事業のデプロイから導入をはじめました。ここから数ヶ月を経て運用実績を作り、ようやく全体への展開へと進むのでした。

自身にすでに大きな権限をお持ちであればトップダウンで導入する選択もありますが、大多数の方はそうでないかと思います。 その場合、まずは自分のチームとか、もっと狭くするなら自分一人とかから新しい技術の利用を始めましょう。

もちろん可能であればなるべく上長に許可を得た上で。許可を得にくいような組織では水面下で実績を作ってなし崩し的に、という方法もありますが、全体展開にあたり難易度が跳ね上がるのであまりオススメできません。

ちゃんと上司が把握している範囲内でその技術について利用を始め、まずは上司からその技術の信頼が得られれば、チームを超えた導入に際しては上司が味方になってくれることもあるかと思います。

ステップ2. 承認を得て課題解決を主軸に利用範囲を広げる

f:id:dabits:20201212142736p:plain

Gitlab-CIを別チームに浸透させる前はすべてデプロイ作業を手動で行っていたため、各所でデプロイにエンジニアの時間を奪われてしまう状態が発生しました。 全体に浸透させるにあたり、この問題解決の打ち手としてGitlab-CIによる自動デプロイを提案->導入へと至りました。

小さく初めて運用実績を作ったあとは、いよいよ利用範囲を広げていくフェーズです。 実績を元に利便性をアピールし、1チームずつ確実に導入を増やしていきましょう。

特に相手チームの課題解決とセットで行うのが効果的です。 組織/チームの問題解決とセットで利用範囲を広げていきましょう。

ステップ3. 利用/浸透のためのサポート/開発を惜しまず注ぐ

f:id:dabits:20201212142739p:plain

Gitlab-CI全体適用当初は、CIスクリプト/CIの設定自体も原則自分から進んで実施し、自ら設定してくださるチームにもレビューで参加するなど導入サポートを手厚く行いました。 導入後もさまざまな感想を聞きつつ、不便なところ/遅いところなどを積極的に直していきました。

ステップ2で導入をしたあとはひたすらサポートと開発を惜しまず行いましょう。 ここが個人的には一番肝心で、今後の導入対象技術存続が決まってきます。

思うに、社内で技術が浸透して存続するかどうかは浸透して当たり前に使われるまでに積極的に導入と問題解決をサポートしてくれる人がいるかどうかにかかってくると思います。 失敗事例の多くの場合はこのステップで飽きてしまったり、諦めてしまう場合が多く散見されます。 一番手を入れるのはここですので、もう少しと思って改善に尽くしましょう。

ステップ4. 利用が成熟化するまで基盤を安定化させ続ける

f:id:dabits:20201212142749p:plain

Gitlab-CI導入時においてもCIサーバの信頼性が落ちないよう、様々サーバの形態を変遷してきました。 現在ではKubernetesを利用することでスケール/対障害性双方において強い構成となっています。

このステップまでくるとほぼ技術の安定期にきます。 普段から当たり前に導入した技術が使われるようになることで、やがて自分らでカスタマイズなりして使うようになります。

完全に手離れするまでは引き続き土台のサポートをし続けていきましょう。 安定した基盤の下で新しい技術が使えるからこそ、安心して自分らでカスタマイズ/改善ができるようになります。

ステップ5. 共通部分を剥がしていき、管理を各自に委ねる

f:id:dabits:20201212142754p:plain

現在の自社におけるGitlab-CIがこのフェーズです。 当たり前に安定して使われるようになった技術はいつしか積極的なアプローチがなくても使われるようになりました。

この際に例えばCIの共通スクリプトなどがあると返って各チーム独自のCI成長に妨げになることがありますので、共通部分を剥がしていき、管理自体を各自に委ねることで成長スピードを促進するようにします。

導入に関わり現在も熱意をお持ちの方が積極的にハンドリングできるよう、障害となる共通部はどんどん剥がしていきましょう。

さいごに

自身のGitlab-CI導入、浸透を通じて技術浸透の自分なりの方法論を振り返ってみました。 TL;DRで書いた部分に加え、自分が飽きず、かつ気持ちよく使い続けれるかも継続のコツかなと思います。 組織規模にもよりますが、基本的には急がば回れで組織の状況をみながら気長に進めるとよいのではないでしょうか。 その先にはきっと誰かしらの助けになっている未来が待っていると思います。