NashTech

LinkedInのPlayフレームワーク

LinkedInのPlayフレームワーク

はじめに

私たちはサポートとコンサルティング・サービスを提供し、彼らがPlayの拡張性を活用して独自のニーズに合わせてチューニングできるよう支援しました。

リンクトインについて

LinkedInは、インターネット上で世界最大のプロフェッショナル・ネットワークを運営する株式公開企業で、200以上の国と地域に1億6,000万人以上の会員を持つ。

同社はLightbendの顧客であり、コアとなるソーシャルネットワークグラフやその他の重要な製品コンポーネントにScalaを使用している。 また、クラスタ管理ソリューションのNorbertや分散パブリッシュ・サブスクライブシステムのKafkaなど、Scalaをベースにしたオープンソースプロジェクトもリリースしている。 Scalaは、ライトベンドの主力製品であるライトベンド・プラットフォームの一部です。 最近、LinkedInはライトベンド・プラットフォームの利用を拡大し、Playウェブフレームワークを追加した。

課題

LinkedInは、従来のJavaウェブフレームワークで課題に直面した。 例えば、こうだ:

LinkedInは、Ruby on Railsやnode.jsなど、Java以外のプラットフォームも使用している。 しかし、サーバーサイドのコードのほとんどはJavaで書かれているため、Java開発者向けの強力でモダンなUIフレームワークが必要だった。

ソリューション

同社は、NashTech Platform SolutionのコンポーネントであるPlayに注目した。 Playは、開発者の生産性に焦点を当てたJVMのためのモダンなフレームワークである。 JavaとScalaの両方をサポートしており、顧客は状況に応じて最適な言語を選択できる。 同社は、Java APIを使用してJava仮想マシンにリアクティブ・アプリケーションを導入し、開発者が迅速に導入できるようシンプルにしている。

リンクトインがプレイを展開する場所

LinkedInは、UI開発のフロントエンドサーバーとしてPlayを使用している。 例を挙げよう:

LinkedInは、サイトの新機能を開発するにつれて、Playをより広く採用することを期待している。

LinkedInはまた、バックエンド・サービスの基盤技術としてPlayを調査している。 同社は、サービス・アーキテクチャ全体をRESTful JSONに移行している最中で、このプロセスを支援するためにPlayを検討している。

迅速なコードとテストサイクル

開発者にとって、Playのキラー機能は、ブラウザで「リロード」を押したときにアプリケーションを動的に再コンパイルする機能だ。 LinkedInの開発者はエディターで変更を保存し、ブラウザに切り替えてリロードを押す。 コンパイルエラーがあれば、ブラウザに表示される。 ビルドが成功すれば、新しいページが表示される。

このシンプルな機能により、開発者がウェブ・アプリケーションを適切に仕上げるために費やす時間を、数え切れないほど節約できる。

デベロッパーがリロードを押したときに素早く動作するように、Playは洗練されたインクリメンタル・コンパイルのテクニックを使って、変更されたクラスだけをリビルドする。

カスタム資産タイプに拡張可能

プレイのホットリロード機能は、新しいアセットタイプをサポートするために拡張することができます。

LinkedInにはApache Avroを使ったRESTフレームワークがある。 Javaクラスは、宣言的なデータモデルとエンドポイント記述から生成される。

LinkedInは、Playを使ってこれらのRESTサーバーを構築するためのインフラを構築した。 スキーマを変更した後、LinkedInの開発者はブラウザでリロードを押すだけで、Javaクラスが再生成され、アプリが再構築される。 エラーは即座にブラウザに表示される。

これにより、開発者は変更を加えるたびに2、3分の時間を節約できる。

モジュールシステムによって、新しい種類のテンプレートを追加することができる。 LinkedInはDustテンプレートをサポートするPlayモジュールを実装した。 いつものPlayのように、Dustテンプレートはホットロードできる。

非同期、ステートレスのスケーラビリティ

