ソーシャル経済メディア「NewsPicks」の高山です。
先日、『Four Keysで改善する開発生産性〜データ・モバイル・フロントエンド〜』というイベントを開催しました。今回はそのイベントレポートをしながらNewsPicksの開発者体験(開発生産性)の取り組みについて書いていきます。
『モバイルでもエリートDevOpsチームを目指そう』
最初の発表はNewsPicksの石井から、NewsPicksのモバイルアプリ開発チームでどのようにFour Keysを改善しているかを話してもらいました。
次のような話がめちゃくちゃ勉強になりました。
- モバイル開発だとmasterブランチへのマージをデプロイとして扱う
- hotfixブランチのマージまでの時間をサービス復元時間として計測している
- レビューを早めるための仕組み作りが重要とわかっちゃいるけどなかなか優先度が上げられないことについて、Four Keys改善をチームとして掲げたことで取り組むことができた
- 「プルリクを小さく作ることも技術です」
- 直近だと5人チームで1日あたり11件、つまり1人1日2.2回のデプロイ(masterマージ)が行われている
- Feature Toggleを簡単に実装/操作できるようにしたことで、切り替えのためにビルドし直す必要が無くなった
- Feature Toggleがあることで、APIサーバーの更新を待たずに機能をリリースすることができる
- アプリのリリース作業も極力負担を減らして5分から10分の手作業でリリースできるようにした
- 夜間にmasterブランチで大量のテストを走らせている
発表から参照されている記事はこちらです。
『フロントエンド開発における、デプロイ頻度を上げるためのテスト設計と仕組みづくりのヒント』
以下のような話が印象に残りました。
- Webの基盤開発チームが開発しやすいだけでなく、誰でも開発しやすい状態を目指している
- 安全にデプロイできることを担保するために仕組みを整えている
- New Relicは開発時も本番でも調査できるようにして、エラー通知にも利用
- e2eテストは全てのページを網羅
- Visual Regression Testも全ての表示パターンを網羅
- Unit Testは正常パターンも異常パターンも徹底
- 普段Webフロントエンドを開発していないメンバーでもミス無くメンテできるよう自動化
- 各テストの責務を定義し、責務を超えるテストを徹底排除してflaky testが減って必要最小限のテスト数にできた
- 週一のレトロスペクティブで自チームだけではなくWebフロント開発に関わる全員の開発生産性をチェック
- テストと仕組みは開発者の背中を押す存在
『Four KeysによるDataOps改善の第一歩』
タイミーさんのDRE (Data Reliability Engineer)の石井さんによる発表でした。
僭越ながら感想を書かせていただきますと、データ基盤にFour Keysの元となる開発のデータも集約していて、他チームがFour Keysを計測して施策に活かす後押しもDREがしていることや、データ基盤開発の開発生産性を高めるための施策が非常に勉強になりました。
おわりに
扱っている技術分野はそれぞれ違うものの、同じ方向性でそれぞれリンクするところも多くあり、自チームに取り入れたいことばかりの勉強会でした。
NewsPicksでは最近もFindy Team+ Awardで開発生産性向上の取り組みを表彰されるなど、開発者体験(開発生産性)に非常に力を入れています。
良ければNewsPicksの他のブログ記事も読んでみてください。