見出し画像

QAエンジニアがトラブルシューティングを通して事業と自分自身を同時に成長させていく話

この記事は Ubie Advent Calendar 2020 の 19日目の記事となります。他のメンバーの記事も興味深いものばかりですので、ご覧になってください。

事情により担当日に公開が間に合わず大幅な遅刻になっています。

はじめに

Ubie株式会社に入社してもうすぐ2年が経つQAエンジニアの山口です。主な業務は医療機関向け業務効率化サービス「AI問診ユビー」の品質保証です。

この記事ではUbieのQAエンジニアがトラブルシューティングを通して事業と自分自身を同時に成長させていく話を書きたいと思います。

トラブルシューティングとは?

プロダクトをユーザーに利用してもらう中で、なかなか避けて通れないことの一つにプロダクト運用時のトラブルシューティングがあります。

トラブルシューティングが発生するケースは様々ですが、いくつかピックアップしてみると以下のようなものがあります。

- プロダクトの動作異常を示すエラー通知が来る
- 機能が何らかの原因で動作しないとの問い合わせがある
- ユーザーからデータの修復や復元についての問い合わせがある
- 想定したユースケース外の使い方ができないかの問い合わせがある
- 使いづらい、動作が遅いなどの非機能要件についての問い合わせがある

このようなエラー通知や問い合わせは、内容の重要性や緊急性を考慮して優先順位付けが必要不可欠。そして、即時対応が必要なものはただちに調査を行って対応方法を見つけ出し、プロダクトを修正したりユーザーへ解決方法を案内する…という流れがトラブルシューティングの一連の流れです。

この記事では上記の流れの中にある調査と対応方法を見つけることをトラブルシューティングとして話を進めます。

また、この後に出てくる「開発チーム」にQAエンジニアがメンバーとして参加しているという前提とします。

トラブルシューティングに協力して得られるもの

QAエンジニアが多くのトラブルシューティングを経験していくと以下のようなメリットが得られると仮説を持つに至りました。

- 想定外のユースケースをいち早く察知し、改善につなげられるようになる
- 効率的な調査が行えるようにドキュメントを残せるようになる
- 問題が再発しないように対策を推進できるようになる
- 調査にはプロダクトで使用している言語やフレームワークの知識が必要になる場合が多いので常日頃から学習する意識が生まれる
- 問題がアプリケーションのどのレイヤーで起きているかある程度の勘が働くようになる
- 調査と対応を経てエラーが発生しやすい状況や条件などについての知見が得られる
- プロダクトのログやサーバーログ、DBのデータなどのあらゆる情報を駆使して情報を収集できるようになる
- 調査に必要なツールの知識が蓄積されてツールの選定や扱いが上手くなる
- 調査を元に正確な再現方法を記載した適切な改善案を提示できるようになる
- 調査に積極的に参加する姿勢は開発チームやサポートチームのみんなに喜ばれ信頼されるようになる…はず

メリットを多く挙げてみましたが、一方で突発的な発生が多いトラブルシューティングには以下のようなデメリットも存在します。

- 調査タスクが入ると自分のやりたい作業を止める必要が出てくる
- 緊急を要する場合にプレッシャーのストレスに晒される
- 自力で解決することに意固地になって時間を浪費してしまう
- 責任感が強くなりすぎて保守的な思考に偏ってしまう

トラブルシューティングは誰が行うかに関しては開発チームの規模や形態、チーム内においての役割分担次第なところもあるので、場合によってはQAエンジニアがあまり関わらないかもしれません。

しかし、楽な作業があまりない反面、苦労したことで得られる情報やスキルは大きいです。もし、調査チームが存在していればメンバーとしての参加でデメリットに挙げたようなこともメンバー間のカバーよって回避できるのではないかと思います。

QAエンジニアは職業柄プロダクトの仕様把握に長けている傾向があります。開発エンジニアとの協力でその力を遺憾なく発揮すれば、問題の早期解決に貢献して、そこで得られたものをプロダクトへ還元もでき、さらに品質向上につなげられるでしょう。

ユーザーサポートチームと開発チームの連携

Ubieではユーザーやプロダクトの導入支援を行っているメンバーからの問い合わせに対応するため、ユーザーサポートチーム(以降「ユーサポチーム」)が存在しています。

ユーザーからの問い合わせは電話やメール、Webフォームなど様々な経路があります。ユーサポチームがそれらの一次受けとして重要性や緊急性を踏まえて切り分けを行い、必要に応じて開発チームへエスカレーションします。

エスカレーションが行われた中でトラブルに関するものは調査をする流れになりますが、この調査に対する開発チームの姿勢がユーサポチームとの信頼関係構築に重要なポイントになると考えます。

ユーサポチームのメンバーは業務内容的にストレスのある状態に置かれることが多いと思いますが、そこで開発チームのフォローが疎かになってしまうと二重のストレスとなる上にユーザーに自信を持って適切な案内ができなくなってしまいます。

よって、開発チームは以下のようなことを心がける必要がありそうです。

- エスカレーションされた内容は可能な限り早めに対応する
- ユーサポチームと開発チーム間の情報連携を密にする
- 新機能や既存機能の変更のリリースに関してユーザーへの告知を行う
- 日頃からプロダクトの回復性や可用性を考慮する
- ユーサポチームからのフィードバックを受けて問題があれば改善する

会社の問い合わせ窓口となるユーサポチームと開発チームの信頼関係は、会社とユーザーとの信頼関係にも大きな影響を及ぼします。そのためユーサポチームが最大限のパフォーマンスを発揮できれば、ユーザーに安心してプロダクトを使ってもらうことにつながり、プロダクトだけでなく会社自体の信頼向上も期待できるでしょう。

よって、トラブルシューティングを単なる作業として切り取ってしまうのではなく、そこから派生する事柄にも目を向けて実は会社やプロダクトの成長にも多分に影響している業務として自分ゴトとして捉えていけるとよいのではないでしょうか。

問題の切り分けについて

たとえば、本番環境で何らかの問題が発生しているとき、どんな原因でその不具合が発生しているのか可能な限り迅速につきとめる必要があります。

対応が必要な問題は闇雲に対応するのではなく、以下のような切り分けが必要になるでしょう。

- 特定のユーザーの環境のみで発生しているのか
- 全てのユーザーの環境で発生している、または発生する可能性があるのか
- 即時解決が必要な緊急度が高いものなのか
- 緊急度が中以下の場合の優先度はどの程度か(次回の定期リリースまで待てるのかどうかなど)
- 手がかりとなりそうなエラー通知は届いているのか
- 直近のリリースに関係しているか
- リリース以外に本番環境で何か作業は行われていないか (インフラやSaaSのメンテナンスなど)

この問題の切り分けこそトラブルシューティングで最も鍛えられる能力です。そして、QAエンジニアとして普段の品質保証活動を経て蓄積されるプロダクトのナレッジを有効活用できるところでもあります。

発生した問題の情報を収集し、そこから経験則なども合わせていくつかの推測を行い、ズバッと「ここに問題があるようだ」とアタリを付けて詳細な調査をしたところ正解だったとなったときは日頃の成果を感じられる瞬間になるかと思います。

エラーの早期検出

Ubieではエラーの早期検出と解決の手助けになる情報を得られるようにエラー監視ツールのSentryを導入しています。

Sentryからの通知はSlackと連動しており、例えば本番環境でエラーが発生したときはSlackの専用のチャンネルへ通知が行われるようになっています。このエラー通知が来ると心臓によくないのですが強い心を持って内容を確認します。

スクリーンショット 2020-12-21 9.20.31

この通知に関して普段から気をつけておくべき点があります。それは通知を放置しないこと。通知を放置すると適切な対策が取られずにどんどん通知の種類や数が増えて対処不能な状態に陥る可能性があります。

いわゆるブロークンウィンドウ理論(割れ窓理論)で、小さな内容であっても通知は放置せずに適切に対応すべです。そうしないと重大な問題の発生を示す通知があったとしても他の通知に埋もれてしまい対応が遅れてしまう可能性があります。

また、通知の放置はエラー通知慣れを起こす可能性があります。緊張感を保ったエラー対応には常日頃からの行いが大切です。

さいごに

この記事を書きながら振り返ってみたのですが、Ubieではエラーの監視やトラブルシューティング対応がやや属人化している傾向があります。属人化を解消するための型化には今後も改善の余地が大いにあります。

トラブルシューティングも対応した分だけスキルアップには繋がりますが、本来進めるべき業務に支障が出る可能性もあるので、やはりチームで対応できるのが理想的です。

そもそもトラブルを発生させない、常にエラーを監視して問題が発生したら迅速に対応する、ユーサポチームともいい関係を築いていく…これらを円滑に行うことが開発チームに求められるトラブルに対するスタンスだと考えます。

そして、QAエンジニアとしてそこに貢献することが質の高い優良なプロダクトを作り続けることにつながり事業成長にも貢献できるはずです。

Ubie では他のチームと協力したり、様々な観点からプロダクトの品質向上に繋げられる QAエンジニア を募集しています。

一緒に社会に貢献できる信頼性の高いプロダクトを作っていきましょう!


この記事が気に入ったらサポートをしてみませんか?