IoTソリューションのオブザーバビリティについて考えてみる
こんにちは。SREチームの岡谷です。
自分は、Luupで使っているソリューションに限らず、多くのIoTの仕事をしてきているので、IoTソリューション毎に考えうるメトリクスと取得する場所についてちょっと考えてみたいと思います。
NFC
みなさんが良く使っているSuicaなどもNFCの一種です。もちろんシステムによってとるべきメトリクスは違ってくるとは思うのですが、自分が関わった仕事だと読み取り失敗率というのが多くの場合、重要になってきます。
読み取り失敗するとそもそもデータが読み取れず何も実現できなくなってしまいます。そのため、読み取り失敗しないようにプロダクトデザインを変える、読み取りをするオペレーションを変えるなど物理的なものを変えなければならなくなってしまいます。
そして読み取り失敗率というのは読み取りデバイス(多くの場合はモバイル端末)で計上するものになります。
Bluetooth
AirPodsなどもBluetoothで実装されています。Bluetooth機器にはセントラルとペリフェラルという概念があります。
セントラルが親機で、ペリフェラルが子機です。iPhoneがセントラル、親機で、AirPodsがペリフェラル、子機です。
多くの場合、セントラルからペリフェラルに対して命令するような作りになっています。ペリフェラルが動かないということが発生した場合、セントラルに何らかの失敗が通知されます。これらはインターネットを介していないのでその失敗の通知はセントラルに閉じてしまいます。
上記のようにやっぱりモバイル端末で失敗を計上することになります。
IoT機器って…
上記の例からわかるようにセルラー通信を介さず、直接モバイル端末と何らかの通信するIoT機器の場合、モバイル側でのメトリクス取得が非常に重要になります。モバイルでメトリクスを取得しようとするとそれ用のAPIを作ってという方法は考えうるのですが、基本的にはモニタリングするためのSDK(APMやRUM)を入れるのがお手軽だと思います。では取得するためにソリューションを考えてみましょう。
APM/RUMについての補足
APM(Application Performance Monitoring)とRUM(Real User Monitoring)について少し補足します。
APMは、一般的にはアプリケーションの内部動作を詳細に監視し、パフォーマンスの問題を特定・分析するためのツールです。
RUMは、一般的には実際のユーザーがアプリケーションをどのように利用しているかをリアルタイムで監視するツールです。
一般的な違いについては下記のようになります。
項目 | APM | RUM |
---|---|---|
対象 | バックエンド | フロントエンド |
データソース | サーバー、アプリ内部のトレース | 実際のユーザーの行動 |
主な指標 | レスポンスタイム、DBクエリ時間、CPU使用率 | ページロード時間、ユーザー行動、エラーレート |
目的 | システムの最適化、障害検出 | ユーザー体験の向上、UX分析 |
よくある比較ではフロントエンドとバックエンドという切り分けでユースケースを切られることが多いですが、モバイルに関してはどちらのケースもあります。今回のユースケースについてはモバイルに接続されている/通信する外部機器(IoT機器)との状況のインターフェースなので、カスタムメトリクスさえ送信できればどちらでも問題ないといえば問題ないといえるでしょう。
モバイルで使えるAPM/RUM
取りたいメトリクスはIoTソリューションとの通信のステータスですから、よくあるモバイルAPMやRUMで取れる基本的なパフォーマンスの指標ではありません。APMではカスタムメトリクスとして送信する方法でメトリクスを送信するしかありません。その条件で考えうるものとコストを考えてみます。
NewRelic
NewRelicではAPMを使うことになります。
現在の最新のHP見たところコストについては問い合わせ状態だったのですが、過去はMAUで計上されていたようです。
過去の情報を参照してみると10万MAUにつき、1499 USD/月となっており強気ではあるもののデータ量で起算されていないので送り放題ですね。
Datadog
DatadogではRUMを使うことになります。
1000セッションあたり 1.88USD/月らしいですが、セッションの管理はSDK頼りですし、モバイル側のセッションが維持し続けるということはないでしょう。メトリクス送りまくると金食い虫になること請け合いです。
前述のNewRelicに合わせて10万MAUくらいいるかつ毎日使うようなアプリケーションの場合、1.88 x 100000(MAU) / 1000(セッション) x 30(日/月) = 5640 USD/月となります。NewRelicの三倍以上のお値段になります。
Firebase Performance Monitoring
Firebase Performance Monitoringはなんとタダです。今までそれなりにコストかかるものだと調べてきたのにタダと言われると怖いですね。Firebaseはインフラ(Google Cloud)なのでインフラを切り替えるブロッカーとしての機能としてタダで提供しているのかもしれません。
そういう意味ではGoogle Cloudに依存すると高くつくかもしれませんが、Luupの場合すでに依存しているので、これを使うのは安く済みそうです。(まだ計画はないです)
まとめ
セルラー回線以外のIoT機器の通信はモバイル側で取らざるを得ないこと、モバイルでのメトリクス取得を進めるにたりブロッカーとなりそうなコストについて見てきました。
IoT分野ではオブザーバビリティの向上が大変難しいのですが、これらの組み合わせで向上させることも可能です。諦めないでオブザーバビリティ向上に努めたいですね。
最後に
Luup では、一緒にIoTソリューションのオブザーバビリティを向上してくださるソフトウェアエンジニアを積極的に募集しています。
カジュアル面談も実施しておりますのでぜひお気軽にお声掛けください。
Discussion