こんぬつわ。カレラです。

先週末にエンジニア社員の勉強会?兼懇親会?的な催しがありまして
普段は色んな現場に散っているエンジニアが集まってました。

残念ながら自分は参加できなかったのですが
参加した方によるととても刺激的だったようで
自分もたまには技術的なブログ書こうと思います。

*******

弊社のアプリではWebサーバにNode.jsを使っています。

 Node.js公式(英語)

apacheとどう違うの?(・ω・`)

たとえばリクエスト~SQL処理~レスポンスという一連の処理を行う場合
apacheではhttpdプロセスがリクエスト毎にスレッドを立てて
スレッド毎に一連の処理を行います。

Node.js(他にNginxなど)は『イベント駆動型』といいまして
リクエストを受け取りSQL処理を投げている間に次のリクエストに着手します。
そしてSQL処理が終わったものから順次レスポンスを投げていきます。

リクエスト、SQL処理、レスポンスというイベント毎に処理を行う感じです。

SQL処理がボトルネックになる場合等に
apacheではSQL処理待ちのスレッドが多くなるとリクエストを受けられなくなりますが
Node.jsならSQL処理待ちが多くなっていてもとりあえずリクエストを受けてくれます。

参考)こちらが判りやすいです
  http://www.atmarkit.co.jp/ait/articles/1010/05/news133.html

というぐあいに、リクエストが極端に多くなる可能性があるサービスには
apacheよりNode.jsの方が対応しやすいところになります。
(たとえば一般人向けのゲームアプリだと、昼休み、夜などにアクセスが集中する)

過去に弊社エンジニアがapacheとNode.jsでベンチマークとったところ、
少なくとも細かいアクセスが大量にあった場合は
Node.jsの方が圧倒的にスコアが良かったです。
(違う条件では試してないので、向き不向きはあると思います)

あと大きな特徴として、サーバ上で動くJavaScriptで
httpのモジュールを使って動きを書いてあるので
言語的にとっつきやすいところもあります。

apacheみたいにミドルウェアがあって設定ファイル調整して
その上で動かすアプリケーションを書くのではなく
リクエストを受けて返すというWebサーバ自体の動きから
JavaScriptで書くという…

但しメモリ消費はNode.jsの方が多くなりがちなようです。
おそらくJavaScriptの言語特性だと…。

まだまだ自分も良く判ってないのですが
ちょっといじってみて、率直に「面白い」と思いました(`・ω・´)

*******

Webエンジニアっぽい!気がする!

色々とボロが出てそうですが、お気づきの点ございましたら
「間違ってるよー」とこっそり教えてください(´・ω・`)

でわでわッ

TOP