Morning Girl

Web API, Windows, C#, .NET, Dynamics 365/CRM etc..

Web API の使われ方を分析するクラウドサービス「Moesif」を触ってみた

f:id:sugimomoto:20190106131030p:plain

ちょうど昨日、2019年1月05日に興味深いプレスリリースがありました。

jp.techcrunch.com

Web API管理ツールは数あれど、Web APIの分析を核としたサービスは珍しいなーと思ってみていました。

でも、CEOのコメントを見ると、昨今のAPIエコシステム、FintechによるAPI提供から垣間見えるデベロッパーチャーンを如何に防ぐか? といった課題・問題意識から作られたサービスであることがわかります。

Moesifの協同ファウンダーでCEOのDerric Gillingによると、MoesifはMixpanelやGoogle Analyticsに近いが、WebやモバイルのアナリティクスではなくAPIの使われ方を見る。“APIを作って提供する企業や、それらを利用する企業がますます増えているから、API利用の顧客であるデベロッパーがどんな使い方をしているのか、彼らは何かの問題に遭遇していないか、デベロッパーチャーン(developer churn, 他社API利用への移行…浮気)をどうやって減らせばよいか、等々を知る必要性が生じている”。

そういう意味では、結構今の環境をおさえたサービスで今後の展開・発展も含めて面白そうだったので、さくっとですが触ってみました。

公式サイトはこちらから。

www.moesif.com

何ができるのか?

主に2つのユーザーを想定しているようです。

一つは「API提供企業向け」これは主にSaaSベンダーやFintechなどの企業向けです。自社で提供しているAPIがどのように使われているのか? 顧客(デベロッパー)がどのような問題に遭遇しているのか? を分析するために利用するケース。

もうひとつは「API利用ユーザー向け」。自身が利用しているAPIの利用状況、問題分析を行うために利用するケース。

プレスリリースを見ると、今の所前者のウエイトが大きいみたいですね。

デモ環境を触ってみた

というわけで、さっそくトップページからアカウントを取得して、デモ環境を触ってみました。

f:id:sugimomoto:20190106133155p:plain

ログインすると、サンプルデータが格納されているデモ環境のダッシュボードが表示されます。

ここから登録してあるAPIの利用状況、エラーの状況などを把握できます。画面下には直近に発生しているエラーの情報が表示されていますね。

f:id:sugimomoto:20190106130939p:plain

エラーの詳細を見ていくと、こんな感じの画面に。

f:id:sugimomoto:20190106131313p:plain

Web APIのエラー分析をする際にエラーが発生するまでのリクエストプロセスを分析したり、ログからPostmanのコレクションやCURLを簡単に吐き出してデバッグしやすいようにしてありました。

f:id:sugimomoto:20190106130837p:plain

これは障害切り分け、再現性の確保にかなり役立ちそう。

Moesifに送信されるデータにMetadataを付与して、リクエストを送ることもできるみたいです。ユーザー情報を付与すれば、そのまま分析材料にできますね。(このへんは、Azure Application Insightでもできた気がするけれど、もうちょっとAPIラッキングに重きをおいた感じですかね。)

最終的なサポート・デバッグ・問題解決までを視野に入れて、提供されているのがいい感じです。

Event Stream

単純なリクエストの履歴はEvent Streamで確認できます。

f:id:sugimomoto:20190106131436p:plain

Segment Chart

チャート系だと、例えば対象のルートパスのリクエスト数を可視化したり

f:id:sugimomoto:20190106131503p:plain

Time Series

ルートパスごとのタイムスライスなんかを見たりすることもできます。

f:id:sugimomoto:20190106131539p:plain

メトリックもWeb APIリクエストに含まれる情報から、いろいろ選べます。

f:id:sugimomoto:20190106133756p:plain

Geo Heatmap

あとは、Geo Heatmap。日本だとどのくらい細分化して分析できるのか気になるところ。

f:id:sugimomoto:20190106131551p:plain

Smart Diff/Correlation

プレスリリースでも書かれていた機械学習の効能としては、どのAPIリクエストの場合にエラーが発生しやすいか、相関関係を自動的に導き出してくれる機能のところのようです。

対象エンドポイントに対する様々なリクエストパターンから分析してくれます。

以下はデモ環境にサンプルとして提供されている、「PUT / settings / preferencesルートのレスポンスステータスが400になる可能性のある属性を見つけるためのサンプルレポート」

f:id:sugimomoto:20190106131339p:plain

顧客からの問い合わせがあっても、原因の特定が難しいものも多いかと思うので、こういった機械学習の活用アプローチはいいですね。

User Analytics

User情報を付与していれば、ユーザーカットで分析もできます。

f:id:sugimomoto:20190106131613p:plain

Salesforceなどのカスタマーサポートツールとも連携ができるみたいなので、このあたりはサポートを実施していく上でありがたい機能ですね。

Alert

Alertももちろん可能。SlackとEmailがデフォルトサポート?ですかね。

f:id:sugimomoto:20190106131656p:plain

こんな感じに通知できるらしいです。

f:id:sugimomoto:20190106134206p:plain

Alerts/Notifications | Moesif Docs

Moesif の機能について

というわけで、ざっくりとデモを紹介したので、もうちょっと細かな仕様を見ていきたいと思います。

分析対象にできるAPI仕様

現在対象にできるAPIの仕様は以下の4種類。

・REST ful

・GraphQL

JSON-RPC

・Ethereum(ブロックチェーンAPI?)

Ethereumはすいません、ちょっとわかんないです。

個人的に驚きなのは、GraphQL。ちゃんとGraphQL のクエリを各コンポーネントにパースして分析することができるらしいので、これはありがたそう。

APIの統合アプローチ

どうやって既存のAPIにMoesiftの分析できる環境を整えるのか? という点については、4種類のアプローチで提供されています。

www.moesif.com

サーバーサイド SDK

各Web API フレームワークのアプリケーションにSDKを追加して、設定を有効化することで開始できる構成。Moesift的にはこれを推奨しているみたいです。

www.moesif.com

Node.jsやC#など、様々な言語用のSDKが提供されています。

モバイルサイド SDK

クライアント側。例えば、サードパーティAPIもトラッキングしたい場合はこちらが推奨されるようです。

アプリ上でStripeやFacebookAPIを使っていて、それも分析対象としたい場合ですね。

AndroidiOS、ブラウザベースの3種類が提供されています。

www.moesif.com

クラウドプロキシ

追加のライブラリのインポートが不要(既存のコードに手を加える必要がない)なアプローチとして、Web APIのリクエストをプロキシして実装するパターンも提供されています。

Webhook などもこれでトラッキングできますね。

www.moesif.com

その他

分類としてはサーバーサイドに入りますが、Azure WebApps用のワンクリック拡張機能などもあるようです。

www.moesif.com

AWS LamdaやKongにも適用できるみたいですね。

Moesif 拡張プラグイン

ちょっとユニークなのが、プラグイン

エラーが発生した時に、Salesforce Desk.comやJiraにチケットを発行することができるみたいです。

www.moesif.com

Moesif API

APIのためのサービスなので、もちろん Moesif そのものもAPIを提供しています。

www.moesif.com

直接イベントログを記録するための「Collector API

ダッシュボードのカスタマイズやユーザー・組織の情報を確認・管理できる「Management API

の2種類。

Collector API を使って、SDKが提供されていない、独自の言語にも対応させることができる感じですね。

Plan

Planは以下のような感じで、無償プランもあります。リクエスト数と機能ベースでのプランで、APIを使うユーザー側であれば、無償プランでも良さげ?

www.moesif.com

f:id:sugimomoto:20190106130759p:plain

ユースケース

いくつか利用シナリオ、ユースケース例が公開されていますが、個人的に面白かったのは「API Developer Experience の改善」でしょうか。

www.moesif.com

クラウドプロキシで簡単なAPIを分析できる状態にしてみる

SDKを使うパターンは環境構築がちょっと面倒だったので、簡単に試せるクラウドプロキシをやってみました。

APIはMyJsonを使っています。GETでHelloWorldを返すだけのシンプルなものです。

Myjson - A simple json storage and hosting service

以下のようなAPIです。

https://api.myjson.com/bins/1848yw

はじめに分析するアプリケーション名や環境情報(ステージングやプロダクションなど)を入力します。

f:id:sugimomoto:20190106131842p:plain

f:id:sugimomoto:20190106131852p:plain

インテグレーション方法を選ぶ画面に移るので、クラウドインテグレーションを選択して、作成しておいたAPIエンドポイントURLを貼り付けます。

f:id:sugimomoto:20190106131917p:plain

すると以下のようなプロキシURLを取得できます。これを使うことで、Moesifにリクエストが送付されると同時に、対象のAPIへプロキシされます。

https://https-api-myjson-com-3.moesif.net/XXXXXX/bins/1848yw

試しにPostmanでリクエストしてみると、ちゃんとMyJsonAPIにプロキシされていることがわかります。

f:id:sugimomoto:20190106132144p:plain

最後にMoesifを使うユーザーを招待して、設定は完了です。

f:id:sugimomoto:20190106132042p:plain

Event Stream の画面に行くと、先程のリクエストが登録されていることを確認できました。

f:id:sugimomoto:20190106132246p:plain

クラウドプロキシの場合、Moesif用のアプリケーションIDなどをリクエストに含める必要が出てくるので、要注意という感じでしょうか。

使い所を選ぶ感じです。

URLは後で独自ドメインに切り替えることができます。

最後に

ちょっと気になったこと。以下のようなAPI GuideもMoesifは提供しているのが面白いですね。

www.moesif.com

APIそのものの環境も良くしていこう、みたいな機運が感じられて個人的にこういった活動は好きです。