Skip to content

Instantly share code, notes, and snippets.

@mesummery
Last active October 1, 2017 04:23
Show Gist options
  • Save mesummery/381768b7c058583367e28d394e60ee00 to your computer and use it in GitHub Desktop.
Save mesummery/381768b7c058583367e28d394e60ee00 to your computer and use it in GitHub Desktop.

Node.js

  • サーバーサイドで動作するJavaScript
  • C++実装
  • ノンブロッキングIO
  • イベント駆動モデル
  • 単独でWebサーバーとして動作する
  • 細かい処理を大量に実行することに向いている
  • サーバーサイドとクライアントサイドでコードを共通化
  • 学習コストが低い
  • npmという膨大なライブラリを収めたアーカイブの存在
  • MongoDBとの相性がよい(MEAN スタック)
  • C10K問題(10000個のコネクションが、同時に1台かつ1CPUのサーバに対して張られた際のサービス破綻の問題)を解決する手法

ノンブロッキングIO

  • 非同期処理によってプログラムを順番どおりに実行せずに、できる処理から行う
  • I/Oの待ちをなくすことで、たくさんの接続を速くこなすことができる

イベント駆動モデル

  • 何も処理をしない場合でもメインスレッドが無限ループを繰り返している
  • 重い処理は別のスレッドに任せることで、メインスレッドが一切I/Oでブロックされない

単独でWebサーバーとして動作する

  • PHPのようにApacheのようなWebサーバーを別に用意しなくても済む

MEANスタック

この頃はやりのWebアプリ開発環境の構成。

M - MongoDB
E - Express
A - AngularJS
N - Node.js

従来難しかった、1つのスレッドに複数のコネクション処理を多重化する、シングルスレッドかつノンブロッキングなイベント駆動I/Oの容易なプログラミングが可能になる。従って、1コネクションに対し1スレッドを割り当てることを前提とした、従来型のHTTPサーバソフトウェアと比較して、処理効率を容易かつ飛躍的に高くできる。 クライアントサイドからサーバサイドのデータベースまで、やり取りするデータがJSON形式に一本化でき、データ形式の変換が無くなる。

MongoDB

  • JSON形式のデータをそのまま格納できるため、SQLデータベースと比較して、入出力時におけるデータ形式の変換がなく、オーバーヘッドも少ない

Express

  • サーバサイドMVCフレームワーク

AngularJS

  • クライアントサイドMVWフレームワーク
  • Model-View-Whatever(MVW)モデルとしており、MVC,MVVM等の様々なモデルを利用可能

LANP

以前までのデファクトスタンダード。

OS:Linux
Webサーバー:Apache HTTP Server
データベース:MySQL
プログラミング言語:PHP/Perl/Python

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment