|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Node.js
Node.jsとは何ですか?
Node.js は、クライアントのブラウザーの外部で Web アプリケーションを実行するためのクロスプラットフォームのオープンソース ランタイム環境およびフレームワークです。
これはサーバー側のプログラミング言語であり、主に標準的な Web サイトやバックエンド API サービスなどのイベント駆動型サーバーに使用されますが、作成時の意図はリアルタイムのプッシュベースのアーキテクチャを開発することでした。すべてのブラウザには独自の JS エンジンがあり、node.js もその 1 つです。 Google Chrome の V8 JavaScript エンジンは、Node.js を強化するために使用されます。少し複雑ではありませんか?
基本的に、これはサイト全体を単一の「スタック」上で実行できることを意味し、開発やメンテナンスではなく、プロジェクトのビジネス目標の達成に集中できるようになります。
Node.js はオープン ソースであるため、無料で使用でき、世界中の開発者コミュニティによって継続的に更新および強化されています。
Node.js について理解しておくべき重要な点は、Node.js が実際には従来のアプリケーション ソフトウェアのようなフレームワークやライブラリではなく、ランタイム環境であるということです。
ランタイム環境 (RTE とも呼ばれます) は、開発者がコードを作成するために使用できる Web API のコレクションと、そのコードを解析する JavaScript エンジンです。これにより、軽量で汎用性が高く、導入が簡単になり、アプリケーション プロジェクトの最適化とスピードアップに役立ちます。
基本的な Node.js アーキテクチャ
Node.js のアーキテクチャにより、プログラマーの間で非常に人気があります。マルチスレッド処理モデルを使用する他のほとんどのランタイム環境とは異なり、Node.js は単一のスレッドですべてを実行します。
マルチスレッド処理構成では、各サーバーにはアクセスできる制限されたスレッド プールがあります。その結果、サーバーはリクエストを受信するたびに、プールからスレッドを選択し、それをそのリクエストに割り当てて処理を処理します。このシナリオでは、処理は同期的かつ逐次的に行われます。これは、一度に 1 つの操作だけが実行されることを意味します。
マルチスレッド処理を使用する場合、すべてのスレッドが使い果たされるまで、リクエストごとにスレッドが選択されます。これが発生すると、サーバーは、ビジー状態になったスレッドが再び使用可能になるまで待つ必要があります。これにより、アプリの動作が遅く非効率になる可能性があり、カスタマー エクスペリエンスからコンバージョンのリードに至るまで悪影響を及ぼす可能性があります。これは、プログラムが多数の同時クライアント要求を処理する必要がある場合に特に問題になります。
一方、Node.js は単一のスレッドで動作します。 2 つの違いは、シングルスレッド アーキテクチャではイベント ループを使用して、ブロッキング入力/出力アクティビティを非ブロッキング方式で実行することが期待される場合があることです。これらのフレーズに馴染みのないものがあっても心配する必要はありません。
原理的には、シングルスレッド設計は、マルチスレッド構成よりも高速かつ効果的に動作し、拡張できます。これはまさに Ryan Dahl が Node.js を作成したときに念頭に置いていたことであり、これが Web アプリ開発者の間で Node.js が非常に人気がある理由の 1 つです。
Node.jsを使用して開発したアプリケーションの例
ここでは、このテクノロジーの実世界のアプリケーションと商用アプリケーションを理解するのに役立つ、より詳細なケーススタディをいくつか紹介します。
Netflix
Netflix は、世界で最も人気のあるストリーミング メディアおよびビデオ オン デマンド サービスです。これは、広範な A/B テストを採用し、1 億 9,500 万人を超える世界の加入者に豊かなエクスペリエンスを提供するデータ駆動型のプラットフォームです。
条件付き依存関係とアプリのスケーラビリティの難しさは、プッシュ サイクルごとにリリースされる多数の固有のパッケージによってさらに複雑になります。その結果、同社は軽量で高速な Node.js を選択しました。最も重要な成果の 1 つは、ロード時間の 70% 短縮でした。
リンクトイン
世界最大のビジネスおよび雇用指向のソーシャル ネットワーキング サイトである LinkedIn は、モバイル アプリのバックエンドを Ruby on Rails から Node.js に移行する際に、同様に Node.js を信頼しました。
当時はまだかなり未熟な実行環境でしたが、これは賢明な決定であったことがわかりました。新しいアプリは以前のアプリよりも 2 ~ 10 倍速く、また非常に軽量でした。また、開発期間も短かったです。
NASA
はい、その通りです。 Node.js は NASA でも使用されています。
この技術は、危険な宇宙ミッション中に宇宙飛行士の安全を守ることで命を救うため、他の用途よりもこの用途ではるかに重要です。
複数の場所に保存された非効率なデータによって引き起こされた瀕死の事故を受けて、NASA はアクセス時間を最小限に抑えるために EVA 宇宙服に関連するデータを単一のクラウド データベースに統合するという課題に直面しました。新しい Node.js ベースのシステムにより、プロセスのステップ数が 28 から 7 に減りました。
ウォルマート
ウォルマートは世界最大の小売業者であり、インターネットショッピング事業に進出している。リスクが伴うにもかかわらず、同社は比較的新しく、非常に話題のテクノロジーである Node.js を扱うという時流に乗りました。
クライアント側では、複雑な機能を組み込むためにモバイル アプリを再設計しました。 Walmart は、Node.js の非同期 I/O とシングルスレッド イベント ループ アーキテクチャを賞賛し、複数の同時クエリを管理できるようにしました。
信頼された実行環境 (TEE)
Trusted Execution Environment (TEE) は、メイン プロセッサ内の安全な領域であり、機密性の高いコードやデータが改ざんや外部からの監視を恐れることなく動作できる保護されたスペースを提供します。 |
人間の鍵
ヒューマン キーは、あなたが何であるか、あなたが知っていること、またはあなたが持っているものから派生した暗号鍵です。これらは、デジタル資産の保護、プライバシーの保護、分散型 Web へのアクセスに使用されます。 |
オープンファイナンス (OpenFi)
OpenFi は「Open Finance」の略で、従来の金融 (TradFi) と分散型金融 (DeFi) を統合した金融フレームワークです。 |
サービスとしてのロールアップ (RaaS)
Rollups-as-a-Service (RaaS) を使用すると、ビルダーは独自のロールアップを迅速に構築して起動できます。 RaaS プロバイダーは、基盤となる技術スタックのカスタマイズ、コードなしの管理、コア インフラストラクチャとのワンクリック カスタム統合などのエンドツーエンドのソリューションを提供します。 |
データ可用性サンプリング (DAS)
データ可用性サンプリング (DAS) は、各参加者がデータセット全体をダウンロードすることなく、分散型アプリケーションがブロック データの可用性を検証できるようにする方法です。 |
複数のデータの可用性 (MultiDA)
このブロックチェーン アーキテクチャでは、複数のデータ可用性 (DA) サービスを使用してデータの冗長性を確保します。 |