役割分担とデータの把握で、個人が自律的に共通のゴールを目指す状態に
加我氏の説明のあと、バックエンドのリードエンジニアである株式会社TVer サービス事業本部 技術開発部の内海 恵介氏が登壇し、少人数でも開発を失敗しにくくするためにNew Relicを活用した手法について説明した。
TVerでは、大規模なリニューアルを前に、開発段階からNew Relicを使い、リリース後の運用監視などへスムーズに移行することに成功した。リリースの2カ月前には、エラーハンドリングや例外処理などたくさんの想定外のバグが出ていた。そこでAPMのErrors InBoxなどを使ってAPI単位でのバグの洗い出し、リクエスト情報の精査を行った。
「NRQL(New Relicクエリ言語)を利用して、モバイルイベントのリクエストエラーなどの情報を合わせると、バグ報告者の端末を特定し、そのときのリクエストやユーザーデータの状態を詳細に確認することができ、再現するための情報がすぐ手に入る状態だったことは、バグ潰しにとても役立ちました」(内海氏)
バグ潰しが一段落したリリース1カ月前には、負荷試験によるボトルネック調査を入念に行った。New Relicでは、平均や最大値だけでなく、パーセンタイルの指標をとらえることができ、全体を俯瞰してボトルネックの要因を探ることができた。
リリースの2週間前には、全体的なバグボトルネックを解消し、あとは要求性能を満たすためのパフォーマンスチューニングの段階となった。応答に10ミリ秒以上かかる遅いAPIを洗い出すなど、分析とチューニングによって全体的なパフォーマンスを劇的に改善することに成功した。
New Relic以外で工夫したことについて内海氏は、アフリカのことわざである「早く行きたければ1人で行け、遠くまで行きたければみんなで行け」を挙げ、スピード感を落とさずにリリースを迎えるためにあえてチームでなく、個々のメンバーが自律的にゴールを目指すことを選択したと説明した。
「バックエンド、インフラ、SREとそれぞれが1名のチームだったので、それぞれがそれぞれの最速で目的地に向かって早く行くための土壌はできていました。それらを阻害しないために責務を明確化して分解することはとても重要でした。最終的なゴールやミッションを明確に共有することを意識し、それぞれがゴールに対して最適な判断をその場でできる環境を維持することも努力してきました」(内海氏)
内海氏は続いて、TVerのサービスにおけるパフォーマンスチューニングや負荷対策を紹介した。24時間365日常に大量のアクセスがある同サービスでは、たびたびアクセススパイクが生じる。テレビでの野球中継を地上波で行っていたが、延長のためTVerで続きを放映する、番組が終了した直後にほかの番組を探す行動が見られるなど、10倍以上のトラフィックが訪れる。内海氏は、このような瞬間はバックエンドエンジニアの腕の見せ所だという。
SREである加我氏がダッシュボードを整備したおかげで、負荷試験やシミュレーションテストなどで各種指標がどんな動きをするかをパターンごとに認識できたため、その後の運用のイメージがつかめた。内海氏は負荷試験やそこで挙がった課題の対処に対策に集中することができた。
メトリクスを日々常に確認して話し合うことで、プロダクト改善やトラブル対応につなげる
リリース後は、運用してみて初めてわかることの連続で、ここでも横断的に可視化したメトリクスの恩恵を得られた。内海氏は「安定して稼働している状態や、ユーザーが殺到している状態、外部要因でアクセスが増えている状態、また、一部サーバーリソースなどの不安定な状態など、さまざまなシミュレーションを事前に実施し、ダッシュボードを見ていたので、リリース後も安心を得られる状態になっていました」と説明した。
フロントエンドからバックエンドまで横断的なダッシュボードであるため、サーバーだけではなく、アプリデバイスごとの挙動差分にもすぐ気づくことができた。例えば、iOSアプリだけ特定のページ内で止まるAPIの呼び出し回数が非常に多いなどをすぐに捉え、非常に早いサイクルで改善することができた。また、サービス開始当初は多めのリソースを用意していたが、これも1カ月ほどでリソースを縮退しても安定稼働できるよう調整できた。
TVerのチームでは、リリース後からすぐにダッシュボードを眺める会を行っていました。前日の番組表やイベントと照らし合わせて、話し合い、新たなメトリクスをSREに依頼するような動きも見られ、常に改善に努める体制が出来上がっている。内海氏は「普段のメトリクスを感覚として持っておく訓練にもなります。そして、ちょっとしたトラブルや障害時にどういう挙動になるかの知見の集積などができるので、ぜひこれらは皆さんのチームでもやってみてください」とアドバイスした。
また内海氏は、責務を明快に分離することによって、正しく任す/任されることが自然できるようになり、本来の事象と乖離したレポーティングなどの問題を解消できるとし、チームにスピード感を出す場合には非常に重要だと述べた。
少人数だからこそ、コミュニケーションのロスを最小限に抑え、無事にリリースを迎えることができた。その後TVerには優秀なメンバーが続々と入社しているとし、内海氏は最後に「次はみんなで速く、遠くに行ける技術組織にしていきたいと考えています。TVerの技術組織は、やっと今から始まります。これからどんどん大きくして、そしてみんなが正しく頼り合える組織にしたいと思っています。興味がある人はお声がけください。TVerでテレビの未来を一緒に作っていきましょう」と呼びかけた。