Node.jsを使用したJavascriptマイクロサービスの構築に関する包括的な洞察!

公開: 2022-03-21

JavaScriptアプリのサイズは急速に拡大していますか? もしそうなら、コードを維持し、バグを修正し、新しいアップデートを実装することはあなたにとって困難になっているに違いありません。 それで、解決策は何ですか? より多くの開発者をうまく雇うことは役立つかもしれませんが、同時にプロジェクトの複雑さと急増する費用を増やすかもしれません。

最善の解決策は、マイクロサービスアーキテクチャを採用することです。分散システムは、大規模なモノリシック設計を、操作の実行とデータ交換のために相互通信する小規模な独立したプログラムに分割します。 このアプローチを使用すると、アプリは疎結合サービスの融合として構成できます。

JavaScriptマイクロサービスを詳細に調べて、マイクロサービスの構築にNode.jsアーキテクチャを使用することが推奨される理由を理解しましょう。 また、Node.jsを使用してJavaScriptマイクロサービスを構築するためのステップバイステップのガイダンスを入手してください。

マイクロサービスとはどういう意味ですか?

ソフトウェアアプリの開発に関して、マイクロサービスは一種のSOA(サービス指向アーキテクチャー)を指します。 ここでは、相互接続されたサービスのアセンブリがアプリ構造を形成します。 マイクロサービスのため、アプリのアーキテクチャはLDAP、OpenLDAPなどの軽量プロトコルを使用して作成されます。アプリはより小さなサービスに分解でき、モジュール性を強化する余地があります。 最近、GraphQL / RESTインターフェースを備えたクラウドベースのアプリケーションのほとんどは、マイクロサービスを使用して開発されています。

モノリシックアーキテクチャに対するマイクロサービスの利点

モノリシックアーキテクチャでは、マイクロサービスの前身であるすべてのソフトウェアコンポーネントとサービスが、1つの大きなコンテナに入れられ、しっかりと梱包されます。 モノリシックアプリは唯一の統合されたユニットですが、マイクロサービスはアプリの構造をより小さな独立したユニットに分割し、各アプリプロセスを個別のサービスとして実行します。 したがって、すべてのサービスには独自のロジックとデータベースがあり、特定の機能を実行します。 そのため、モノリシックアプリと比較して、マイクロサービスアプリはより柔軟で、スケーラブルで、信頼性が高く、言語に敵対します。 より軽い反復を含みます。 時間を最大限に最適化します。 データを体系的に整理します。 さらに、マイクロサービス(APIエンドポイント)のインターフェイスにはベースURIが含まれています。 このURIは、データオブジェクトと、オブジェクトの操作に使用されるPOST、GET、PUT、PATCH、DELETEなどの標準のHTTP方法論を識別します。

JavaScriptマイクロサービス上に構築されたアプリの場合、正確なインターフェースと明確に定義された操作を備えた単機能モジュールの作成に集中できます。 これにより、アプリ開発プロセスがより機敏になり、継続的テストの手間が最小限に抑えられます。

ただし、テスト、デプロイ、キャッシングなどのアクティビティでは各マイクロサービスを個別に処理する必要があるため、このアプローチはすべての種類のプロジェクトに適しているわけではありません。 理想的には、ビジネスロジックをあまり使用しない軽量のアプリケーション/ソフトウェアソリューションを開発する場合は、モノリシックアーキテクチャを使用することをお勧めします。 マイクロサービスは、ある日1,000人のユーザーがいて、翌日は10,000人のユーザーがいる可能性がある、SaaSソリューションのように、スケーリング要件のある複雑なアプリや進化するアプリを構築する場合に推奨されます。

Node.jsマイクロサービス

Node.jsは、JavaScriptマイクロサービスを構築するための最も好ましい選択肢です。 Node.jsは、JavaScriptエンジンで記述されたオープンソースのクロスプラットフォームRTE(ランタイム環境)であり、サーバー側およびネットワーキングアプリの開発に使用されます。 Node.jsは、Node.jsランタイム内のLinux、Microsoft Windows、OSXなどのオペレーティングシステムで実行されます。

マイクロサービスの作成にNode.jsが好まれるのはなぜですか?

Node.jsフレームワークは、JavaScriptマイクロサービスの開発を容易にするいくつかのJavaScriptモジュールを含む豊富なデータベースを提供します。 これは、I / Oバウンドアプリ、JSON APIベースのアプリ、SPA、データ集約型のリアルタイムアプリ、データストリーミングアプリなどを構築するための推奨テクノロジーです。マイクロサービス開発にNode.jsを使用する利点は次のとおりです。 :

