BT

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

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Uber、GraphQLサブスクリプションとKafkaでマイクロサービスを使用したスケーラブルなチャットを構築

Uber、GraphQLサブスクリプションとKafkaでマイクロサービスを使用したスケーラブルなチャットを構築

原文リンク(2024-03-07)

Uberは、WAMPプロトコルを使用して構築されたレガシー・アーキテクチャを、GraphQLサブスクリプションを活用した新しいソリューションに置き換えた。新しいアーキテクチャを構築した主な要因は、信頼性、スケーラビリティ、オブザーバビリティ/デバッグ可能性、そして既存のソリューションを維持するチームの能力を妨げている技術的負債にまつわる課題であった。

Uberは、多くのペルソナ(ライダー、ドライバー、利用者、宅配業者、売り手)に分かれた大規模な顧客ベースを持っている。同社はライブ(電話、チャット)と非ライブ(アプリ内メッセージング)のサポートチャネルをサポートしている。歴史的に(2019年から2023年初頭の間)、顧客とのやりとり(コンタクト)のうち、ライブチャットチャネルで対応したのはわずか1%で、58%はinAppメッセージング(非ライブ)で対応した。

Uber社のスタッフ・ソフトウェア・エンジニアであるAvijit Singh氏は、顧客からの問い合わせを効果的かつコスト効率よく処理するためのライブ・サポート・チャネルの重要性を説明している。

[ライブチャット]チャネルは、一般的にCPC(コンタクトあたりのコスト)を削減しながら、良いCSATスコア(顧客満足度、1から5の範囲で測定)を持っているので、Uberにとってスイートスポットにある。このチャネルは、高い自動化率、高い人員効率(エージェントが同時に複数のチャットに取り組むことができるため)、高いFCR(初回コンタクト解決)を可能にし、これらはすべて、顧客に質の高いサポートを提供しながら、Uberにとって有益である。

同社は、全顧客からのコンタクトの少なくとも40%をライブチャットサポートに移行させたいと考えていたが、既存のアーキテクチャは、顧客からのメッセージの46%が時間内に配信されないこと、オブザーバビリティとヘルスモニタリングの欠如、非常に低いスループット(10 tps)、水平方向に拡張できないことなど、多くの問題と制限に悩まされていた。最後に、WAMPのプロトコルとライブラリは非推奨であったため、インサイトとデバッグが不十分であったが、アップグレードパスは困難であった。

レガシー・アーキテクチャ(出典:Uber Engineering Blog)

チームは、当初は全体のコンタクトボリュームの40%まで、その後1年以内に80%まで拡張できる新しいアーキテクチャの作成に着手した。このアーキテクチャは、当初からオブザーバビリティとデバッグ可能性をサポートし、ステートレス・サービスを支持し、95.5%以上のメッセージ配信成功率を達成することを意図していた。

新しいアーキテクチャは、エージェントが使用するフロントエンドのUIと、いくつかのバックエンドのマイクロサービスで構成されている。Chat Channel Manager、Contact Service、Routerは、コンタクトを受け付け、利用可能なエージェントに割り当てる。Agent State Serviceは、エージェントのアクティブなコンタクト・セッションのトラフィックを担当する。サービスはApache Kafkaを使用してイベント/通知を発行し、ルーティングとエージェントの状態追跡の同期をサポートする。

ソリューションの中心は、WebSocketを使用した双方向通信をサポートするGraphQL Subscription Serviceである。UIは、graphql-wsライブラリを使用してサーバーと統合されている。チームは、中断されたチャット・セッションを再開するための自動再接続や、エージェントのブラウザとチャット・サービス間のハートビートなど、信頼性重視の機能強化をいくつか実装した。

新しいアーキテクチャ(出典:Uber Engineering Blog)

エンジニアは、本番ロールアウトの前に包括的な負荷テストを実施し、新しいソリューションが1台のサーバーで約10kの接続をサポートし、水平方向のスケーラビリティをサポートできることを検証した。チームはまた、システムのパフォーマンスとSLAに関する包括的な洞察を提供するために、オブザーバビリティの成果物の強化に力を注いだ。新しいアーキテクチャを展開した後、ライブチャットチャネルは、全体のコンタクトボリュームの36%を処理し、より信頼性の高いメッセージ配信(エラー率は46%から0.45%に減少)を行っている。

最近InfoQは、The Guardianがニュースルームのコラボレーションとアセット共有ツールであるPinboardでもGraphQLを使用していることを報告した。

作者について

この記事に星をつける

おすすめ度
スタイル

BT