Runscopeインタビュー - APIテストとモニタリング

10月20日(火),APIのモニタリングとテストを提供するベンダのRunscopeは,主要なAPIのトランザクションを対象とするリアルタイム監視ソリューションのLive Traffic Alertsを,一般向けに提供開始すると発表した。稼働中のAPIトラフィックのログを取得して,おもなAPIトランザクション障害や例外の発生を,ほぼリアルタイムで開発者に通知する機能を備える。
InfoQは,同社副社長で開発者リレーションを担当しているNeil Mansilla氏から,同社のプラットフォームの将来的なビジョンと,提供する価値について話を聞いた。Runscopeは,SaaSベースのAPIテストおよびモニタリングプラットフォームに加えて,プライベートAPI用のオンプレミス監視エージェントも提供している。

InfoQ: Runscopeを開発したきっかけは何でしたか?モニタリングやテストを行うツールが,新たに必要な理由は何でしょう?

Neil Mansilla: 直接の動機は,優れたソフトウェアを開発し提供する企業を支援したかったためです。インフラストラクチャは進化を続けています。単一のコンポーネントでユーザエクスペリエンスを提供することは,今日ではほとんどなくなりました。新しい形のアプリケーションを作り上げているのは,組織の内外にある,さまざまなサービスの組み合わせです。新種のアプリが考え出されると,APIやマイクロサービスの提供方法には,ひとつの大きな変化が引き起こされます。

APIを提供しようとする(内部での利用,外部への提供いずれでも),あるいはアプリケーションに統合しようとする企業には,その開発サイクル全般において特にAPIに注目した,包括的なテストフレームワークが必要です。APIプロバイダにとって,コードレベルのユニットテストや統合テストにのみ依存したテストや,API利用側をスタブやモックに頼ったテストでは,とても十分であるとは言えません。テスト対象APIがローカル開発ステージにあるにせよ,グローバルに実運用中のAPIが対象であるにせよ,ランタイムレベルでAPIをテストしモニタする必要があります。多くの企業にとって,Runscopeは,利用しているAPIの実際のパフォーマンスや,問題を検出した場合の修正方法に関する情報源になっています。稼働時間の監視と機能テスト,そして[Live Traffic Alertを使った]リアルタイムなトラフィックモニタリングという,Runscopeのユニークな機能の組み合わせは,ミッションクリティカルなAPIのライフサイクルのすべてを対象とした,パフォーマンスの全体像を開発チームに提供します。

InfoQ: Runscopeは,評価やテスト以外の広範なAPI品質にも対応していますか?

Neil Mansilla: Runscopeは,稼働テストとしてpingやユニットテストを行うようなものではありません。JSONスキーマ評価を含むAPIとそのデータ構造のテストを実行し,パフォーマンスや正確性を視覚化します。ネットワークパフォーマンスやレイテンシ,データバリデーションといった,APIに関するもっと広範な状況に着目したツールなのです。非常に複雑なユースケースに対しても十分な信頼性を確保することのできる,極めて機能的なAPIテストを作成することができます。

InfoQ: RunscapeをTDDサイクルの一部としてAPI開発に利用することは可能なのでしょうか?

Neil Mansilla: ソフトウェアは絶えず変化しますが,エンジニアが新たなエンドポイントや機能を追加したとしても,ソフトウェア機能として文書化ないし公開されているコントラクト(contract)は常に維持されていなくてはなりません。Runscopeは,DevOpsやQA,API,アプリ開発といったさまざまなチームが,ローカルでの開発やステージング,あるいは運用環境でのテストや監視に利用することができます。ユニットテストがコードを検証するのに対して,APIテストの検証は,必ずしも一定ではないサービスコントラクトを対象としています。コントラクトは厳密に定義されているので,開発の時点で,運用時にも適用可能なテストを作成しておく必要があります。SendGrid内部でも,自社のミッションクリティカルなAPIを新規リリースする場合には,機能テストや統合テスト,回帰テストの作成にRunscopeを使用して,企業の信頼向上とサポート時間削減を実現しています。

TDDを導入しているのであれば,Runscopeによるテストの開発,管理,実行の簡略化が,より優れたAPIの開発に役立つでしょう。チームメンバのコラボレーションを容易にするWebベースのダッシュボードも,さまざまな課題を処理してくれます。APIの開発時には, 開発者自身のマシン上でテストをローカル実行することができます。その後の開発とデプロイを,ステージングやプリプロダクションなどの環境で引き続き実施する場合でも,ローカルで作成したテストを各コンテキストで再利用することができます。ロールアウトの後に,運用チームが同じテストを使用してAPIを監視することも可能です。

Runscopeを使ってテストの作成と実行,バックエンドコードのリファクタといったサイクルを続けることで,テスト実行と結果の包括的なログが取得できます。テスト実行中の各リクエストの詳細な – URIやパラメータ,ヘッダ,ボディなどの完全な情報を保持したログを,ダッシュボードで集中的に監視することも可能です。

InfoQ: QAチームのメンバにとってRunscopeは,機能テストや回帰テスト,ロードあるいはストレステストなどで,どのように活用できるものなのでしょうか?

Neil Mansilla: QAチームを支援するファクタとして重要なのは,コードを一切必要としないことです。Runscopeはチームやビジネスが必要とするような,複雑な関係や価値を含んだAPIシナリオに対処した,クリーンなUIとフレームワークを提供します。QAテスタはエンジニアや開発者ではない場合も多いので,DevOpsやAPIアーキテクトと同じツールを彼らが使用できることは,開発ライフサイクルを通じたコラボレーションを合理化する上で有効です。Runscopeを使うことで,QAチームは,エディタを開いてコードを編集する必要なく,データ検証や応答時間などAPIの全面的なテストを行うことができます。

InfoQ: DevOpsや運用チームが抱えている問題には,どのように対処できるのでしょう?

Neil Mansilla: 同じ組織にいるさまざまな人々,特にCIやCDプロセスを導入しているチームは,ソフトウェアライフサイクル全体にわたってRunscopeを使用しています。RunscopeはJenkinsプラグインやWebフックをサポートしていますし,独自のCIプロセスをプラグインする機能を備えたAPIもあります。CD(継続的デリバリ)サービスの一環としては,AWS CodePipeline内のインテグレーションのひとつでもあるので,APIテストの成功時にデプロイの次ステップを起動することや,フェール時にデプロイを中断することも可能です。

Omnifoneなどのユーザも,マイクロサービスインフラストラクチャの監視にはRunscopeを使用しています。DevOpsエンジニアがRunscope On-Premise Agentを使ってローカルマシン上のステージング環境で実行したテストを,実運用のエンドポイントをモニタしているQAチームが再利用することも可能です。さらに同じテストをDevOpsに戻して,新たなバージョンやエンドポイントの開発時に利用することもできるのです。StackやHipChart,PagerDuty,VictorOpsなどのポピュラーな通知プラットフォームとの統合機能が最初から組み込まれていますから,適切なチームに問題の発生を連絡することもできます。

InfoQ: コラボレーションやセキュリティ,レポート,あるいは監視機能の強化といったエンタープライズ機能には,どのようなものがありますか?

Neil Mansilla: 企業ユーザ向けにはSAML,プライオリティのサポート,専用インフラストラクチャやSLAなどの機能を提供しています。APIテストの生成と管理をプログラムから実行する機能を完備したAPIや,組織外のパートナと共同作業する要求を共有するための機能も備えています。

InfoQ: Swagger 2.0スキーマをサポートしたのはなぜですか?

Neil Mansilla: Runscopeは数多くのフォーマットをサポートしていて,Swaggerの他にHARやVCR,Postmanからのインポート機能があります。今後はさらに多くのフォーマットをサポートして,Swaggerなどで既に実現しているように,さまざまな定義をインポートすることで,APIテスト作成をさらに容易にしたいと考えています。私たちの目標は常に,開発者のよりよいAPI開発とビジネス構築を支援するツール開発にあります。インポート可能なフォーマットの拡大は,テストやモニタリングのプロセスをさらに簡略化する上で重要なのです。

InfoQ: OAuth 2.0のグラントタイプ(grant type)のサポート範囲はどのようになっていますか?

Neil Mansilla: 製品としてサポートしているのはHTTPベーシック認証とOAuth 1のみです。ただし認証ヘッダなどのカスタムヘッダの設定が可能ですので,OAuth 2のベアラやMACトークンの転送に使用することができます。RunscopeのAPIテストの基本的なユースケースはリソース(の保護)に関するもので,認証フローではありません。ですから,一般的な使用では,テストセットアップ時に長期のテスト用トークンを初期変数として保存する方法を取ります。しかしながら,OAuthの(リフレッシュトークンを使った)バックエンド要求をテストのステップとして実装することで,新しいアクセストークンを動的にフェッチすることも可能です。

テスト実行前に(あるいはリクエスト間でも)JavaScriptを実行することも簡単にできるので,HawkやJWT,さらには自作の認証フローなど,他の認証スキーマによるリソース保護のテストにも対応します。CryptoJSなどのライブラリやその他の組み込み関数を使えば,シグネチャやダイジェストの算出も容易です。

InfoQ: Runscopeが動作基盤としているテクノロジは何でしょう?高レベルのアーキテクチャ構造についていくつか説明して頂けますか?

Neil Mansilla: Runscopeの創設者であるJohn SheehanとFrank Strattonは,創立当初から自動化,開発ツール,レルム(realm)管理ツール,ライブラリとフレームワークといった分野を重視してきました。その中で開発された重要なツールが,デプロイ管理のフロントエンドツールとして当社のマイクロサービスをすべて管理しているPrometheusであり,サービスディスカバリやHTTP要求の非同期実行,同一要求の再試行などの機能を提供するHTTPライブラリのSmart-Clientなのです。

InfoQ: 今後のロードマップの項目で,コミュニティに公開できるものは何かありますか?

Neil Mansilla: SSLクライアント認証で保護されたAPIのテストとモニタリングを行うために,クライアント証明書をサポートします。クライアント証明を使うことで,APIプロバイダは,ベーシック認証や単純なAPIトークンあるいはパスワードよりも強力な方法で,APIユーザの身元を確認することができるようになります。Runscopeのユーザは,PEMエンコードされた証明書とキーファイルを使って複数のテスト環境を設定し,個々の要求に対してクライアント認証を切り替えることが可能です。この機能ではAPIエンドポイントのテストとモニタに加えて,証明書が無効あるいは失効している場合の認証失敗をレポートすることもできます。クライアント証明書のサポートは,ラージプランとエンタープライズプランで利用可能です。

InfoQ: Live Traffic Alertsとは何なのでしょう?どのような通知チャネルがサポートされていますか?実運用中の環境で監視を行うことによって,パフォーマンスにはどのような影響がありますか?

Neil Mansilla: Live Traffic AlertsはAPIサービスを対象とした,リアルタイムのトラフィック監視ソリューションです。当社の最新機能であるLive Traffic Alertsのローンチをとてもうれしく思っています。このSaaS機能では,稼働中のAPIトラフィックのログを取得して,おもなAPIトランザクション障害や例外をほぼリアルタイムに検知して,開発者に通知します。これにより,ユーザの印象を損ねたり,利益損失につながるような問題の解決を可能にします。

Live Traffic Alertsは,高性能かつ低遅延なRunscopeのグローバルトラフィックゲートウェイとオンプレミスで稼働するエージェントを活用して,開発者やDevOpsチーム,API利用者による評価指標の定義を支援します。ビジネスにおいて重要なこれらの指標を,パブリックAPIとプライベートAPIを問わず,1行のコードも書かずに事前確認することができるのです。主観的に発生してシミュレーション不可能なAPIコール例外をモニタすることで,異常値の捕捉やAPIコール障害の詳細な確認に加えて,そのような情報をチームで共有したり,さらには障害を再現することも可能です。また,重要なビジネスメトリックやイベントを対象として,運用中のAPIコールを監視して通知したり,ダッシュボードに表示することもできます。

設定された基準に従ってアラートを発生させることもできます。設定する基準はAPIコール要求および応答の任意の部分に加えて,JSONやXMLパラメータの評価を行うことも可能な柔軟なものです。指定した条件にマッチするフルロギングを取得することで,条件に一致する最新の履歴,全要求および応答の詳細などといった特定のデータを調査したり,ワンクリックでフェールしたテストを再実行することも可能です。このようにして抽出した情報はいずれも,最重要事項を一目で確認可能なカスタムダッシュボードに表示することができます。Live Traffic Alertsは自動エスカレーションを使用していますので,最初の10件,100件,1000件といった,数を指定した通知を受け取ることも可能です。現時点ではFlowdoc, HipChat, Slack, webフック,Eメールとの統合を提供しています。