OSSのissueから学ぶユーザサポートのノウハウ

 OSSのissueから学ぶユーザサポートのノウハウ

以下動画のテキストです。
https://youtu.be/M2lZuNk2tOk

842515eaf8fbb2dfcc75197e7797dc15?s=128

Satoru Takeuchi

June 28, 2020
Tweet

Transcript

  1. OSSのissueから学ぶ ユーザサポートのノウハウ Jun 28th, 2020 Satoru Takeuchi Twitter: satoru_takeuchi 1

  2. 前置き • この動画におけるユーザサポートの定義 ◦ 自分以外のユーザが検出した問題を解決すること • スキルを磨くのが大変 ◦ 具体的なことを学べる書籍や記事が少ない ◦

    OSSのissueがよい教材になるが、眺めるだけではサポート技術者の意図に気づきにくい • 私が最近解決したOSSのissueを題材にユーザサポートのノウハウを学ぶ ◦ 業務としてのユーザサポートとは異なる点が多々あるが、ここでは割愛 • 対象OSSはRook ◦ 分散ストレージCephのオーケストレータ ▪ Ceph以外もサポートするがここでは割愛 ◦ Kubernetes上で動作する • 必要な情報は動画内で適宜補足 2
  3. もくじ • 題材とするissue • ユーザと認識を合わせる • 原因の特定と修正 • まとめ 3

  4. もくじ • 題材とするissue • ユーザと認識を合わせる • 原因の特定と修正 • まとめ 4

  5. 題材とするissue • devicePathFilter doesn't work with /dev/disk/by-partlabel #5504 ◦ https://github.com/rook/rook/issues/5504

    • 前提知識 ◦ 設定ファイルにdevicePathFilterというフィールドがある ◦ このフィールドに記載の正規表現にマッチする名前のデバイスを Cephクラスタに組み込める • 概要 ◦ あるパーティションを Cephクラスタに組み込みたい ◦ パーティションラベルをもとに udevが作ったデバイス名を使ってデバイスを指定したい ▪ /dev/disk/by-partlabel/<パーティションラベル > ▪ 「その6 デバイス名は変わりうる」 ◦ “devicePathFilter: /dev/disk/by-partlabel/CEPH_DATA”と設定ファイルに書いた ◦ RookはパーティションをCephクラスタに組み込んでくれなかった 5
  6. もくじ • 題材とするissue • ユーザと認識を合わせる • 原因の特定と修正 • まとめ 6

  7. ユーザと認識を合わせる • ユーザと自分の間で「解決すべき問題は何か」という認識を合わせる ◦ 何が真の問題なのか、そもそも本当にそれは問題なのか ◦ ユーザ自身が真の問題に気づいていないこともある ◦ 認識を合わせないまま先に進めると無駄になりがち •

    不明点がなくなるまで確認を繰り返す ◦ 足りていない情報を要求する ▪ https://github.com/rook/rook/issues/5504#issuecomment-630720248 ◦ もらった情報の不明点を明らかにする ▪ https://github.com/rook/rook/issues/5504#issuecomment-636632604 • できれば手元で再現させる ▪ https://github.com/rook/rook/issues/5504#issuecomment-636780880 7
  8. もくじ • 題材とするissue • ユーザと認識を合わせる • 原因の特定と修正 • まとめ 8

  9. 原因の特定 • ユーザから受け取った情報をもとに当たりをつける ◦ ログを見ると、マッチすべきはずの条件でマッチしていないのが問題だった ▪ https://github.com/rook/rook/issues/5504#issuecomment-636828176 ◦ 当該デバイスを示す名前のリストが作られていなかった ▪

    https://github.com/rook/rook/blob/v1.3.6/pkg/daemon/ceph/osd/daemon.go#L378 • それでもわからなければ別の手段をとる必要がある ◦ ログを仕込んだデバッグ用バイナリの作成、デバッガの利用 ◦ 手元で再現できない場合はユーザ環境でそれらを使ってもらったり、追加情報を要求したり 9
  10. 修正 1. 単に前述のリストを作るようコードを修正、マージ • https://github.com/rook/rook/pull/5628 2. ユーザが使っているバージョンへのバックポート • https://github.com/rook/rook/pull/5689 10

    Master branch V1.3 branch (ユーザが使っているバージョン ) 本バグの修正commit backport
  11. もくじ • 題材とするissue • ユーザと認識を合わせる • 原因の特定と修正 • まとめ 11

  12. まとめ • まずはユーザと認識を合わせる • 手元で再現できると非常に楽 • 原因究明段階からは開発者としての能力が強く問われる 12