paint-brush
プロキシを使用して API パフォーマンスを強化する@stdevk
353 測定値
353 測定値

プロキシを使用して API パフォーマンスを強化する

ST Dev 5m2023/06/29
Read on Terminal Reader

長すぎる; 読むには

要約すると、API パフォーマンスの向上は、ユーザー エクスペリエンスの向上、生産性の向上、スケーラビリティの向上、コスト削減、競争上の優位性につながる可能性があり、企業と開発者の両方にとって望ましい目標となります。したがって、API ゲートウェイの基本アーキテクチャ、Nginx で RPC サービスをルーティングするためのプロキシの設定方法、およびその利点と欠点について説明します。
featured image - プロキシを使用して API パフォーマンスを強化する
ST Dev  HackerNoon profile picture
0-item
1-item
2-item

API のパフォーマンスを向上させたいと考えるのには、いくつかの説得力のある理由があります。

  1. ユーザー エクスペリエンスの強化: より高速で応答性の高い API により、クライアントやエンドユーザーによりスムーズなユーザー エクスペリエンスを提供できます。パフォーマンスが向上すると、レイテンシが短縮され、応答時間が短縮され、データ取得が迅速化され、より効率的で満足のいくユーザー エクスペリエンスが実現します。
  2. スケーラビリティの向上: 高性能サーバーは、より多くのリクエストと同時ユーザーを処理できるため、スケーラビリティが向上します。ユーザーベースの拡大に伴い増加するトラフィックとデータを処理する必要がある成長企業にとって、スケーラビリティは非常に重要です。 API のパフォーマンスが向上すると、企業は応答時間やサービス品質を犠牲にすることなく、増大する需要に対応できるようになります。
  3. 競争上の優位性: 高性能 API は企業に競争上の優位性をもたらします。ユーザーやクライアントは、より速い応答時間、より優れた信頼性、優れた全体的なパフォーマンスを提供するサービスを好む傾向があります。優れた API エクスペリエンスを提供することで、企業は競合他社との差別化を図り、より多くのユーザーや顧客を引き付けることができます。

チュートリアルの学習目標

API パフォーマンスの向上を実現するために、集中管理システムとしてプロキシを設定します。プロキシは、クライアントとサーバーの間の仲介者として機能します。 API リクエストを行うクライアントと API をホストするサーバーの間に位置します。クライアントが API リクエストを行うと、最初にプロキシを経由し、次にプロキシがリクエストをサーバーに転送します。サーバーは要求を処理し、応答をプロキシに送り返し、プロキシはそれをクライアントに転送します。これにより、プロキシは必要に応じてリクエストまたはレスポンスをインターセプト、変更、またはキャッシュできるようになり、API パフォーマンスを最適化する機会が得られます。

前提条件

macOS (またはLinux ) の場合は、システムにHomebrewをインストールします。

Mac に Nginx をインストールする

macOS に Nginx をインストールするには、次の手順があります。


1️⃣ Homebrew をダウンロード

macOS に Nginx をインストールするには、 Homebrew がシステムにインストールされている必要があります。 Homebrewは、さまざまな Unix アプリケーションを簡単にインストールできる Mac オペレーティング システム用のパッケージ マネージャーです。 Homebrewをお持ちでない場合は、次のリンクを使用してインストールしてください: https://brew.sh/

または、ターミナルで次のコマンドを入力するだけです。

 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"


2️⃣ Nginxをインストールする

homebrew パッケージ インストーラーは、macOS にNginx Web サーバーをインストールするのに役立ちます。 Nginxをインストールするには、次のコマンドを使用します。

 brew install nginx


3️⃣設定ファイルを編集する

デフォルトでは、Nginx 構成ファイルの場所は次のとおりです。

 /opt/homebrew/etc/nginx/nginx.conf

Nginx 構成ファイルを編集するには、任意のテキスト エディターを使用できます。たとえば、 nanovim 、またはemacsを使用できます。 nano を使用して Nginx 構成ファイルを編集するコマンドの例を次に示します。

 nano /opt/homebrew/etc/nginx/nginx.conf

ポート 80 でリッスンするサーバー ブロックを編集します。

サーバーブロックの検索


