Back to Blog
TutorialOctober 1, 20228分

サンプルシリーズ: Http-Client-Requests

ReSTインターフェースは人気があり豊富です。Yahoo Financeを例にして、layline.io内でHttp-Clientリクエストを設定する方法をお見せします。

サンプルシリーズ: Http-Client-Requests

何をお見せするか

この記事では、Yahoo Finance APIを例として使用し、REST-APIをクエリするlayline.ioのWorkflowを迅速に設定する方法を紹介します。Yahooから株式のクォートを頻繁に取得するWorkflowを作成します。

Http-Serviceの設定

まず、Web-UIを起動し、新しいプロジェクト「sample-http-client-yahoo」を作成します。それから、Http-Service Asset「Yahoo-Finance-Source」を作成します。

サービスとは何か?

layline.ioのサービスは、複雑なインターフェース定義をカプセル化し、他のAssetsに対して簡単な名前付き関数呼び出しとして公開する特定のAssetsを表します。REST-APIの定義はこのパターンに適合し、例えばデータベースのステートメントも同様です。この目的のために、layline.ioはHttp、JDBC、Aerospikeなどの特定のインターフェースタイプに特化した多数のService Assetsを提供しています。今回の例では、Yahoo Finance APIにアクセスするためにHttp-Service Assetを使用します。

Yahoo株価REST-API

Yahoo Financeは、上場企業の金融情報にアクセスするための非常に包括的なAPIを提供しています。このデモでは、プロキシサービスとして機能するRapid-APIを通じて進めます。Rapid-APIを知らない場合は、ぜひチェックしてみてください。とてもクールです。

サービスの正確なURLとその説明はこちらで確認でき、パス「market/v2/get-quotes」をチェックしてください。

Http-Serviceの設定

Configuration Centerを使用してHttp-Service Assetを作成します:

ホスト

次に、データにアクセスできる一般的なホストアドレスを定義します。これは認証情報を必要とせず、後で定義するAPIキーが必要です。

リクエスト

関数を定義する前に、layline.ioがリクエストと対応するレスポンスを理解していることを確認します。リクエストは任意の数を定義できます。ここでは「GetQuotes」のみを定義し、指定された数の株式ティッカーシンボルに対する株価と関連データを取得します。これはリクエストのパスを定義する場所でもあります。さらに、APIを呼び出すために必要なパラメータ(地域とシンボル、RapidAPIキーとホスト)を設定します。次のステップでSource Assetを定義するときに値を提供します。

他のリクエストを使用したい場合は、ここに追加するだけです。

レスポンス

次に、リクエストに対する可能なレスポンスを定義します。JSONドキュメントを「Quotes」で定義していることを期待します。layline.ioは強く型付けされています。私たちの場合、レスポンスを内部の「AnyMap」タイプに単純にマッピングします。追加のレスポンスとして、興味のある3xxから5xxの失敗も考えられます。

関数

リクエストとレスポンスを定義したので、内部で公開したい抽象関数を作成できます。

「GetQuotes」という名前の関数を作成します。これは、上で作成した同じ名前のリクエストを参照し、このリクエストに対する可能なレスポンスを割り当てます(「Quotes」)。

これで、関数「GetQuotes」を単に呼び出し、必要なパラメータを渡すことでYahoo Finance APIにアクセスできます。以下でService Sourceを定義するときにその例を見ます。

初めてのHttp-Serviceの設定にはかなりの手間がかかりますが、同じホストへの追加リクエストは非常に迅速に追加できます。

サービスソースの設定

最新の株式データを常にAPIにクエリし、Workflow内の通常のデータソースとして扱いたいと考えています。これにはService-Source Assetを定義する必要があります。Service-Source Assetは、Service Assetsで定義された関数を使用する特別なタイプのSourceです。先ほど定義したものと同様です。

定義したHttp-ServiceをこのSourceにリンクします:

最後に、APIのポーリング頻度と実際のAPIコールパラメータを設定します。

cronテーブルのような設定を使用して、10秒のクエリ間隔を定義します。Object nameは、各クエリによって返されるオブジェクトの名前を示します。各レスポンスオブジェクトを区別するために、オブジェクト名に日付と時刻を追加します。ポーリングには定数パラメータを使用します。これは、動的なパラメータの代わりにハードコードされたパラメータをService Functionに渡したいという意味です。したがって、この例では常に同じ株式ティッカーシンボルに対して関数を呼び出しています。Constant Typeは、呼び出したいService Functionのパスとそのリクエストオブジェクトを示します。現在、これは手動で入力する必要がありますが、まもなくユーザーガイドが追加されます。ここではYahoo.Finance.Functions.GetQuotes.Requestを入力します。

最後に、GetQuotes関数に渡したいパラメータをJSON形式で提供します。Http-Service Assetを作成したときにそれらを定義したことを思い出してください。

以上で、実際のWorkflowを作成できます。

Workflowの作成

Workflow UIに移動し、Stream-InputとJavaScript Processorを使用してシンプルなWorkflowを設定します。

Service-Input Assetの設定で、先ほど作成したHttp-Sourceにリンクします。

JavaScript Processorには、受信メッセージをストリームログに出力する非常にシンプルなスクリプトを追加します。これにより、UIのAudit Trailを通じて結果を確認できます。もちろん、通常は結果をログに出力するのではなく、Workflow内で下流に処理します。

クラスターへのデプロイと実行

Workflowをテストする準備が整いました。そのためには、Reactive Engine Clusterにデプロイする必要があります。ラップトップ上のもの(シングルノード)を使用するか、他の場所にある大規模なlayline.ioクラスターにデプロイできます。デプロイするには、プロジェクトのDEPLOYMENTタブに切り替えます:

プロジェクトをデプロイするためのEngine Configurationを作成します。これは、デプロイしたいプロジェクトの部分を定義します。今回の例では、定義した1つのWorkflowと、それに付随するEnvironment Assetです。

ローカルクラスターにデプロイしたいので、「Deploy to Cluster」を選択し、事前に定義した「Local Cluster」設定を選びます。すべてのデプロイメントにはタグが必要です。「yahoo-quotes-」に続けてマクロ「${build-timestamp}」を使用してデプロイメントを識別します。マクロはデプロイメント転送時にタイムスタンプに置き換えられます。これにより、各デプロイメントで常に異なるタグが得られます。

作成したすべてのWorkflowsをデプロイすることを選択します(1つだけ)。最後に、「TRANSFER DEPLOYMENT TO CLUSTER」をクリックしてデプロイメントの転送を開始します(デプロイ先のクラスターが稼働していることを確認してください)。

デプロイメントがうまくいった場合、次のように表示されます:

そうでない場合は、問題を修正する方法をガイドするエラーメッセージが表示されます。

デプロイメントの有効化

デプロイメントを有効化する準備が整いました。これには、「CLUSTER」タブに切り替えます。これにより、「クラスター」に関するすべての情報が表示されます。複数のクラスターを管理している場合は、左上のドロップダウンボックスから正しいものを選択してください。

デフォルトデプロイメントにする

左のツリーから「Deployment Storage」を選択します。ここには、選択したクラスターに現在知られているすべてのデプロイメントが表示されます。例のスクリーンショットでは、「Deployment Configuration」セクションに1つの「DeploymentRoot」が表示されています:これは常に存在する基本的な空のデフォルトデプロイメントです。2つ目の「yahoo-quotes-20221011093550」は、クラスターに転送したデプロイメントです。新しいデプロイメントをクラスターで有効化するには、それを選択し、「is the cluster's default deployment」のチェックボックスをオンにします。

スケジュール

デプロイメントがクラスターでアクティブになったので、Workflowのインスタンスが実行されているかどうかを確認する必要があります。これが初めてこのWorkflowをデプロイした場合、答えはおそらく「いいえ」です。確認してみましょう:

  • 「Cluster」タブを選択
  • 左のツリーで「Scheduler Master」エントリを選択

  • スケジューラー設定ボックスでツリー内のスケジューラーノードを選択
  • 次に、インスタンスの目標数が少なくとも1に設定されていることを確認します。より多くのインスタンスを開始するには、より高い数に設定します。数秒以内にインスタンスが開始されるはずです。これを行うのは一度だけで済みます。次回Workflowをデプロイするとき、Reactive EngineはこのWorkflowから実行したいインスタンスの数を記憶します。デプロイメントの一部としてスケジューラー設定を定義することもできます。ただし、それは別のショーケースのためです。

エンジンステータス

「Engine」タブに切り替えます。すべてのエンジンカテゴリが緑色であることを確認します。また、左のツリー内の個々のAssetsのステータスも確認します。

結果の確認

Workflowをスケジュールしたら(上記)、数秒ごとに結果を求めてYahoo Financeインターフェースをポーリングし始めます。

Audit Trailタブに移動して、JSON形式でストリームログに表示される結果を確認します:

もちろん、この出力はデモ目的のみです。実際の作業環境では、このデータをWorkflow内で下流に処理します。

まとめ

このショーケースは、Http-Client-Workflowを迅速に作成する方法を強調しています。そして、以下のような多くの機能がすぐに利用可能です:

  • リアクティブ — リアクティブ処理パラダイムを採用。コアでリアクティブストリーム管理に完全に基づいています
  • 高いスケーラビリティ — 1つのエンジンインスタンス内および複数のエンジンや分散ノードを超えてスケールします
  • レジリエンス — 分散環境でのフェイルオーバーセーフ。24/7のフル稼働とアップグレード可能性
  • 自動デプロイメント — 変更された設定をワンクリックでデプロイ
  • リアルタイムとバッチ — 同じプラットフォームを使用してリアルタイムとバッチデータ統合を実行
  • メトリクス — お気に入りの監視およびアラートツールキット(例:Prometheus)で使用するための自動メトリクス生成

ここで説明するには機能が多すぎます。詳細については、ドキュメントを確認するか、hello@layline.ioまでお気軽にお問い合わせください。お読みいただきありがとうございます!

リソース

#リソース
1Github: Yahoo Finance用サンプルHttp-Client(プロジェクトのディレクトリ_test_filesに入力テストファイル)
Share:

Enjoyed this article?

Subscribe to get more insights delivered to your inbox.