第8章. Kubernetesでデータをストリーミングする
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
データ・インフラについて考えるとき、多くの人が最初に思い浮かべるのは、実行中のアプリケーションの状態を保存する永続性だろう。したがって、ここまでデータベースとストレージに焦点を当ててきた。ここからは、クラウド・ネイティブ・データ・スタックの他の側面について考えていこう。
データ・パイプラインを管理している人にとっては、ストリーミングが出発点であり、データ・インフラの他の点は二の次かもしれない。スタート地点がどこであろうと、データ移動はデータスタック全体にとって極めて重要な部分である。この章では、Kubernetesでストリーミング・テクノロジーを使用して、クラウド・ネイティブ・アプリケーションでデータを安全かつ確実に共有する方法を検討する。
ストリーミング入門
第1章では、ストリーミングを、ある地点から別の地点へデータを移動させ、場合によっては移動中のデータを処理する機能と定義した。ストリーミングの歴史は、永続性の歴史と同じくらい長い。データが様々な分離されたストアにプールされるにつれ、データを確実に移動させることは、データを確実に保存することと同じくらい重要であることが明らかになった。当時はメッセージングと呼ばれていた。データはゆっくりと、しかし慎重に転送され、それは郵便に近いものだった。メッセージング・インフラストラクチャーは、配信保証付きで、非同期で順番に読み取り可能な場所にデータを置いた。これは、複数のコンピュータを使用する際の重要なニーズを満たすものであり、分散コンピューティングの基礎のひとつである。
現代のアプリケーション要件は、メッセージングとして知られていたものから、今日のストリーミングの定義へと進化している。一般的にこれは、より即時の処理を必要とする大量のデータを管理することを意味し、私たちはこれをニアリアルタイムと呼んでいる。Kubernetesでデプロイされる分散アプリケーションでは、順序保証と配信保証が決定的に重要な機能となり、多くの場合、必要なスケールを実現する重要な要素となっている。複雑なインフラを追加することで、どのようにスケールアップが可能になるのか?データの作成から、それが使用され、ストアされるまでのフローを管理する整然とした方法を提供することである。ストリームが信頼できる情報源として使われることは稀だが、より重要なのは、ストリームが信頼できる情報源として使われることだ。
ストリーミングの周りには、初めてのユーザを混乱させるソフトウェアや専門用語がたくさんある。どんな複雑なトピックでもそうであるように、理解を深めるには、パーツを分解することが役に立つ。あなたのユースケースに合ったストリーミング・システムを選ぶ際、評価すべき3つの領域がある:
配達の種類
配信保証
ストリーミングの機能範囲
それぞれの分野を詳しく見てみよう。
配達の種類
アプリケーションでストリーミングを使うには、ストリーミング・システムの長い選択肢の中から、利用可能な配信メソッドを理解する必要がある。プロデューサからコンシューマへのデータの流れを効率的に計画するために、アプリケーションの要件を理解する必要がある。例えば、"コンシューマは排他的アクセスが必要なのか?"などだ。その答えによって、どのシステムが要件に適合するかが決まる。図8-1は、ストリーミング・システムの最も一般的な選択肢の2点、ポイント・トゥ・ポイントとパブリッシュ/サブスクライブを示している: ...