普段はMisocaのインフラの面倒を見たりしています。Misocaの開発チームでは毎週SLOの状況を共有する時間をとっています。SLOを設定した話は別記事で紹介しています。tech.misoca.jp先日、開発チームに共有したところ普段よりもレスポンスタイムが悪化してることがわかりました。これ以上の悪化はサービスに大きな悪影響を及ぼしてしまう事も懸念されました。そこで、年末年始をトラブルなく過ごせるように開発チームでボトルネックを見つける会を開き、原因の特定から実際に改善し効果が表われたことを確認できました。問題発見Misocaには時期によってアクセス数の波があります。月末・月初はアクセス数が普段と比べて多くなり、レスポンスタイムもそれに伴って増加しやすい傾向にあります。99パーセンタイル値が増加しています。9月は四半期締めの時期で特にアクセス数が多い月なのですが、それよりも10月の方がレスポンスタイムが長くなってしまっています。この時点では原因は特定できてなかった状態で、早急に手を打つ必要がありました。Redashで可視化しているレスポンスタイムのグラフ。濃い赤が95、薄い青が99パーセンタイルのレスポンスタイム値。9月と比べて10月の方が大きくスパイクしていることがわかるしかし、開発チームメンバーは各自プロジェクトのタスクを抱えており、どのくらいのタスクが発生するかわからないパフォーマンス改善を各自が率先して引き受けるのは心情的に難しい状態でした。そこで、過去に開発者ブログでも紹介した「お気持ち会」の要領で有志で集まり、最低限下記を明らかにすることにしました。上記までを会のゴールとして、実際に解消する作業は別途行うこととしました。開発チームでどうするか話し合って、有志でボトルネックを見つける会を開くことが決まったお気持ち会の記事はこちら。後日、ボトルネックを見つける会を開きました。当日はRedashで可視化しているレスポンスタイムのグラフやSkylightでRailsのアクション毎のレスポンスタイムやイベントシーケンスを確認しながら、ボトルネックとなっている処理をみんなで探しました。結果として、いくつかボトルネックと思われる処理の特定ができ、さらにはそれに対する具体的な改善策まで話し合って決めることができました。当日は多くの人に参加してもらったことで一般的な高速化のテクニックからドメイン固有の知見を活かしてボトルネックと思われる箇所を複数発見できた最終的に、この見つける会ではボトルネックを思われる箇所をいくつかリストアップし、その中から特に大きな効果を期待できそうな改善策を決めて修正するというところまで決めて終わることができました。見つける会では今後の作業者のアサインまでは決められませんでしたが、修正箇所の実装に詳しいメンバーが積極的にタスクを拾い上げてくれたおかげで、会を開いたその日に修正のプルリクエストが出来あがるという驚きの仕事の速さでした。本当に2時間後にプルリクエストを作っていたリリース直後から効果は表れていて、効果の高いところだと普段よりも95パーセンタイル値で40%程高速になっていました。Skylightのレスポンスタイムグラフ。薄い赤が95パーセンタイル値。リリース直後からグラフが全体的に下がっていて改善されていることがわかる山場だったアクセス数が増加する期間も大きくスパイクすることがなくなり、パフォーマンスの改善効果があったことを確認できました。Redashで可視化しているレスポンスタイムのグラフ。濃い赤が95、薄い青が99パーセンタイルのレスポンスタイム値まとめアプリケーションのレスポンスタイム悪化から、実際に開発チームで改善するまでの流れを紹介しました。いうコンテストに参加していた個人的な経験が活きたかなあと思いました。した緊急度の高い問題に対してきちんと開発チームとして問題の提起から解決、結果の測定まで手を動かした事も良かったですし、それをしっかり実行できるMisocaの開発チームは強いチームだなあと改めて実感しました。11:08関連記事2020-07-30Misocaサービスの機能利用率見える化をしましたこんにちは。Requestを送るまでこんにちは、Misoca開発チームの黒曜(@kokuyouwind)です。最近...2020-02-03Redashから始める計測生活Misoca開発チームの黒曜(@kokuyouwind)です。先週の土曜日に富...2019-11-21木曜の夜はもくテク!!(Misoca冬のLT大会のご案内)こんにちは。