プレーは、スケーラビリティに関して2つの大きな勝利をもたらす。

非同期リクエストをサポートしているので、リクエストの進行中にスレッドを拘束する必要がない。 アプリサーバーが外部サービスやデータベースで待機している間、リクエストを中断し、結果が利用可能になった時点で再開することができる。 これにより、未処理のリクエストに必要なメモリが大幅に削減される(通常、スレッドプラットフォームはリクエストサービスコードよりもはるかに多くのメモリを使用する)。

LinkedInの統合プロセスの一環として、非同期リクエスト処理のためのPlayのJava APIが改善され、その変更がPlayのメインラインコードベースとNashTechプラットフォームソリューションに組み込まれました。

つまり、サーバー側のセッション状態に依存しない その代わりに、セッションステートはクッキーに保持され、そのためリク エストを受け取ったどのサーバーノードでも利用可能である。

ステートレス・アーキテクチャでは、アプリケーション・サーバーを増やすのと同じくらい簡単に容量を追加できる。 Playはデフォルトでこれを正しく実行し、スケーラビリティの問題を引き起こすセッション・アフィニティなどの複雑さを回避する。

柔軟性

LinkedInは、Playが箱から出してすぐに適切なアーキテクチャを備えているため、将来のフレームワークのリリースへの移行を妨げる可能性のある大規模なカスタム修正について心配する必要がなかった。

Playには拡張ポイントが定義されているので、これらのカスタマイズはコアフレームワークへのパッチではなく、外部モジュールにすることができる。 Apache AvroスキーマとDustテンプレートのサポートはモジュールとして実装された。

結果

Playは、LinkedInのニーズを満たす適切な技術的アーキテクチャを持っている:

ナッシュテックは、この未加工の技術を動きの速い企業で実用化する。 ナッシュテック・プラットフォーム・ソリューションは、リンクトインに長期サポートリリースを提供し、バグフィックスと機能強化を行います。 NashTechの広範な製品サポートにより、LinkedInはPlayフレームワークに迅速に拡張機能を追加し、上流のメンテナとコアフレームワークの調整を行うことができました。

NashTechと協力することで、LinkedInは、将来性があり、保守可能で、サポートされたプラットフォームの上で、開発者の時間を節約し、サーバーリソースを節約することができるようになりました。

NashTechによって、リンクトインはフレームワークの機能に影響を与えることができ、メインストリーム製品に組み込むことができるようになった。 LinkedInは、NashTechプラットフォーム・ソリューションの将来のリリースにバグ修正と機能強化が含まれることを確信しており、古いバージョンに取り残されることはありません。

「私たちは、Playを非同期でホット・リロード可能なAPIを備えた、クリーンなアーキテクチャのUIフレームワークだと考えています」。

ディーン・トンプソン、プリンシパル・アーキテクト

ケーススタディをもっと読む

仮想学習環境をAWSに移行して近代化し、体験の向上を図る。

移行され近代化されたMoodle インフラストラクチャーは、オープン 大学は今、次のような利点がある。 クラウドのメリット

大手デジタル広告サービスとの1年にわたるRPAの旅を垣間見る

大手デジタル広告サービス・ソリューションプロバイダーの1年にわたるRPAの旅と、NashTechがどのように彼らを支援したかをご紹介します。

デジタル棚の分析をサポートし、eコマースの成長を引き出す

NashTechがどのようにデジタル棚の分析を支援し、世界有数のデータ洞察とeコマースソリューションプロバイダーと成長を解き放つかをご覧ください。

私たちのパートナーシップ

上部へスクロール
サンプル・タイトル
サンプルショート
サンプル見出し
JA FREE WHITEPAPER
新しいホワイトペーパーで知識の力を解き放つ
「プロダクトオーナーのユーザーエクスペリエンスを向上させる」
無料ホワイトペーパー
新しいホワイトペーパーで知識の力を解き放とう
「プロダクト・オーナーのためのユーザー・エクスペリエンスの向上