リアルタイム・データ処理とは何か?

リアルタイム・データ処理とは何か、なぜそれが企業にとってミッションクリティカルなのかを学びましょう

あなたがソファに座ってフットボールの試合をストリーミングしているとしましょう。これは普通のフットボールの試合ではありません。あなたのチームがライバルと対戦しているのです。あなたのチームは5点差で、試合は残り2秒、4thダウンで、レッドゾーンでボールを持っています。これが試合最後のプレーだ。ボールがスナップされ、クォーターバックが下がり…そしてインターネットが切れました。

インターネットが使えなくなるのはほんの数秒のことで、もしかしたら家の中のスマートデバイスの電源が入り、テレビが一瞬無線LANから追い出されたのかもしれません。しかし、復旧したときには試合は終わっていました。あなたは自分のチームが勝ったのを見ました!でも、どうやって?最後の2秒間に何が起こったのか?インターネットが落ちたのはほんの数秒のことなのに、どうしてチームが勝ったのかわからない。自己憐憫の音楽の出番です。

あなたが経験したのは、リアルタイムのデータ処理に対する対応のまずさでした。

しかし、リアルタイム・データ処理とは何だろうか?技術的に言えば、リアルタイム・データ処理とは、メッセージやイベントの一貫した中断のない配信と処理のことである。つまり、あなたのインターネットが数秒間止まったとき、あなたはメッセージの中断を経験したことになります。この例では、メッセージはオーディオとビデオフレームです。インターネットが復旧したとき、あなたはタッチダウン・パスのフレームを完全に見逃し、怒りました(当然だ)。

しかし、もしストリーム・プロバイダがメッセージ・バッファリングやリプレイでリアルタイム・データ処理をもう少し違った方法で処理していたら、インターネットが復活したとき、フットボールの試合は中断したところから再開され、あなたはあのタッチダウン・パスを自分の目で見て、その瞬間を生きることができるでしょう。💚

なぜリアルタイムデータ処理が企業にとってミッションクリティカルなのか?

リアルタイム・データ処理が企業の成功に不可欠な要素であることは言うまでもないが、その意味を真に理解することは全く別のことでです。私たちの多くは(私も含めて)、リアルタイム通知を重要でない機能だと考えています。WebSocketが悪い状態になったとしても、大した問題ではないとされます。ユーザーは更新を見るためにページを更新しなければならないのでしょうか?

実は、通知はリアルタイム・データ処理のほんの一部に過ぎません。リアルタイム・データは、メディアやエンターテインメントゲーム、フィンテックといった主要産業の心臓部です。企業がリアルタイム・データ処理をどのように処理しているかに基づいて、何が危機に瀕しているのかを見てみましょう。

顧客の維持

今話した例は、親しみやすいシナリオです。しかし、もしそれがあなたの身に起こったら、あなたは誰に怒るでしょう?インターネット・サービス・プロバイダ?ストリーミング・プロバイダー?視聴していたネットワーク?もしかしたら、ネットワーク上にデバイスを持ちすぎている自分自身?いや、最後のはありえません。

結局のところ、ストリーミング・サービス・プロバイダーがゲームを向上させる必要があるのです。というのも、もしプロバイダーのライブストリーミングの質が悪いという噂が広まれば、人々はすぐに別のプロバイダーに移ってしまうからです。メディアやエンターテインメントのようにプロバイダーが飽和状態にある市場では、消費者が自社のサービスに忠誠を誓い続けることはほとんどいません。私の頭から、子供たちが見ているサービスとして、Netflix、Peacock、Disney+、Prime Video、Discovery+を挙げることができます。プライム・ビデオが劣悪な体験を提供し始めたら、私たちはそこから離れます。

リアルタイムデータ処理がミッションクリティカルなその他の例

FinTech

もっと深刻な例を挙げましょう。お金の話をしましょう。具体的には、高頻度取引(HFT)について話します。HFTとは、金融会社がリアルタイムで価格が変動する株を自動的に売買する株式取引の一種です。これによって、企業は急激な価格変動から一定の小さな利益を得ることができます。これは個人のポートフォリオでできることではなく、大企業がやっていることです。

価格変動は数ミリ秒ごとに起こります。仮に5ミリ秒ごとに価格が変動すると見積もると、1時間に72万回変動することになります!このような高速のデータ変化には、データ処理がリアルタイムであるだけでなく、常に最新である必要があります。メッセージの欠落や遅延は、競合他社に販売で先を越されることを意味し、さらに悪いことに、無効な価格で取引を実行することになりかねません。

例を挙げてみましょう。アップル(AAPL)の株価が222.94ドルに位置しているとします。これを書いている今が実際の現在値です。あるHFT会社がアップルに注目し、100万ドル相当の株を買おうとしているとすれば、それは4485株になります。この文章を書いた後、もう一度チェックしたら、AAPLの現在の価値は222.66ドルでした(8秒後)。そうすると4,491株になります。つまり6株、1335.96ドルの差です。もしソフトウェアが価格変更メッセージを落としていたり、リアルタイムでメッセージを配信していなかったとしたら、それは大きなミスになります。

ただし、さらに悪いことがあります。

アップルのような流動性の高い銘柄は、1日に何万回も取引されます。この機会費用で最悪のシナリオを想定すると、1日に1000万ドル以上の損失が発生することになります。うわっ。

2012年、ナイト・キャピタル・グループでこのようなことが実際に起こりました。同社はサーバー群にコード変更を施したが、そのうちの1台の更新を怠り、リアルタイム・データの処理に支障をきたしました。最終的には、45分で4億4000万ドルの損失を出した。興味深い話なので、ぜひ記事を読んでください。

Gaming

『フォートナイト』や他の多人数同時参加型オンライン(MMO)ゲームをプレイしていると想像してください。すべてのプレイヤーの動き、アクション、弾丸、構成が、すべてのプレイヤーのスクリーンに瞬時に反映されなければならない。プロプレイヤーは平均して1秒間に4~8回の入力を行い、各ゲームは100人のプレイヤーでスタートします。これは、各ゲームが毎秒100人のプレーヤーに600の入力を同期させていることを意味します。計算すると、最初の5分間で約1,800万イベントが発生することになります。

しかし、これらのイベントが遅れたり、遅れたり、順番通りに配信されなかったりするとどうなるだでしょうか?ゲーマーなら誰でも、ラグという最もフラストレーションのたまるゲームプレイ体験のひとつをもたらすと言うでしょう。ラグが発生すると、プレイヤーの体験は一変します。敵の動きがテレポートしているように見えたり、構造物が見えなくなったり、完全に見えなくなったり、ファントムダメージを受けたり(ダメージを受けたのにビデオフレームが落ちているため攻撃が見えなかったという意味)、プレイヤーがラバーバンディングしたりします。決して楽しい体験とは言えないでしょう。

eスポーツは数十億ドル規模の産業であり、大規模な観客、大手スポンサー、そして多くのゲーム会社にとってホッケースティックの成長の機会を持ちます。極端に単純化すれば、ビデオゲームの対戦プレーです。

あなたのゲームにメッセージ配信のほんのわずかな遅延があったり、日常的にメッセージがドロップしたりすると、(何十万ドルもかけてプレイしている)プレイヤーに不公平なアドバンテージを与えることになりかねません。これはプレーヤーと観戦者の双方に不幸をもたらしかねず、その結果、企業としての評判と競争力が損なわれ、最終的には大きな収益の損失につながります。私にはそのサービスのミッションクリティカルな側面のように聞こえます。

リアルタイムデータの正しい処理方法

難しそうです。大手企業はどうやっているんでしょう?”と思うかもしれません。まず第一に、その通りです。難しいのです。しかし、そうである必要はありません。フォールト・トレラント、リアルタイム、大規模スケーラブルなイベント配信システムを構築する際には、いくつかの重要な考慮事項があります。

超低遅延インフラを使用する

笑ってはいけません。バカバカしく聞こえるのは分かっています。しかし、口で言うのは口でやるよりずっと簡単です。ユーザーの地理的に近い場所にある高性能サーバーを使えば、ユーザーとのデータの受け渡しにかかる時間を短縮できます。

信頼性の高いメッセージ配信プロトコルの実装

あなたは、配信に失敗するリスクを最小限に抑えながら、可能な限り迅速にメッセージを送信したいと考えています。WebSocket上でgRPCのようなプロトコルを使用すると、より高速なシリアライズとデータ転送、エラー、再試行、タイムアウトのための組み込みメカニズムが提供され、接続ごとに複数のストリームを使用することができます。最大のスループットを得るためには、設計を低レベルにする必要があります。

リアルタイムのデータ分析でプロアクティブに監視

何かが間違っていることに気づくまでに45分もかかるような大惨事は避けたいものです。即座に知る必要があり、迅速に対応する必要があります。できる限り早く正常な状態に戻すことが重要です。

分散システムを利用し、クラウドのスケーラビリティを活用する

ワークロードを複数のコンピュート・リソースに分割します。あまり無理をさせないと、パフォーマンスが低下します。トラフィック急増時に自動的にスケーリングするメカニズムを使用します。

ミッションクリティカルなデータ処理におけるMomentoのパートナーとしての役割

Momentoは、プラットフォーム上で提供されるサービスを超低遅延にすることを目的に構築されています。キャッシングからトピックスによるリアルタイム通知、高スループットのストレージ(近日公開予定!)まで、ミッションクリティカルなワークロードも安心です。

当社のSDKはgRPCの上に構築されており、HTTP/2、protobufシリアライゼーション、双方向ストリーミングによって最高のパフォーマンスを提供します。当社のウェブコンソールでヒット率、エラー、データ転送などを監視するか、お気に入りの観測ベンダーに転送してください。最後に、AWSの上に構築されたサーバーレス・サービスの即時可用性と事実上無制限の容量で安心してください。

パフォーマンスを最適化し、顧客に気づかれる前に問題を解決できるような機能を提供するためには、手を抜いたことはありません。失敗が許されないときは、Momentoをお選びください。

Happy coding!