DevOpsパフォーマンス改善開発合宿

MF KESSAI開発合宿運営(CTO)の @shinofara です。

本日はマネーフォワードグループのエンジニアが集う開発合宿にMF KESSAI(以下MFK)も参加しています。 合宿は個人やチーム単位でテーマを持って開発するスタイルなので、MFKはこの場を借りて、第5回目の開発合宿を行うことにしました。

ですが今回の記事はちょうど3か月前の3月13日、14日に開催した開発合宿の内容をお話したいと思います。

今回の合宿について

過去には「技術研鑽」「場所を変えて仕事」「開発組織を今後どの様によりよくしていくか」などざっくりとしたテーマで開催してきましたが、今回は「開発のIKIOIを向上させ続ける」をテーマにしました。

そもそもIKIOIとはなにか

IKIOIとは弊社の1つのチームで自分たちのスループットを図る指標として生まれて、今では全チームが観測してるチーム開発力を示す指標となってます。

DevOpsのパフォーマンスを測る指標として、2009年に公開されたFlickrのスライド「10+ Deploys Per Day: Dev and Ops Cooperation at Flickr」に書かれている Deploys / a Day を使われている企業もあるとおもいます。 この指標はチーム(人数の増減問わず)1日に何回デプロイしたかを指す指標となっています。また最近 Deploys / a Day / a Developer とかで計測してる企業も見かける気がします。

弊社では1日ではなく1スプリント(週)に、Developerはチームメンバー(Power)を加えた形にアレンジして、 Deploys / week / Power(Develop) となっています。Power も弊社で呼ばれはじめた言い方です。

開発者4人が1スプリント(5日)の間に20回デプロイしたとすると、20 / 1 / 20 = 1 となります。 この時の結果に対してx10 した値が、そのチームのIKIOIを表しています。

IKIOIを計測してどうしたいのか

MFKではリリース頻度の高い状態が、ユーザにより価値を提供できる状態だと定義しております。 そしてIKIOIという指標を設けて計測する事で、チームとしての開発力を知る事に繋がりより良くしていくことにつなげていきたいと思っております。

またIKIOIの数値が上下するとしたら、なにか上下する要因があり、チームとしては不安定な状態になっている事になります。 計測を行う事で、感覚ではなく数値で知ることができ、改善につなげる事ができます。

過去にみんなで寄ってたかってタスクを潰している話で、モブプロを導入した事を書かせていただきましたが、こちらもIKIOI向上の一環で行いました。

IKIOI という指標を用いてパフォーマンスを可視化して高めていくことで、生産性を高めてる事ができていると思っています。そして高め続けるためにその時点の改善点を見つけ出し組織としてのありかたや、チームとしての動き方、そしてコードレベルのありかたも全力で改善続けています。

今後もIKIOIを観測しながら様々なあり方を見直して生産性向上させ続けていきたいと思います。

さて合宿を一部紹介

合宿所と合宿開催に至った経緯

今回の会場は「千葉県香取市にある農園リゾート THE FARM(ザ ファーム)」です。 合宿をするしないの話より前に会場と日程が決まりました。 オペレーションのメンバーの不思議な力で合宿プランに当選したことで話が進みました。

合宿中の様子

少しフォトアルバム感が出てきますが、お付き合いください。

合宿プラン当選者に代表として、合宿開始の挨拶をしてもらってます。

全体挨拶後は、オペレーション、開発で別れてそれぞれの合宿コンテンツを実施。 この写真では開発側の内容などを説明してます。

開発チームは4人チーム、2人チームが2つという合計3チームに別れて、どこが改善したらikioi向上につながるか、コード・仕組み・フローなど幅広い面で議論を開始しました。

手前のオペレーションチームは、開発合宿とは別で、オペ合宿中ですが同じく議論しています。

議論が落ち着いて、Asanaにタスク出しが完了したチームから、ランチ会場まで自然の中を歩いて移動しました。

あるいて……

到着しました。ここが滞在中の朝食、昼食、夕食をいただく会場になります。

既に開発合宿中のデザイナ・ディレクタチームがランチ中でした。早い。
※僕らエンジニアは8名で行動したので、席があくまで到着から2,30分ほど待ちました。

同行中の僕が食べた物だけ載せておきますね。ハンバーグです。

2,30分だけ息抜きも兼ねて農業体験をしてるメンバーが?!

人参が埋まってます。

昼食後は宿泊するコテージにチェックインできたので、ミーティング部屋からそれぞれのコテージに移動してタスクに取り掛かるメンバーもいました。

窓の外が暗くなってきました。

夜は夜で静かで集中するにはもってこいな空間です。

夕食まではまだまだ時間があるので、それぞれのコテージでチームごとにもくもく作業をしています。

気づけば夕食の時間になったので、昼食と同じ会場に向けて移動を開始しました。

到着しました。ライトアップがすごいです。

ここまでチームごとに分かれていたので、久しぶりにそろって乾杯。 まだまだ1日目は終わりじゃないけど夕食を楽しみました。

二日目は朝早くからもくもくし続けました。

合宿の成果

最終的にそれぞれのチームはIKIOIをよりよくするために、何を改善しようとしたのか代理で紹介できればと思います。

  • Backend
    • CI実行時間を半分以下に短縮
    • Goのテストを安全に並列実行できる状態に
  • Frontend
    • 誰が書いても綺麗なフォーマットでコードを書くことができる
    • tslintをやめてeslintに乗り換えを行いエディタ連携も容易にする
  • データ基盤チーム(Dataforward)
    • 数百万件のデータを集めてきて、パースする処理をクラウドを活用して検証速度向上

最後に

今回はドメイン領域ではなくIKIOIという物に集中して2日間スプリントという形で合宿を行いました。 弊社では合宿だけではなく普段からIKIOIを観測し、よりよくするには何が課題でどうしたらいいかなどを定期的に振り返りながら改善を行っております。 今後も合宿のコンテンツにするかはその時次第にはなりますが、今後も向上させ続けていきます。 次こそは合宿完了後直ぐに記事を公開したいと思います。

ぜひとも遊びに来てください。