フルリモート!チーム対抗パフォーマンス改善合宿 準備編

MF KESSAI開発合宿運営(CTO)の@shinofaraです。 2019年6月13日の開発合宿@箱根から1年以上ぶりに合宿を開催しました。

今回は新型コロナウイルス感染防止のためフルリモート開催とし、そんな中でも全員で楽しく取り組めるようにチームごとに競い合う形式としました。 開発合宿としては珍しい(?)スタイルなので、合宿内容・それを支える仕組み・実際の成果を何回かに渡ってご紹介したいと思います。

今回は準備編として、合宿の内容決定や合宿前日にやったGoogle Cloud Profilerのハンズオンについてお伝えします。

合宿で向き合いたいこと

当社では導入企業様向けに決済APIを提供しています。提供開始からすでに3年になり、その間に多くの導入企業様に使っていただけるようになりました。 一方で嬉しい悲鳴ではありますが、ビジネスの成長・拡大に伴ってこれまで以上のパフォーマンスを求められることも多くなってきました。

そこで今回は大幅にパフォーマンス改善することを目指して、チーム対抗でどれだけパフォーマンスを改善できたかを競い合う形式の合宿として開催することにしました。

チーム対抗戦にすることでチーム内でのドメイン知識やコードの理解の共有も促し、全員で同じ目的に向かってチームワークを高めることもねらいのひとつです。

当日までに必要なこと

まずチームごとの成績評価のため、パフォーマンスをスコア化して計測できるようにする必要がありました。 こちらについては近日中に「仕組み編」として公開予定です。

パフォーマンスチューニングの勘所を参加メンバーに知ってもらうことも必要です。 合宿当日パフォーマンス改善を行いたくても、どこから手を付けたらいいかわからないことも多いかと思います。

そんな折、GoogleでCloud Profilerをご担当なさってる山口(ymotongpoo)さんに相談したところ、合宿前日にCloud Profilerを使ったパフォーマンスチューニングのハンズオンを実施していただけることになりました。

Cloud Profilerハンズオン

ハンズオンの前にまず一般的なプロファイラーの使い方や各種グラフの見方などの基礎知識から丁寧にご説明いただきました。pprofの典型的な使い方も伺うことができ、Goを使うことが多い私達にとって非常に有益でした。

その後、Cloud Profiler上でのフレームグラフの見方やフォーカスの使い方、対象の期間やパーセンタイルの絞り方などを伺いました。 時系列で主要なプロファイルの推移を見られるヒストリー機能はまだプレリリース版ですが、パッと見でパフォーマンスの傾向をつかめるすばらしい機能で感動しました。

ハンズオンでは実際にサンプルプロジェクトを動かしてCloud Profilerでプロファイルをとりながら改善フローを体験できました。 わからないところもすぐに山口さんに聞くことができ、リモートでも非常に良い体験のハンズオンとなりました。

このハンズオンのおかげで「プロファイルを取る」「ボトルネックを見つける」「改善に向けて改修する」「実際に改善できたか再度プロファイラーで確認する」というサイクルを各メンバーが身につけられたように思います。 実際、ここで学んだサイクルを合宿当日にもそのまま実践し、多くの成果をあげることができました。それについてはまた近日中に「結果編」として公開予定です。

まとめ

今回の合宿ではテーマに合わせたハンズオンまで開催できたため、かなりしっかりとした準備ができたと思います。ご協力いただいた山口さん、本当にありがとうございました。

山口さんもCloud Profilerや今回のようなハンズオンにご興味がある方は連絡してほしいとのことでした。パフォーマンスについてお悩みの方はぜひ一度検討してみることをおすすめします。