Node.jsをサーバサイドのUIレイヤに限定するのか?

http://www.nczonline.net/blog/2013/10/07/node-js-and-the-new-web-front-end/

1 comment | 0 points | by Jshiike 3年以上前


Jshiike 3年以上前 | ▲upvoteする | link

Nicholas ZakasはYahoo出身で現在Boxに勤めるフロントエンジニアで、JavaScriptに関する複数のオライリー本の著者でもあります。彼が自身のブログで、Node.jsをサーバサイドUIレイヤのみで活用することを提言してます。



JavaScriptエンジニアはフロントエンドのコントロールはできるが、サーバサイドのUIレイヤはバックエンドエンジニアの領域で、それがフロント(JavaScript)エンジニアとバックエンドエンジニア双方のストレスであった。(参照図1


Node.jsの登場で、サーバサイドのUIレイヤをサーバサイドのビジネスロジックから分離し、フロントエンジニアはブラウザ & サーバのUIレイヤ、バックエンドエンジニアはサーバサイドのビジネスロジックを担当するという切り分けが可能になった。(参照図2


Node.jsのおかげで、PHPと格闘しなくて済む。ただし、JavaScriptが好きとはいえ、ショッピングカート機能まではJavaScriptで書きたくない。


バックエンドエンジニアにとっては、サーバ領域が侵される問題ではなく、本来興味のある、データをどのように保管し、取り出し、安全かつ一貫したかたちで扱うのかということに集中できる。フロントエンドエンジニアはUIレイヤを全てコントロールできる。両者はRESTfulインターフェースを介して、お互いを干渉することなく、データのやりとりのみで仕事を進めることができるようになる。


この方式だと、サーバサイドのUIレイヤとサーバサイドのビジネスロジックでのHTTP通信が増えるが、物理的に近い位置に両者のサーバが置かれるであろうから、サービス全体に影響を与えるような問題にはならないはず。



予想とおり、「Node.jsのおかげでサーバサイドはJavaScriptで全て対応できるようになる。」というNode.js積極推進派からは反対の声があがってます。公平を期すため、賛否両論併記しておきます。



[賛成]


Bingo! まさにPayPalがNode.js導入で採用している手法。Node.jsをPayPalのサービスで大胆に使うのは化け物を鎖からはずすようなもの。


このブログポストはまさにこの10年待たれてた内容。Railsエンジニアはリストをどのように表示するのか悩むのではなく、何を表示するかで悩むべき。フロントエンジニアはrails/django/jsp/phpの美しくないステートメントと格闘しなくて済む。一番よいポイントはNode.jsでアプリを全部書くなんてクレイジーな盛り上がりに水をさしたことだ。


JavaScriptでよいコードを書くエンジニアはいるが、信頼できる金融システムを書けるのはほとんどいないはず。それは適切なタイプシステムがないとか、黙ってコンバージョンされるのが多いとか、構文がわかりづらいとか、開発言語としてのそもそもの問題だ。


2006-2011年はJavaScript、2011-2013年はNode.jsを使ったが、正確なコードをメンテしやすいかたちで書くために、最近バックエンドの機能をNode.jsから静的プログラミング言語で書き換えた。


[反対]


エンジニアがJavaScriptを書く能力の底上げが図れると、そしてそれは急速に改善しているトレンドなので、ショッピングカートのような複雑で高い信頼性を求められるものは書けないというような誤解は、どんどん薄れていく。


ショッピングカートはほぼPHP / Python / Rubyで書かれていて、それぞれ開発言語として課題はある。JavaScriptだから書けないというのはおかしい。


静的プログラミング言語で悪いコードがよくなるわけではないの、問題の本質をすり替えている。静的プログラミング言語ってJavaじゃないの?


シンプルで遅延がなく複雑なSQL DBとのインターフェースをもつ & プッシュ機能のあるプロジェクトのバックエンドを全てNode.jsで開発したが、APIコールの平均レスポンスタイムは8msでまったく問題ない。



Node.js and the new web front-end
https://news.ycombinator.com/item?id=6508967



ワザノバ TOP100 アクセスランキング [8/25-10/12]



#node.js #javascript #開発スタイル #コーディング #アーキテクチャ #シングルページアプリ

Back