Web API の使われ方を分析するクラウドサービス「Moesif」を触ってみた
ちょうど昨日、2019年1月05日に興味深いプレスリリースがありました。
Web API管理ツールは数あれど、Web APIの分析を核としたサービスは珍しいなーと思ってみていました。
でも、CEOのコメントを見ると、昨今のAPIエコシステム、FintechによるAPI提供から垣間見えるデベロッパーチャーンを如何に防ぐか? といった課題・問題意識から作られたサービスであることがわかります。
Moesifの協同ファウンダーでCEOのDerric Gillingによると、MoesifはMixpanelやGoogle Analyticsに近いが、WebやモバイルのアナリティクスではなくAPIの使われ方を見る。“APIを作って提供する企業や、それらを利用する企業がますます増えているから、API利用の顧客であるデベロッパーがどんな使い方をしているのか、彼らは何かの問題に遭遇していないか、デベロッパーチャーン(developer churn, 他社API利用への移行…浮気)をどうやって減らせばよいか、等々を知る必要性が生じている”。
そういう意味では、結構今の環境をおさえたサービスで今後の展開・発展も含めて面白そうだったので、さくっとですが触ってみました。
公式サイトはこちらから。
何ができるのか?
主に2つのユーザーを想定しているようです。
一つは「API提供企業向け」これは主にSaaSベンダーやFintechなどの企業向けです。自社で提供しているAPIがどのように使われているのか? 顧客(デベロッパー)がどのような問題に遭遇しているのか? を分析するために利用するケース。
もうひとつは「API利用ユーザー向け」。自身が利用しているAPIの利用状況、問題分析を行うために利用するケース。
プレスリリースを見ると、今の所前者のウエイトが大きいみたいですね。
デモ環境を触ってみた
というわけで、さっそくトップページからアカウントを取得して、デモ環境を触ってみました。
ログインすると、サンプルデータが格納されているデモ環境のダッシュボードが表示されます。
ここから登録してあるAPIの利用状況、エラーの状況などを把握できます。画面下には直近に発生しているエラーの情報が表示されていますね。
エラーの詳細を見ていくと、こんな感じの画面に。
Web APIのエラー分析をする際にエラーが発生するまでのリクエストプロセスを分析したり、ログからPostmanのコレクションやCURLを簡単に吐き出してデバッグしやすいようにしてありました。
これは障害切り分け、再現性の確保にかなり役立ちそう。
Moesifに送信されるデータにMetadataを付与して、リクエストを送ることもできるみたいです。ユーザー情報を付与すれば、そのまま分析材料にできますね。(このへんは、Azure Application Insightでもできた気がするけれど、もうちょっとAPIトラッキングに重きをおいた感じですかね。)
最終的なサポート・デバッグ・問題解決までを視野に入れて、提供されているのがいい感じです。
Event Stream
単純なリクエストの履歴はEvent Streamで確認できます。
Segment Chart
チャート系だと、例えば対象のルートパスのリクエスト数を可視化したり
Time Series
ルートパスごとのタイムスライスなんかを見たりすることもできます。
メトリックもWeb APIリクエストに含まれる情報から、いろいろ選べます。
Geo Heatmap
あとは、Geo Heatmap。日本だとどのくらい細分化して分析できるのか気になるところ。
Smart Diff/Correlation
プレスリリースでも書かれていた機械学習の効能としては、どのAPIリクエストの場合にエラーが発生しやすいか、相関関係を自動的に導き出してくれる機能のところのようです。
対象エンドポイントに対する様々なリクエストパターンから分析してくれます。
以下はデモ環境にサンプルとして提供されている、「PUT / settings / preferencesルートのレスポンスステータスが400になる可能性のある属性を見つけるためのサンプルレポート」
顧客からの問い合わせがあっても、原因の特定が難しいものも多いかと思うので、こういった機械学習の活用アプローチはいいですね。
User Analytics
User情報を付与していれば、ユーザーカットで分析もできます。
Salesforceなどのカスタマーサポートツールとも連携ができるみたいなので、このあたりはサポートを実施していく上でありがたい機能ですね。
Alert
Alertももちろん可能。SlackとEmailがデフォルトサポート?ですかね。
こんな感じに通知できるらしいです。
Alerts/Notifications | Moesif Docs
Moesif の機能について
というわけで、ざっくりとデモを紹介したので、もうちょっと細かな仕様を見ていきたいと思います。
分析対象にできるAPI仕様
現在対象にできるAPIの仕様は以下の4種類。
・REST ful
・GraphQL
・JSON-RPC
Ethereumはすいません、ちょっとわかんないです。
個人的に驚きなのは、GraphQL。ちゃんとGraphQL のクエリを各コンポーネントにパースして分析することができるらしいので、これはありがたそう。
APIの統合アプローチ
どうやって既存のAPIにMoesiftの分析できる環境を整えるのか? という点については、4種類のアプローチで提供されています。
サーバーサイド SDK
各Web API フレームワークのアプリケーションにSDKを追加して、設定を有効化することで開始できる構成。Moesift的にはこれを推奨しているみたいです。
Node.jsやC#など、様々な言語用のSDKが提供されています。
モバイルサイド SDK
クライアント側。例えば、サードパーティのAPIもトラッキングしたい場合はこちらが推奨されるようです。
アプリ上でStripeやFacebookのAPIを使っていて、それも分析対象としたい場合ですね。
Android、iOS、ブラウザベースの3種類が提供されています。
クラウドプロキシ
追加のライブラリのインポートが不要(既存のコードに手を加える必要がない)なアプローチとして、Web APIのリクエストをプロキシして実装するパターンも提供されています。
Webhook などもこれでトラッキングできますね。
その他
分類としてはサーバーサイドに入りますが、Azure WebApps用のワンクリック拡張機能などもあるようです。
AWS LamdaやKongにも適用できるみたいですね。
Moesif 拡張プラグイン
ちょっとユニークなのが、プラグイン。
エラーが発生した時に、Salesforce Desk.comやJiraにチケットを発行することができるみたいです。
Moesif API
APIのためのサービスなので、もちろん Moesif そのものもAPIを提供しています。
直接イベントログを記録するための「Collector API」
ダッシュボードのカスタマイズやユーザー・組織の情報を確認・管理できる「Management API」
の2種類。
Collector API を使って、SDKが提供されていない、独自の言語にも対応させることができる感じですね。
Plan
Planは以下のような感じで、無償プランもあります。リクエスト数と機能ベースでのプランで、APIを使うユーザー側であれば、無償プランでも良さげ?
ユースケース
いくつか利用シナリオ、ユースケース例が公開されていますが、個人的に面白かったのは「API Developer Experience の改善」でしょうか。
クラウドプロキシで簡単なAPIを分析できる状態にしてみる
SDKを使うパターンは環境構築がちょっと面倒だったので、簡単に試せるクラウドプロキシをやってみました。
APIはMyJsonを使っています。GETでHelloWorldを返すだけのシンプルなものです。
Myjson - A simple json storage and hosting service
以下のようなAPIです。
https://api.myjson.com/bins/1848yw
はじめに分析するアプリケーション名や環境情報(ステージングやプロダクションなど)を入力します。
インテグレーション方法を選ぶ画面に移るので、クラウドインテグレーションを選択して、作成しておいたAPIエンドポイントURLを貼り付けます。
すると以下のようなプロキシURLを取得できます。これを使うことで、Moesifにリクエストが送付されると同時に、対象のAPIへプロキシされます。
https://https-api-myjson-com-3.moesif.net/XXXXXX/bins/1848yw
試しにPostmanでリクエストしてみると、ちゃんとMyJsonAPIにプロキシされていることがわかります。
最後にMoesifを使うユーザーを招待して、設定は完了です。
Event Stream の画面に行くと、先程のリクエストが登録されていることを確認できました。
クラウドプロキシの場合、Moesif用のアプリケーションIDなどをリクエストに含める必要が出てくるので、要注意という感じでしょうか。
使い所を選ぶ感じです。
URLは後で独自ドメインに切り替えることができます。
最後に
ちょっと気になったこと。以下のようなAPI GuideもMoesifは提供しているのが面白いですね。
APIそのものの環境も良くしていこう、みたいな機運が感じられて個人的にこういった活動は好きです。