ジャンプする

直接共有する

AIとML

私たちのAIがあなたのデータビジュアライゼーションの好みをどう学習するか。

Lumis

ジェームズ・フィッシャー

リードAIエンジニア

Lumisは単にチャートを作成するだけでなく、データ表示の好みを学習します。私たちの機械学習システムが個々のユーザーの好みにどのように適応するかを見てみましょう。

学習プロセス

AI生成チャートを修正するたびに、私たちのシステムはその好みを記録します。時間が経つにつれて、個人化されたモデルを構築します。

指標

改善

ユーザー満足度

+23%

チャート受け入れ率

+41%

ダッシュボード到達時間

-28%

手動調整

-52%

技術的な課題

従来のBIツールは数分または数時間ごとにダッシュボードを更新し、ビジネスオペレーションのリアルタイム性とデータ視覚化の静的な感覚の間にフラストレーションのある分断を作り出しています。数千の同時ダッシュボード接続全体でサブ秒のレイテンシ更新を提供しながら、巨大な同時接続負荷を処理できるシステムを構築する必要がありました。

最大の課題は技術ではなく、スケールで運用する際にユーザーに即時に感じさせるシステムを設計することでした。

単純なポーリングメカニズムを使用した初期アプローチは、膨大な計算リソースを消費し、目に見える遅延を引き起こしていました。ユーザーは新しい販売データをアップロードしたり、自分の`Salesforce`インスタンスに接続したりした後、数分待たなければなりませんでした。その間にダッシュボードが変更を反映するのを待ちました。これにより、ビジネスオペレーションのリアルタイム性とデータ視覚化の静的な感覚の間に非常に不快な分断が生まれました。

技術的な要件は厳しかったです:50,000以上の同時WebSocket接続を処理し、毎分数百万のデータポイントを処理し、サブ200msの更新レイテンシを維持し、分散システム全体でデータの整合性を確保し、パフォーマンス劣化なしに水平にスケールすることが必要でした。さらに、`PostgreSQL`、`MySQL`、`MongoDB`、リアルタイムAPI、ストリーミングデータフィードなど、複数のデータソースタイプをサポートする必要がありました。

アーキテクチャの設計とトレードオフ

現在のハイブリッドシステムに決定する前に、いくつかのアーキテクチャアプローチを評価しました。各アプローチには、レイテンシ、スケーラビリティ、コスト効率、実装の複雑性の間で重要なトレードオフがありました。

アーキテクチャアプローチ

平均レイテンシ

コスト効率

単純なHTTPポーリング

30-60秒

WebSocketストリーミング

200-500ms

サーバー送信イベント

150-400ms

ハイブリッドWebSocket + SSE

100-200ms

最終的に、`WebSockets`をリアルタイムの双方向コミュニケーションに、`Redis Streams`をメッセージキューイングと永続化に、関連する更新をグループ化するためのインテリジェントバッチアルゴリズムを使用した洗練されたストリーミングアーキテクチャを構築しました。主要な洞察は、ユーザーが200ms以内に到着した更新を「リアルタイム」と認識することができるため、ユーザー体験を犠牲にすることなく短い時間枠内で更新をバッチ処理できることでした。

私たちのシステムは、`Redis`をメッセージブローカーとセッションストアの両方として使用し、`PostgreSQL`が長期的なデータの永続性を処理します。データ変更が発生したとき、私たちはカスタム`EventProcessor`サービスを通じて更新をトリガーします。このサービスは、どのダッシュボードに更新が必要か、どのようにバッチ処理するか、どのユーザーがどのデータを受け取るべきかを、その許可とサブスクリプションに基づいて決定するための複雑なロジックを実装しています。

実装の詳細

リアルタイム更新システムは、シームレスなユーザー体験を提供するために連携するいくつかの相互接続されたコンポーネントからなります。`ConnectionManager`サービスはすべてのアクティブなWebSocket接続を追跡し、ユーザーセッション状態を維持します。一方、`UpdateDispatcher`は更新を正しい受取人にルーティングするための複雑なロジックを処理します。

// Real-time dashboard update system with intelligent batching
class UpdateDispatcher {
  constructor() {
    this.redis = new Redis(process.env.REDIS_URL);
    this.batchConfig = {
      maxBatchSize: 100,
      maxWaitTime: 100, // milliseconds
      compressionThreshold: 1024 // bytes
    };
  }

パフォーマンス最適化

サブ200msの目標レイテンシを達成するためには、いくつかの重要なパフォーマンス最適化を実装する必要がありました。これらの最適化は、ネットワークオーバーヘッドを最小限に抑え、サーバー処理時間を短縮し、全体的なシステムスループットを向上させるために共同で機能します。

インテリジェントな更新バッチ処理: 個々のデータポイントの更新を送信するのではなく、ダッシュボードと時間枠で関連する変更をグループ化します。100msのウィンドウ内に到着した更新は自動的にバッチ処理され、リアルタイムの更新の感覚を維持しながらネットワークリクエストの数を減らします。このアプローチにより、ピーク使用時にはネットワークトラフィックが最大85%削減されました。

差分データ送信: 各更新で完全なデータセットを送信するのではなく、私たちのシステムは現在の状態と前の状態の間の違いのみを計算して送信します。この差分アプローチにより、通常のビジネスデータにおいてはペイロードサイズを最大95%削減できます。なぜなら、一度のアップデートで大規模なデータセットの一部のみが変更されるからです。私たちはビジネスインテリジェンスアプリケーションで一般的な数値データに最適化された効率的なバイナリ差分アルゴリズムを使用します。

接続プールと多重化: 持続的なWebSocket接続を維持し、可能な限りデータベース接続を再利用します。私たちのConnectionPoolサービスは、数千の同時データベース接続を効率的に管理し、私たちのWebSocketManagerは接続ライフサイクルイベント、自動再接続ロジック、クライアントがネットワークの問題を経験した際の優雅な劣化を処理します。

マルチティアキャッシング戦略: ホットデータ(頻繁にアクセスされるダッシュボード状態)にはRedis、温かいデータ(最近のクエリ結果)にはMemcachedを使用し、予測されるユーザーアクションに対してインテリジェントなプリロードを実装します。キャッシュの無効化はイベント駆動パターンを通じて行われ、データの整合性を確保しつつキャッシュミスを最小限に抑えます。

接続管理

システムの安定性を保ちながら数千の同時接続を管理するために、堅牢なフォールトトレランスメカニズムを構築する必要がありました。ユーザーは複数のブラウザタブを開いていたり、モバイルアプリケーションに接続していたり、チームメンバーによって共有されたダッシュボードを見たり、さまざまな統合クライアントが同じデータストリームに同時にアクセスしたりする可能性があります。

私たちのConnectionManagerサービスは、これらのすべての接続を追跡し、アップデートがすべての関連エンドポイントに到達する一方で、ネットワークを過剰に負担させたり、重複処理のオーバーヘッドを生じさせないようにするための巧妙なロジックを実装しています。各接続には、ユーザー権限、ダッシュボードサブスクリプション、データソースアクセス権、クライアント機能を含むメタデータがタグ付けされています。

ネットワークの問題で接続が失われた場合、私たちのシステムはサンダリングハード問題を防ぐために、ジッターを伴った指数バックオフ再試行ロジックを実装します。切断期間中に逃した更新はキューに入れられ、接続が再確立されたときに配信され、ユーザーは一時的なネットワークの中断中であっても重要なデータ変更を失わないようにします。

監視と可観測性

スケールでリアルタイムシステムを運用するには、包括的な監視と可観測性が必要です。私たちは、更新レイテンシパーセンタイル、地理的地域別の接続数、データ処理スループット、コンポーネント別のエラー率、キャッシュヒット比率、ユーザーエンゲージメントパターンなど、数十のメトリクスを追跡します。

私たちの監視スタックは、メトリクス収集にはPrometheus、可視化にはGrafanaを使用し、システムのパフォーマンスが許容可能な閾値を下回ると、エンジニアリングチームに通知するカスタムアラートロジックを使用しています。私たちはリアルタイムシステムの健康状態を表示する詳細なダッシュボードを維持しており、ユーザー体験に影響を与える前にパフォーマンスの問題を特定し解決できるようにしています。

結果

最適化と生産ハードニングの6ヶ月後、私たちのリアルタイム更新システムはすべての主要メトリクスで例外的なパフォーマンスを一貫して提供しています。ダッシュボードの更新は現在、平均145msのレイテンシで到着し、99%の更新がピークトラフィック時でも300ms以内に配信されます。

システムは50,000の同時WebSocket接続のピーク負荷を問題なく処理し、パフォーマンスの劣化を最小限に抑えています。接続ごとのメモリ使用量はわずか2.3KBに最適化されており、数千の同時ユーザーをサポートする企業顧客にスケールしながらコスト効率を維持することができます。毎分数百万のデータポイントが処理されているにもかかわらず、データベースのクエリ性能は一貫しています。

おそらく最も重要なのは、ダッシュボードの応答性に対するユーザーの満足度が、リアルタイム更新システムを実装して以来78%増加したことです。ユーザーは、Lumisが今では「魔法のように」感じられ、「瞬時に応答する」と報告しており、私たちが目指していたシームレスな体験を生み出しています。システムの信頼性は卓越しており、過去6ヶ月間で99.97%の稼働率を維持し、ユーザーからデータ整合性の問題報告はゼロです。

毎日、インサイトや企業ニュースを直接あなたの受信ボックスにお届けするために登録してください。

AIであなたのチームを強化する準備はできていますか?

AIであなたのチームを強化する準備はできていますか?

14日間のトライアル、クレジットカードは不要です。