続いて、以下の 3 つの Ethereum メインネット RPC エンドポイントを含めます。

 location /nodereal { proxy_pass https://eth-mainnet.nodereal.io/v1/<API KEY>; proxy_set_header Content-Type "application/json"; } location /RPCProviderA { proxy_pass <https URI endpoint>; proxy_set_header Content-Type "application/json"; } location /RPCProviderB { proxy_pass <https URI endpoint>; proxy_set_header Content-Type "application/json"; }

必要に応じて複数の RPC エンドポイントを含めて、その後構成ファイルを保存することができます。

構文エラーがないことを確認するために、Nginx 構成ファイルのテストを続行してください。

 nginx -t

🎊 エラーが存在しない場合は、次の結果が表示されます。


nginx: 設定ファイル /opt/homebrew/etc/nginx/nginx.conf の構文は問題ありません

nginx: 設定ファイル /opt/homebrew/etc/nginx/nginx.conf テストは成功しました

Nginx サーバーを再起動するには、次のコマンドを実行してください。

 brew services restart nginx


4️⃣ Nginx プロキシ経由で API メソッドを送信する

Nginx プロキシをテストするために、 eth_gasPriceを介してイーサリアムのガス価格をチェックしています。以下に示す JSON ペイロードを使用して、curl コマンドを送信して、ローカル マシン (「 http://localhost 」) で実行されているサーバーの「/nodereal」の場所に HTTP POST リクエストを送信します。

 curl -X POST --data '{"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":1}' -H "Content-Type: application/json" http://localhost/nodereal


✅ {"jsonrpc":"2.0","id":1,"結果":"0xdec36a8d1"}

curl コマンドの実行後に受信した応答は、 Ethereumノードからの JSON-RPC 応答です。応答の簡単な説明は次のとおりです。

  • "jsonrpc":"2.0": このフィールドは、応答で使用される JSON-RPC プロトコルのバージョンを示します。
  • "id":1: このフィールドは、この応答が対応するリクエストの識別子です。この場合、リクエストの「id」は 1 でした。「result」:「0xdec36a8d1」: このフィールドは、JSON-RPC リクエストの結果です。この場合、要求された結果はイーサリアムネットワーク上の現在のガス価格であり、文字列として16 進形式で返されます。

「0xdec36a8d1」の 10 進数値を解釈するには

「0xdec36a8d1」の 10 進数値は 59797579985 です。したがって、リクエストが行われた時点のイーサリアム ネットワーク上の現在のガス価格は 59797579985 ウェイ (イーサの最小単位)、つまり 58 グウェイです。

残りのサーバー /RPCProviderA および /RPCProviderB をローカル マシン (「 http://localhost 」) で実行してテストします。

 curl -X POST --data '{"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":1}' -H "Content-Type: application/json" http://localhost/RPCProviderA


🥳 自分のプロキシのテストを開始できます。


Nginx を API ゲートウェイのプロキシとして使用する利点と欠点


Nginx を API ゲートウェイのプロキシとして使用する利点:

  1. 負荷分散: Nginx は受信した API リクエストを複数のバックエンド サーバーに分散し、効率的な負荷分散とパフォーマンスの向上を保証します。
  2. キャッシュ: Nginx は API 応答をキャッシュできるため、バックエンド サーバーの負荷が軽減され、API 応答時間が短縮されます。
  3. スケーラビリティ: Nginx は、API トラフィックの増加に対応し、多数の同時接続を処理するために水平方向に簡単に拡張できます。
  4. セキュリティ: Nginx は、SSL 終了、DDoS 保護、リクエスト フィルタリングなどのさまざまなセキュリティ機能を提供し、セキュリティの脅威から API を保護します。


Nginx を API ゲートウェイのプロキシとして使用するデメリット:

  1. 限定的な API 管理機能: Nginx は主にプロキシとして機能し、複雑な API エコシステムで必要となる可能性のある API ドキュメント、開発者ポータル、API バージョン管理などの高度な API 管理機能がいくつかありません。
  2. 構成の複雑さ: Nginx を API ゲートウェイとして構成するには、Nginx の構成をよく理解する必要がありますが、Nginx に詳しくないユーザーにとっては複雑な場合があります。
  3. 高度な認証と認可の欠如: Nginx は基本的な認証と認可の機能を提供しますが、一部の API シナリオで必要となる OAuth、JWT 検証、きめ細かいアクセス制御などの高度な機能を備えていない場合があります。

結論

結論として、API のパフォーマンスを向上させることは、企業と開発者にとって非常に重要です。 Nginx を API ゲートウェイのプロキシとして使用すると、負荷分散、キャッシュ、スケーラビリティ、セキュリティなどの利点が得られます。ただし、API 管理機能の制限、構成の複雑さ、高度な認証および認可機能の欠如などの制限があります。これらの長所と短所を慎重に検討することが不可欠です。全体として、Nginx をプロキシとして活用することは、API のパフォーマンスを向上させる強力なツールとなり得ます。直面する一般的な問題とそのデバッグ方法について詳しく共有するため、次のチュートリアル シリーズにご期待ください。


ここでも公開されています。