BT

Your opinion matters! あなたのご意見でInfoQが変わる!

PayPal社がバックエンドをJavaからJavaScriptへ移行

| 作者: Abel Avram フォローする 4 人のフォロワー , 翻訳者 株式会社オープンストリーム 木村 茉由 フォローする 0 人のフォロワー 投稿日 2014年1月2日. 推定読書時間: 5 分 |

A note to our readers: As per your request we have developed a set of features that allow you to reduce the noise, while not losing sight of anything that is important. Get email and web notifications by choosing the topics you are interested in.

原文(投稿日:2013/11/29)へのリンク

PayPal社はJSPとJavaで書かれたレガシーコードを捨て、ブラウザからWebアプリケーションのバックエンドサーバまで、幅広くJavaScriptを採用することに決めた。

PayPal社の技術責任者であるJeff Harrell氏は、2つのブログ記事(『Set My UI Free Part 1: Dust JavaScript Templating, Open Source and More』、『Node.js at PayPal』)において、Node.js採用の理由と、Webアプリケーション開発をJavaとJSPからJavaScriptとNode.jsに移行したことによる、いくつかの成果を示した。

Harrell氏によると、PayPal社のWebサイトには大量の技術的負債が山積しており、彼らは『技術的負債から脱却し、製品のアジリティ向上や革新を可能とする』ことを必要としていた。まず、Web技術者であるフロントエンドエンジニアと、Javaで開発しているバックエンドエンジニアとの間に深刻な隔たりがあった。UX担当者がWebページのたたき台を作成したい場合、それが動作するように、Javaプログラマにバックエンド側の処理を依頼する必要があった。このことは、彼らの『Lean UX』開発モデルにそぐわなかった。

当時の私達のUIアプリケーションは、Javaと、柔軟性に欠けるプロプライエタリソリューションを利用したJSPをベースとしており、密結合かつ素早い変更が難しいものでした。私達のチームは、このアプリケーションに『Lean UX』開発モデルを適用することがふさわしいと思えませんでした。また、素早い変更に対応できなかったため、スクリプト言語でプロトタイプを構築し、それをユーザとテストし、そののち成果物に反映させました。

PayPal社は『サーバ側の低レイヤーな技術から分離されており、アプリケーションの言語から独立しているUIを、徐々に改善していけるようなテンプレートエンジン』かつ、複数の環境で動くものを必要としていた。彼らはDust.js(LinkedIn社によって裏付けされたテンプレートフレームワーク)、そしてTwitter社のBootstrapBower(Web向けパッケージマネージャ)に取り組むことに決めた。後ほど追加したものとしてはLESSRequireJSBackbone.jsGrunt、そしてMochaがある。

Webページのいくつかは再設計されていたが、PayPal社は依然としてレガシー技術の資産を抱えていた。

…私達にはレガシーなC++/XSLとJava/JSPの資産があり、そして私達は改善し続けるにつれて、それらのUIを置き去りにしたくありませんでした。JavaScriptテンプレートはこういった用途に最適です。私達は、C++の資産において、Dustをネイティブ並みのレンダリング性能にするために、V8を利用したライブラリを構築しました―これは驚くべき速さでした!Java側では、ビューの描画を行うために、Rhinoと連携したSpring ViewResolverを用いてDustを改善しました。

その当時、彼らはまた、新しいWebページのプロトタイピングにNode.jsを使い始めた。Node.jsを『きわめて熟達している』と判断し、製品に適用してみることにしたのである。 彼らはKraken.jsも開発したため、『規約レイヤー』をExpress(Node.jsベースのWebフレームワーク)の最上位に配置した(PayPal社は最近、Kraken.jsをオープンソース化している)。Harrel氏によると、Node.jsで開発すべき最初のアプリケーションは、PaypalのWebページ内で最もアクセスされるページのひとつである、アカウント概要ページだった。しかし、彼らはアプリケーションをより良くスケールできないことを恐れた。そのため、Node.jsが動かなかった場合にフォールバックできるよう、Javaアプリケーションと同じものを作ることに決めた。下記は、それぞれのアプリケーションが必要とした、開発リソースについてのいくつかの成果である。

  Java/Spring JavaScript/Node.js
環境構築 0ヶ月 2ヶ月
開発 ~5ヶ月 ~3ヶ月
エンジニア 5人 2人
コードの行数 不明 元のコードの66%

JavaScriptチームはインフラの初期セットアップに2ヶ月を要した。しかし、少ない時間と人数で彼らは同じ機能のアプリケーションを開発した。彼らは本番環境でテストスイートを実行し、Node.jsアプリケーションはJavaよりもパフォーマンスが向上していると結論づけた。その根拠として、

Javaアプリケーションに対して、1秒間に倍のリクエストがありました。初回のパフォーマンス測定結果は、シングルコアのNode.jsアプリケーションと5コアのJavaアプリケーションとを比較したものだったため、この結果はかなり興味深いものでした。この差はさらに広がるものと私達は予想します。

さらに

同じページのレスポンスにかかる平均時間が、35%減少しました。この結果として、Webページは200ms早く表示されました―ユーザが何かしら確実に気づく程度に。

と書かれている。結果として、Paypalは製品のベータ版でNode.jsアプリケーションを使い始めた。そして、今あるアプリケーションをNode.jsに置き換えながら、『ゆくゆくは、ユーザの目に触れるWebアプリケーションをすべてNode.jsで開発する』と決めた。

Harrell氏によると、JavaScriptをブラウザ側からサーバ側まで使用する利点の1つとして、『あらゆるレベルの技術において、理解し、ユーザのニーズに対応することができる』1つのチームが受け持つことにより、フロントとバックエンド開発間の隔たりをなくすことが挙げられるという。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT