PayPalが開発プラットフォームとしてNode.jsに移行することについて多くの話がありました。 パート1:「ユーザーインターフェイスを解放する」の続きとして、うわさが真実であり、WebアプリケーションがJavaからJavaScriptおよびNode.jsに移植されていることを報告できてうれしいです。
歴史的に、私たちの開発チームは、ブラウザ用のコードを書く人(HTML、CSS、JavaScriptを使用)とアプリケーション用のコードを書く人(Javaを使用)に分かれています。 Java開発者に2つのページ「A」と「B」を接続するように依頼することになっていたHTML開発者を想像してください。 私たちがいた場所です。 このシステムにより、信じられないほどのユーザーインターフェイスを作成し、それに基づいてアプリケーションを構築できるフルスタックスペシャリストの導入が妨げられました。 それらをユニコーンと呼びますが、これが必要なものであり、PayPalの主な障害は常にブラウザーとサーバーの間に描かれた境界線です。
Node.jsは、アプリケーションのブラウザー部分とサーバー部分をJavaScriptで記述できるようにすることで、この問題の解決に役立ちました。 これにより、スペシャリストが1つのチームにまとめられ、どのレベルのテクノロジーでもユーザーのニーズを理解して対応することができます。
事前選択
他の多くの製品と同様に、Node.jsをプロトタイププラットフォームとしてプッシュしました。 すべての品質とともに、高い専門的適合性が確認されたため、本番環境で使用することにしました。
最初の試みでは、ルーティングにexpressを使用し、構成にnconfを使用し、タスクを作成するためにうなり声を使用しました。 エクスプレスの普遍性が特に好きでしたが、大規模な開発チームには十分にスケーラブルではないことがわかりました。 Expressは何も強制せず、必要に応じてサーバーをインストールできます。 これは柔軟性には優れていますが、大規模なチームの一貫性には不向きです。 時間の経過とともに、Node.jsを選択してkraken.jsにラップするチームの数、出現するパターンが見られました。 それ自体はフレームワークではなく、Expressの最上位のレイヤーであり、大規模な組織向けに拡張できます。 環境のセットアップだけでなく、アプリケーションの作成にエンジニアが集中できるようにしたかったのです。 私たちは何ヶ月もkraken.jsを使用しています(すぐにソースコードを公開する予定です!)そして、開発者は、作成したNode.jsアプリケーションの導入を楽しみにしています。
Node.jsの本番環境への移植
実稼働環境でのNode.jsの最初の実装は、マイナーなアプリケーションではありませんでした。 これはアカウント表示ページであり、当社のウェブサイトで最も閲覧されたページの1つでした。 広く歩くことにしましたが、同じJavaアプリケーションを並行して構築することでリスクを軽減しました。 Javaアプリケーションをデプロイおよびスケーリングする方法を知っていたため、Node.jsのアプリケーションで何か問題が発生した場合は、Javaに戻ることができます。 これは非常に興味深いデータの基礎となりました。
開発
1月に開始し、Node.jsがPayPalで動作するために必要なインフラストラクチャ(セッション、集中ログ、キーストアなど)を作成するのに数か月かかりました。 この間、5人の開発者がJavaアプリケーションで作業していました。 Javaでの2か月の開発の後、2人の開発者がNode.jsアプリケーションで並行して作業を開始しました。 6月初旬、彼らの道路は交差し、アプリケーションには同じ機能セットがありました。 Node.jsアプリケーションでは、2か月の遅延で始まった小規模なチームがすぐに追いつきました。 同じ機能がテストされたアプリケーションでテストを実行した後に学んだいくつかの詳細。 Node.jsアプリケーション:
- 少ない人で2倍の速さで構築
- 記述されたコードの行数を33%削減
- 結果のアプリケーションでは、ファイルが40%少なくなりました
性能
パフォーマンスは楽しく議論の余地のあるトピックです。 一部については、同じ機能を備え、ほぼ同じコマンドで構築された2つのアプリケーションがありました.1つはSpringに基づく独自のJavaフレームワーク上にあり、もう1つはexpress、dust.jsおよび他のオープンソースコードを使用するkraken.js上にあります。 アプリケーションは3つのルートで構成され、各ルートは2〜5個のAPIリクエスト、管理データ、およびDustを使用したレンダリングページを作成しました。
ルートをテストし、パフォーマンスと応答時間に関するデータを収集した実稼働マシンのハードウェアを使用して、テストユーティリティを起動しました。
Node.jsアプリケーションには以下が含まれていることがわかります。
- Javaアプリケーションと比較して、1秒あたりさらに2つのリクエスト 。 Javaの5つのコアと比較して、Node.jsの1つのコアを使用して内部パフォーマンスの結果を取得したため、これはさらに興味深いものです。 この差はさらに増加すると予想されます。
- 同じページの平均応答時間を35%短縮 。 これにより、ページの配信が200ミリ秒早くなりました -ユーザーは間違いなく気付くでしょう。
このデータには免責事項が添付されています。これは、フレームワークと2つのアプリケーションに適用されます。 これは対面比較であり、2つのテクノロジーを比較することで得られるパフォーマンステストです。結果は異なる場合があります。 それでも、Node.jsのパフォーマンスが最も純粋な形で見られることを嬉しく思います。
未来
消費者向けのWebアプリケーションはすべてNode.jsで構築されます。 開発者ポータルのように、すでに機能しているものもありますが、アカウントの表示などはベータ版です。 すでに12を超えるアプリケーションが移行フェーズにあり、アプリケーションが利用可能になったときにデータを共有し続けます。 これは、PayPalのエンジニアになるエキサイティングな時間です!