はじめに
クラウドサービスを使っていて原因不明のバグに遭遇したとき、「これ絶対自分の実装ミスだよな...」と思い込んで、ひたすらコードを見直したり、ログを漁ったりしていませんか?
私もそうでした。
先日、AWS IVSとGCP Firebase Authenticationで不具合に遭遇した際、最初は完全に自分の実装を疑っていました。
クラウドサービスにもバグは普通にあります。
当たり前の話なんですが、意外と忘れがちです。
実際に遭遇したケース
AWS IVSでの不具合
AWS IVSを使用したプロジェクトで、リリース後に映像関連の不具合が2回ほど発生しました。
ログを見ても原因不明。コードを見直しても問題なし。
数日間調査を続けましたが、結局原因が特定できませんでした。
諦めてAWSサポートに連絡したところ、AWS IVS自体にバグがあることが判明。
ベンダー側で修正対応をしてもらえました。(修正完了まで2週間程度かかりましたが)
GCP Firebase Authenticationでの不具合
Firebase Authenticationでも似たようなケースがありました。
特殊なブラウザ操作を行った際に、認証情報を管理するIndexedDBが作成されず、getRedirectResult
という関数がタイムアウトするまで処理が終わらない問題が発生。
2日程度調査して再現条件は特定できたものの、SDK内部で発生している問題だったため、これ以上の調査は無理でした。
GCPの担当者に連絡したところ、SDK側のバグであることが判明し、現在調査を進めてもらっています。
ベンダー側のバグは自力では解決できない
クラウドサービスの提供する機能にも普通にバグはあるということを痛感しました。
しかも、自分の実装ミスなら、調査を続ければいずれ原因が見つかりますが、ベンダー側の問題の場合、ソースコードを追えない以上、どこかで限界が来ます。
そこで無駄に時間を消費するより、早めにサポートに相談したほうが効率的です。
サポート費用 vs エンジニアの人件費
「サポートのサブスクリプション費用が高い」と感じるかもしれません。
確かに高いです。月額数万円〜数十万円は決して安くありません。
でも、エンジニアの人件費と比較してみてください。
もし泥沼にハマって数日〜数週間を無駄にしたら、サポート費用の何倍ものコストが発生する上に、問題が解決しない可能性すらあります。
今回のケースでも、早めにサポートに頼っていれば、数日分の調査時間を削減できていました。
サポートを活用するタイミング
では、どのタイミングでサポートに連絡すべきでしょうか。
私が考える基準は以下です。
- 再現条件は特定できたが、原因が不明
- SDK/サービス内部の動作が怪しい
- 公式ドキュメント通りに実装しているのに動作しない
- 半日〜1日調査しても進展がない
特に、「これ以上調査しても自分たちでは原因が特定できない」と感じたら、それがサポートに連絡するタイミングです。
サポートコストを抑える裏技
GCPやAWSには、営業担当の方をつけてもらうことができます。
担当の方によるかもしれませんが、私のプロジェクトの担当者は、不具合などがあってもとりあえず気軽に相談してほしいとおっしゃってくれているため、クラウドサービス側の不具合の可能性が高い場合などは、サポート費用をかけずに、クラウドサービスの技術担当者の方に調査していただいています。
あとは、サポートが必要になった月だけサポート契約を行う方法もあります。
まとめ
クラウドサービスは便利ですが、完璧ではありません。
ベンダー側にもバグは存在します。
不具合に遭遇したとき、自分の実装を疑うのは大切ですが、ある程度調査して原因が特定できなければ、サポートに気軽に相談してみてください。
結果的に自分の実装ミスだったとしても、それはそれで学びになります。
もしベンダー側の問題だったら、早期に原因が特定でき、無駄なリソースを消費せずに済みます。
サポート費用は高いかもしれませんが、エンジニアの時間はもっと貴重です。
困ったら、気軽にサポートを活用しましょう。