Node.jsの基本概念
🔶 はじめに
想像してください、1秒間に百ものリクエストを送るウェブアプリケーションがあって、サーバーは一度に一つのリクエストを処理してから次に移ります。たぶん、パフォーマンスの問題が出て、使う人にとって良くない経験になるでしょう。
この状況を踏まえて、2009年にウェブ開発者のRyan Dahlは、同期プログラミングやマルチスレッドを使ったサーバサイドのプラットフォームで、入出力が多い機能を開発する際に直面した困難な問題を解決するためにNode.jsを作りました。
そのため、Node.jsは特定の問題を解決するために作られた技術です:激しい非同期の入出力イベントに対処する。そして、この能力を持っているプログラミン言語は何か?答えは、JavaScriptでした。
だから、この記事では、このテクノロジーについての自分の知識や経験、勉強を共有していきます。それによって、Node.jsの基本概念を提供し、なぜそれが現代のサーバサイドの世界で重要なプレイヤーなのかを理解する手助けをするのが目標です。
🔶 1 Node.jsって何?
シンプルに言えば、Node.jsは、ChromeのV8 JavaScriptエンジンに基づいたオープンソースのサーバサイドプログラミング用プラットフォームです。つまり、ウェブブラウザでJavaScriptをコンパイルするエンジンと、Node.jsのコアで動くエンジンが同じということです。これがとても速い理由で、特にウェブアプリケーションにおいてそうです。
🔶 2 Node.jsのメリット
Node.jsは、信頼できてスケーラブルなモダンなウェブアプリケーションを開発するための非常に強力なサーバサイドプラットフォームです。NetflixやUber、LinkedIn、PayPalといった世界的な企業が信用しています。
シングルスレッドの特徴と背後で走るマルチスレッドプラットフォームが組み合わされることで、イベント駆動型のアーキテクチャは、I/O(入出力)が激しいアプリケーションに最適です。これにより、少ないハードウェアでより多くのクライアントに対応できるため、費用を抑えつつパフォーマンスを向上させます。
その上、他にも開発者にとって素晴らしい機能が多数提供されています。
🔸 2.1 ノンブロッキングI/O
ノンブロッキング方式では入力を受け取り、出力を非同期で返します。言い換えると、サーバーが多くのリクエストを受け取ってもアプリケーションがブロックされず、バックグラウンドでレスポンスが処理されている間に他の作業が可能になります。
🔸 2.2 シングルスレッド
Node.jsはシングルスレッドの特徴を持ち、非同期操作をマルチスレッドプラットフォームに委任することで、同時に多くのイベントに対応できます。つまり、ただ一つのスレッドで入出力を処理できるということです。
この特徴により、メモリやインフラストラクチャの容量を少なくして多数のリクエストを処理でき、軽量でスケーラブルかつ効率的になります。
こちらの記事はdev.toの良い記事を日本人向けに翻訳しています。
https://dev.to/cassiocappellari/basic-concepts-of-node-js-pch