非同期の性質: Node.js環境の非同期および非ブロッキングライブラリは、前のAPIがデータを返すのを待たずに、次のAPIに移動します。

優れたコスト管理: Node.jsとマイクロサービスの両方に卓越したスケーリング機能があり、開発とメンテナンスのコストを削減できます。 さらに、Node.jsは、他のリクエストと比較して同じ数のリクエストを処理するためのメモリやCPUなどのインフラストラクチャ要件を最小限に抑え、それによって費用を削減します。

優れたパフォーマンス: Node.jsは、動的なコミュニティサポートと豊富なリソースを備えた人気のあるWebテクノロジーです。 さらに、Node.jsは標準のストリーミングAPIを提供するため、オンラインゲーム、チャットアプリなどのリアルタイムアプリの安全な開発とサウンドパフォーマンスを保証します。また、問題やバグのために1つのマイクロサービスがダウンした場合、アプリ全体がダウンします。影響を受けませんそして、JavaScriptは解釈された言語であるため、コンパイル段階で時間を節約できます。 これが、Node.jsでJavaScriptマイクロサービスを採用するアプリがうまく機能する理由です。

速度と応答性: Node.jsはシングルスレッドであり、イベントループのため、サーバーは応答に非ブロッキングメカニズムを採用しています。 さらに、「Node.jsのイベント」という通知により、アプリサーバーは前のAPI呼び出しの応答をキャプチャできます。 データはチャンクでリリースされるため、バッファリングは最小限に抑えられます。 スピードを上げると、V8 JavaScriptエンジンにより、Node.js開発者はコードを非常に高速に実行できます。

Node.jsのユースケースシナリオ

Node.jsは、次のユースケースシナリオに最適です。

  • さまざまなクライアント、ネイティブモバイルアプリ、およびモバイル/デスクトップブラウザーをサポートする必要があるエンタープライズアプリケーションを構築しています。 サードパーティが使用できるAPIを提供し、アプリの継続的デプロイパイプラインを設定します。 メッセージブローカーまたはWebサービスを介して他のアプリと統合します。 NFRの可用性とスケーラビリティの要件に対応するために、さまざまなマシンでアプリのいくつかのインスタンスを実行します。
  • 柔軟性、スケーラビリティ、管理性などの側面/機能を強化するためにモノリシックアプリを移行するか、レガシーアプリケーションを再プラットフォーム化する必要があります。
  • 認証や暗号化などの独立したエンドツーエンドのサービスを分離する必要があります。
  • サービスプロバイダーが、価格設定や予測サービスなど、必要なインフラストラクチャ管理とコンピューティングリソースを顧客に提供するシナリオ。
  • さまざまなデータソースまたはチャネルからデータを収集する可能性が高いフロントエンドレスポンシブWebアプリにバックエンドサービスを提供する必要があります。

Node.jsを使用してJavaScriptマイクロサービスを構築する手順

ビジネス要件を検証する

ビジネスに必要なサービスを特定します。 たとえば、2つの郵便番号とそれらの間の距離を特定する必要があるサービスが必要です。 郵便番号を識別して距離を計算するには、検証手法を使用する必要があります。 このために、これは。 icroserviceは外部API呼び出しを構成する必要があります。 また、内部キャッシュを実装する場合、API呼び出しを迅速に複製することで、プロセスの費用対効果を高めることができます。

初期化手順

まず、ワークステーション/コンピューターにNode.jsをインストールします。このためには、8.1.1バージョンをお勧めします。 一般にNPMと呼ばれるNode.jsパケットマネージャーは、インストールスイートの一部として提供されます。 NPMは、プロジェクトの起動、依存関係の読み込み、サービスの実行などの重要な機能を実行します。

Foeプロジェクトの初期化、Node.jsプラットフォームを開き、ルートフォルダーに移動してから、コマンド$npminitを実行します。 コマンドが実行されると、package.jsonファイルの作成に道を譲り、このファイルの作成がプロジェクト実行の基盤を形成します。

マイクロサービスは、次の2つのプライマリパッケージに基づいて作成されます。

  • 「リクエスト」–マイクロサービスはこのパッケージを使用してWebベースまたはサードパーティのAPIに接続します。
  • "特急。" –このパッケージは、Node.jsアプリをサポートするための構造を提供し、そのマイクロサービスのNode.js基盤をサポートします。

これらのパッケージは、次の簡単な手順でpackage.jsonファイルに追加できます。コマンド$ npm install express requestを入力し、コマンドの最後にsaveを追加して、このコマンドを実行します。

結果:

mpm initコマンドは、マイクロサービスを構築するためのファイル/フォルダーの構造を作成し、RequestパッケージとExpressパッケージは、依存関係の形式でこの構造内に保存されます。 その後、コーディングが始まります。

