|
[51CTO.com クイック翻訳] ほぼすべてのテクノロジーに関する意思決定は、2つの基本的な基準を満たす必要があります。それは、企業がビジネス目標を達成できるようにすることと、テクノロジーアーキテクチャの他の部分と連携して動作することです。アプリケーションアーキテクチャを構築するためのデータ層テクノロジーの選択においては、オープンソースのApache Cassandra、Apache Kafka、Apache Spark、Elasticsearchが依然として最も人気があります。 ただし、すべての使用シナリオに適した選択肢というわけではありません。
これらの各テクノロジーと、これらのオープンソース ソリューションが適している、または適していないユース ケースについて、さらに詳しく調べる価値はあります。 1. Apache Cassandra 2007 年に Facebook によって最初に作成された Cassandra は、Dynamo アーキテクチャと Bigtable スタイルのデータ モデルを利用して NoSQL データ ストレージを提供し、高い可用性とスケーラビリティを実現します。 • Apache Cassandra はいつ使用すべきですか? Cassandraは、最高レベルの常時可用性が求められるユースケースに最適です。このデータベースは、特に、高負荷のワークロードが見込まれる企業や、ワークロードの増加に合わせてサービスを柔軟に拡張したい企業に最適です。Cassandraは、容易な拡張性というメリットを提供します。Cassandraは、複数のデータセンターにまたがる信頼性の高いデータ冗長性とアクティブ/アクティブ運用を実現します。 • いつ使用してはいけないのでしょうか? データウェアハウスや純粋に分析目的のストレージを扱う場合(SparkコネクタやTableau、Hadoopプラグインの利用を考慮しても)、Cassandraは他のテクノロジーよりも多くのリソースを消費します。また、Cassandraはリアルタイム分析、特にエンドユーザーによるアドホッククエリやカスタムクエリには適していません。これは、アプリケーション側の実装コードが非常に複雑になる可能性があるためです。さらに、CassandraはACID要件のほとんどを満たしていません。 2. アパッチカフカ LinkedIn の技術チームによって開発された Apache Kafka は、非常にスケーラブルで可用性の高いストリーミング プラットフォームとメッセージ バスを提供します。Kafka は分散ログとして機能し、新しく到着したメッセージはキューの先頭に追加され、リーダー(コンシューマー)はオフセットに基づいてメッセージを使用します。 • Apache Kafka はいつ使用すべきですか? マイクロサービスやサービス指向アーキテクチャを含むユースケースでは、Apache Kafka が賢明な選択肢となることがよくあります。Kafka は効率的な作業キューとしても機能し、複数の作業パスを調整し、作業が到着するまで待機することでコンピューティングパワーを節約します。このプラットフォームのストリーム処理機能は、異常検出、ドリルダウン、集約、そしてメトリクス配信に適しています。Kafka は、イベントソーシング、様々なマイクロサービス間のデータ連携、分散システム向けの外部コミットログの提供においても強力なテクノロジーです。その他の適切なユースケースとしては、ログ集約、データマスキングとフィルタリング、データエンリッチメント、不正行為検出などが挙げられます。 • いつ使用してはいけないのでしょうか? 状況によっては魅力的に映るかもしれませんが、Kafka をデータベースやレコードソースとして使用することは絶対に避けてください。少なくとも、そのようなユースケースにおける Kafka の制限と特性を十分に理解していない限りは使用しないでください。真のデータベースは、ほとんどの場合、操作が容易で柔軟性も高くなります。また、Kafka はトピック全体を含むシーケンシャル処理には適していません。リアルタイムの音声や動画、その他のロスのあるデータストリームなど、パケットをエンドソースに迅速にプッシュすることが目的のユースケースでは、Kafka ではなくカスタムソリューションを使用する必要があります。 3. Apache Spark Apache Sparkは、大量のデータを扱うユースケースに適した汎用クラスタコンピューティングフレームワークです。データをパーティション化し、パーティション上で計算を実行することで、ワーカーは他のワーカーからのデータが必要になるまで、あらゆるタスクを実行できます。この設計により、Sparkは優れたスケーラビリティと可用性を実現すると同時に、データ損失に対する高い耐性も備えています。 Apache Spark はいつ使用すればよいですか? Sparkは、特に複数のソースからデータが到着する大規模な分析を伴うユースケースに最適です。ETLをはじめとするシステム間のデータ移動、特にトランザクションデータストアからデータウェアハウスやデータレイクへの継続的なデータ入力、あるいはデータベースやシステムの移行といった単発のシナリオなど、あらゆるユースケースにおいて強力なソリューションとなります。既存データを用いた機械学習パイプラインの構築、高レイテンシのデータストリーム処理、あるいはインタラクティブ、アドホック、探索的な分析の実行などを行う企業にとって、Sparkは理想的なソリューションです。コンプライアンスの観点から見ると、Sparkはデータマスキング、データフィルタリング、大規模データセットの監査といった機能を提供しており、企業のコンプライアンス要件遵守を支援するのに最適です。 • いつ使用してはいけないのでしょうか? リアルタイム処理や低レイテンシ処理を必要とするユースケースでは、Spark は一般的に最適な選択肢ではありません(Apache Kafka などのテクノロジーは、リアルタイム ストリーム処理を含むこれらの要件を満たす優れたエンドツーエンドのレイテンシを提供します)。小規模なデータセットや単一のデータセットを処理する場合、Spark は必ずしも理想的な選択肢とは言えません。さらに、データウェアハウスやデータレイクに関しては、Spark と連携するように設計された高度なテクノロジー製品も存在しますが、一般的には Apache Spark ではなく高度なテクノロジーを使用するのが最善です。 4. エラスティックサーチ Elasticsearchは、非構造化データの検索と分析のための幅広い機能を備えた全文検索エンジンを提供します。このテクノロジーは、ほぼリアルタイムでスケーラブルな線形検索、強力な検索オプション、そして堅牢な分析機能を提供します。 Elasticsearch はいつ使用すればよいですか? Elasticsearch は、全文検索、地理検索、公開データのクロールと集約、ログ記録とログ分析、視覚化、少量のイベント データとメトリックを必要とするユース ケースに最適です。 • いつ使用してはいけないのでしょうか? Elasticsearch は、リレーショナル データを含むデータベースまたはレコード ソースとして使用したり、ACID 要件を満たすために使用したりしないでください。 補完的な技術を選択する 企業にとって最適なテクノロジーの組み合わせ(オープンソースか否かに関わらず)を選択するには、ソリューション自体を評価するだけでは不十分です。意思決定者は、企業が各ソリューションをテクノロジーアーキテクチャの一部としてどのように採用し、活用していくかを構想する必要があります。Apache Cassandra、Apache Kafka、Apache Spark、Elasticsearch は、特に相互補完的なテクノロジーを提供するため、企業にとってこれらを組み合わせることは賢明な選択です。また、オープンソースであるため、ライセンス料やベンダーロックインの心配もありません。これらのテクノロジーを組み合わせ、それぞれのメリットを活用することで、企業は目標を達成し、拡張性、可用性、移植性、そして回復力に優れたアプリケーションを開発できます。 原題: オープンソースの Apache Cassandra、Kafka、Spark、Elasticsearch を使用するべきタイミングとそうでないタイミング、著者: Ben Slater [この記事は51CTOによって翻訳されました。提携サイトへの転載の際は、元の翻訳者と出典を51CTO.comとして明記してください。] |