BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース メッセージング機能のSDK化で開発生産性を10倍向上したLinkedIn

メッセージング機能のSDK化で開発生産性を10倍向上したLinkedIn

LinkedInは1月にクライアントサイドのメッセンジャーSDKを導入して開発生産性を大幅に向上したことを発表した。SDKを使用することで複数のアプリ間でコードの保守コスト削減となり、何千行ものコードが共有ライブラリに抽象化された。あるケースでは新しいLinkedInのユーザー機能を構築する際に40週分の開発工数が節約されたという。

LinkedInのシニアスタッフエンジニアであるMichele Ursino氏と、LinkedInのエンジニアリングリーダーであるJoe Xue氏はSDKがどのように生産性を向上するか説明している。

メッセンジャーSDKは、複数のアプリ間でコードの保守コストを削減し、何千行ものコードを共有ライブラリに抽象化することで、開発生産性を大幅に向上させた。とあるケースではコードの行数を10分の1に減らし、3,000行以上から数百行に減らした。その結果、開発者はこれまでのように数ヶ月や四半期もかけずに、数週間で新しいメッセージング機能を開発できるようになった。

Ursino氏とXue氏はLinkedInのメッセージング機能全体で共通のフロントエンドプラットフォームを作成することで、他のコア機能に対しても他社が模倣できるモデルを証明したと主張している。

LinkedInのような複数の大規模アプリケーションを持つ組織はアプリケーションの構築方法を見直すべきである。それぞれのアプリケーションが独立したエンティティを持つのではなく、再利用可能な基盤上のライブラリを配置して、その上に様々な技術分野の高度な機能を抽象化したユーザーインターフェースとして公開する構造をとるべきだ。

LinkedInは2020年半ばにメッセージング機能を再構築した。しかしUrsino氏とXue氏は「LinkedIn製品を実行するデバイス上での、メッセージング機能の信頼性維持と機能の実装は、多大なコストと神経を費やすタスクだった。」と説明している。最大限の一貫性と信頼性を確保するために、LinkedInはクライアントデバイスでのメッセージングデータの管理とフロントエンドAPIを含むメッセージングプラットフォームを拡張した。LinkedInのメッセージングチームは、クライアントアプリケーションでのメッセージングデータ管理の複雑さに対処するために、すべてのメッセージング機能を完全な機能データレイヤーSDKにパッケージ化したのだ。


出典:_ https://engineering.linkedin.com/blog/2023/unifying-messaging-experiences-across-linkedin

LinkedInは新しいSDKを2種類のライブラリに分けた。1つ目はAPIライブラリ("messenger-api")で、これはアプリケーションAPIにメッセージングを統合するために使用される。2つ目のクライアントライブラリ(messenger-data)は、デバイス上でのローカルメールボックスを表現するために使用される。

APIライブラリには3つの機能がある。1つ目はクライアントからバックエンドのメッセージングプラットフォームインフラにGraphQLのリクエストをブリッジすること、次にホストAPIがメッセージングAPIの動作をカスタマイズできるようにすること、3つ目は他のシステムがGraphQLを使用してメッセージングデータをデコレーションできるようにすることである。APIライブラリは、他のシステムからのメッセージングデータのエラーチェックを実装し、クライアントSDKライブラリが各プラットフォームで情報を取得するために使用するGraphQLスキーマを公開する。このアーキテクチャは、APIリクエストのライフサイクルの各段階で、バックエンドのメッセージングプラットフォームからフロントエンドのデータへのメッセージングデータの変換をホストAPIコードがカスタマイズできるようにする。


出典:_ https://engineering.linkedin.com/blog/2023/unifying-messaging-experiences-across-linkedin

クライアントライブラリは、メッセージングのためのイベント駆動データレイヤー(EDDL)を実装し、クライアントデバイス上でのメールボックスデータの最新情報を提供し、バックエンドのメールボックスと同期する。このライブラリは、メッセージング機能の信頼性を最大限に高め、アプリケーション開発者がメールボックスデータに容易にアクセスできるようにすることを目的としている。またデバイス上の会話とメッセージのレンダリングと画面更新を高速化するため、リアクティブなアプローチを採用している。これらのライブラリはデータの変更があった場合すぐにホストアプリケーションコードに通知しUIの更新を可能にする。


出典:_ https://engineering.linkedin.com/blog/2023/unifying-messaging-experiences-across-linkedin

LinkedInはすべてのメッセージング機能についてメッセンジャーSDKをフラグシップアプリケーションに完全に移行し、クライアントプラットフォームで一貫した信頼性のあるメッセージング機能を提供している。SDKはプラットフォーム間での機能の整合性を実現し、コードベースを近代化し安定性と信頼性を向上して、開発者の生産性を向上している。これによりLinkedInはメッセージング機能の向上だけでなく、開発者の生産性と効率性の向上にも成功している。これは他の企業や開発者にとって参考となるモデルであり、LinkedInの成功が他のコア機能に対しても同様の方法で実現できることを示している。

作者について

この記事に星をつける

おすすめ度
スタイル

BT