サーバーをセットアップする

このステップはコーディングの最初の部分であり、ここでは、要求を認識して受け入れるサーバーを作成する必要があります。

server.jsという名前のエントリファイルを作成します。 サーバーの起動時に実行されます。 ルートオブジェクトでアプリのインスタンスを渡すことにより、プライマリファイルでルートを使用できるようにします。 次にルートを定義し、サーバーを実行すると、アプリはポート3000またはPORT環境の変数で指定されている他のポートのいずれかをリッスンします。

ルートを指定します

次に、応答送信のルートを指定するという、マイクロサービス開発の次の重要なステップがあります。 以前に構築されたサーバーはルートを割り当て、これらのルートはすべてのリクエストが処理されることを確認します。

api_routesフォルダーにroutes.jsという名前のファイルを作成し、それに必要なコードを追加します。 ここで、routesファイルは2つのエンドポイントを指定します。aboutエンドポイントはアプリの詳細を指定し、distanceエンドポイントは外部APIを使用して両方の郵便番号間の距離(マイル単位)を計算します。

コントローラファイルには、これらのエンドポイントの実装が含まれており、次のステップに進みます。

コントローラを構築する

ここで、コントローラーロジックをマイクロサービスに追加して、いくつかの便利な機能をマイクロサービスに提供する必要があります。 コントローラオブジェクトは、オブジェクトを処理するために新しく変更されたデータを伝達するためのアクションだけでなく、ユーザーの意図を解釈するために使用されます。 また、以前に作成されたルートモジュールによって受信された要求を処理する場合にも役立ちます。 コントローラファイルは、getDistance()とabout()の2つの関数を実行します。

2つの引数(要求と応答)がabout()関数によって受け入れられます。 それらの名前とバージョン値は、package.jsonのプロパティに保存されます。 同様に、getDistance()関数にも、要求と応答の引数のペアが含まれています。 これは、servicesフォルダーで定義されている関数findAPIを呼び出します。

外部API呼び出しを確立する

API呼び出しを作成するには、サードパーティのAPIであるZipCodeAPI.comを使用します。 –アカウントに登録するか、テストAPIキーを使用して、無料のAPIキーを取得できます。

次に、次の手順でマイクロサービスコードを作成します。

  • 外部HTTPリクエストを処理するためのリクエストパッケージをロードします
  • 環境変数で使用可能なAPIキーとzipCodeURLをロードします

find()functionオプションの下にリクエストオブジェクトを作成し、レスポンスの受信時に呼び出されるコールバック関数を指定します。 前述の関数にエラーがなく、応答にHTTPステータスコード200が含まれている場合、このステップは正常に実行されます。その後、応答の本文が解析されて返されます。 応答を直接転送するのではなく解析する場合、応答を最適な効率で処理できます。 障害が発生した場合は、コンソールに記録され、-1の応答が返されます。

プログラムの実行

次に、プロジェクトのターミナルでnpmstartコマンドを実行してプログラムを実行します。 すべての機能がスムーズに実行される場合は、オプション/ about web endpointを押して、この出力をWebブラウザーで表示します– {“ name”:“ microservices”、“ version”:“ 1.0.0”}

また、/ distanceエンドポイントオプションを押して、クエリ文字列を介していくつかの値を渡します。 その後、目的の出力が生成されます。

ここでは、オブジェクトの距離がエクスポートされます。 コントローラは、必要に応じて、外部API呼び出しの具体的な関数とインスタンスを表すことができます。 最後に、マイクロサービスの実行プロセスを完了するために、コマンド内のタイプミスを検出するためにコードが確認されます。

これは、2つの郵便番号間の距離を見つけるためのマイクロサービスを構築する例です。

データベースをアーキテクチャに統合する

これで、Node.jsアプリが作成され、データをデータベースに保存する必要があります。 このために、データAPIまたはデータベースを使用できます。 また、Node.jsアプリからデータベースとシームレスにやり取りするには、JavaScriptドライバーを使用します。

結びの言葉

この投稿が、Node.jsフレームワークを使用したJavaScriptマイクロサービスの構築に関する便利な情報の収集に役立ち、マイクロサービスの構築プロセスを明確に理解したことを願っています。

効果的なJavaScriptマイクロサービスを構築するために技術的な支援が必要ですか? 経験豊富なNode.jsアプリ開発会社であるBiz4Solutionsに接続します。 私たちのサービスは、世界中のお客様から最高のサービスの1つとして認められています。

その他のコアテクノロジーの詳細については、以下のリンクを参照してください。

ReactNativeアプリの開発

Swiftアプリ開発

PHPアプリ開発