いいえ、Node.jsのREST APIでExpressは必要ありません

画像

Expressの代替案について、Express'aを放棄する価値がある場所と理由、および切り捨てられた翻訳の小さな測定値について


エクスプレス


Expressは、Node.js用のシンプルで十分に文書化され、十分にサポートされ、最もダウンロードされたフレームワークです
単純なHTTPサーバーの作成方法をグーグルで検索しようとすると、最初のリクエストは次のようなものになるでしょう。

const server = require('express')({}) server.get('/', (req, res) => { res.send('Hello World!') }); server.listen(3000); 

REST API


企業が開発したアプリケーションのアーキテクチャでは、HTTPが通信のメインプロトコルとして使用されているため、REST APIとRESTサービスが引き続き基本的な役割を果たします。 これは、新しいアプリケーションまたはマイクロサービスを作成するプログラマーが、たとえば「イベントキュー」の代わりにREST APIを使用することを意味します。

マイクロサービスを使用することが一般的になったため、REST APIは可能な限り小さくなり、最小限の操作を実行するよう努めています。 これには、開発されたAPIのエンドポイントの数がマイクロサービスの数に正比例して増加し、単純なアクションごとに独自のエンドポイントが存在する必要があります。 たとえば、データベース内のユーザーデータを変更するには、まず/ user / searchメソッドを呼び出して必要なユーザーのIDを検索し、次に/ user / updateメソッドを呼び出して、このIDの前にパラメーターを返しますこの操作を実行する順序(注Ed。)。
はい、REST APIは高速でなければなりません、高速でなければなりません!
また、REST APIを使用して負荷の高いアプリケーションを作成する場合、マイクロサービスパターンを使用する機会が増えています。 このようなアプリケーションは、APIゲートウェイ上に構築されます。 ゲートウェイAPIは、実際には、ユーザーがアクセスするプロキシサーバーであり、このプロキシサーバーは既に最小負荷のマイクロサービスにアクセスしています。 通常、Gateway APIは次のような小さなタスクも解決します。


ただし、Expressは重すぎて低速です。


Expressは機能が豊富で優れていますが、マイクロサービスのREST APIなど、小さな目的で使用するには重くて遅いです


ライブラリの最新バージョン(4.16.4)は、それに組み込まれている30個のモジュールに依存しており、開発中にこのモジュールにさらに20個追加されるため、最終的にはアプリケーションが重すぎてマイクロサービスとして使用できません。

画像

他のライブラリと比較して、Expressは、複雑なクエリを実行する必要がない場合、最小限の目的で使用するには遅すぎます。 以下のグラフは、JSONドキュメントに対する単純なリクエストの実行の比較を示しています。

画像

画像

最後の写真に示されている測定では、Expressが一般的に遅いことは示されていません。簡単な操作を実行するには、プロセッサーのパフォーマンスを2倍にする必要があることが示されています。 Azureまたは他のクラウドサービスを使用します。これは、より大規模で不合理な費用になります。

おわりに


画像

Node.jsにREST APIを実装するにはさまざまな方法がありますが、以下はタスクに応じて適切な方法です。

Source: https://habr.com/ru/post/J434962/


All Articles