Amazon Kinesis と Kafka の主な違い:
-
データ保持: Kinesis には最大7日間の保存期間有り。
-
セットアップ: Kafka は Kinesis よりもセットアップに時間がかかり、データ・クラスターをインストール(および管理)するためのチームが必要。
-
SDK(ソフトウェア開発キット) 対応: Kafka は Java に対応、Kinesis(AWS経由)は Java、Go、Android、.NET に対応。
-
価格: Kafka はオープンソースで無料。Kinesis はセットアップ費用がなく、ユーザーは使ったリソースに対して料金を支払う。
- レビュー:Webサイト G2において、Kafka は5つ星中4.4で Kinesis は4.1 であり、Kafka の方がスコアが高い。
データストリーマーのご紹介です!このサービスは、あるアプリケーションから別のアプリケーションへのメッセージを検証してルーティングし、ワークロードとメッセージキューを効果的に管理するものです。その結果 ユーザーは、一元化されたプロセッサーを通じてメッセージを処理し、大規模なデータストリームをより効率的に処理することができます。
Amazon Kinesis と Apache Kafkaという2つのデータストリームサービスは、もともと分散ログとして構築さたものであり、ログイベントを追跡して、複雑なデータストリームをリアルタイムで処理します。でもこのツールのうち、どちらが最も価値をもたらすのでしょうか?
そこで本記事では、特徴、価格、カスタマーレビューのスコアなどで、Amazon Kinesis と Kafka を比較してみました。
Kinesis とは
Amazon Kinesis は、操作ログ、SNS フィード、ウェブサイトのクリックストリーム、金融取引など、さまざまなソースからデータを取得する、リアルタイムデータストリーミングサービスです。そして、Kinesis はこのデータを処理および変換し、分析のためにデータストアに格納します。例えば Netflix では、Kinesis を使って何十億ものトラフィックフローが処理されています。
また、Kinesis は AWS(Amazon Web Services)の一部であり、Amazon によると、Kinesis は毎秒ギガバイトのデータを継続的に取得します。そしてユーザーはそのデータストリームを AWS のデータストアに転送します。
Integrate.io で、Kinesis との統合がしやすくなり、コードなしでデータを処理できるようになりました。詳細はこちら
Kafka とは
Apache Kafka は、オープンソースの「イベントストリーミングプラットフォーム」、つまりイベントストリームの書き込みと読み込みを行うプラットフォームであり、Kinesis のようにリアルタイムでデータストリームを扱います。ストリーミングデータの読み取り、保存、分析に使用され、組織に貴重なデータのインサイトを提供します。例えば、Uber のライドシェアの道のりに関するビジネスメトリクスには Kafka が使われています。
Kinesis と Kafka の大きな違いは、そのアーキテクチャにあります。Kafkaは、プラットフォームのデータストアでストリーミングデータを生成するアプリケーション(「プロデューサー」と呼ばれる)を、プラットフォームのデータストアでストリーミングデータを消費するアプリケーション(「コンシューマー」と呼ばれる)から「切り離し」ます。また、Kafka は Kinesis よりも散在性が高いので、ノードの障害に有効です。
ちなみに Apache によると、フォーチュン100社の80%以上で Kafka が使われて(そして信頼して)います。
Amazon Kinesis と Kafkaの比較:機能
Kinesis |
Kafka |
|
G2.comのカスタマーレビュースコア |
星5つ中4.1 |
星5つ中4.4 |
データの保存場所 |
Kinesis のシャード |
Kafka のパーティション |
SDK対応 |
Java, Android, .NET, Go |
Java |
データ保持期間 |
7日間 |
長期保存(ユーザーによる保存期間の設定) |
必要なスキルレベル |
基礎 |
上級 |
カスタマイズ |
有 |
有 |
性能上の制約 |
同期して書き込むのは一度に3台まで |
制限が少ない |
保存 |
Dynamo db |
Zookeeper |
価格 |
使用するリソースに応じて、初期費用なしで利用可能 |
無料(オープンソース)だが、ハードウェア/セットアップ費用の考慮が必要 |
サポート |
デベロッパーセンター、チュートリアルなど |
チュートリアル、ミートアップ、ビデオ、など |
KinesisとKafkaには、ユニークな特徴が以下のようにいくつかあります。
- Kinesis は Java、Android、.NET、Go に対応し、Kafka は Java のみ対応
- Kinesis は3台のマシンまたはデータセンターに同期して書き込むことができ、Kafka のユーザーはより多くの設定が可能。
- Kinesis ではデータはシャードで保存され、Kafka ではデータはパーティションで保存される。
パフォーマンスについては、Kinesis の処理能力は毎秒数千通に達しており、Kafka の処理能力は毎秒約30,000通に達しています。これは Kafka の圧勝と言えますね。
ただ、両プラットフォームには制限があります。Kinesis のデータ保持期間は7日間であり、Kafka はセットアップと運用に多くの労力を必要です。(Kafka には分散エンジニアリングとクラスタ管理の経験が必要)
両プラットフォームに代わるものがあります。Integrate.io は、複雑なデータパイプラインを管理するクラウドベースの ETL/ELT ツールです。データ統合の代替手段として、Integrate.io はコードを必要とせず、データベース、データウェアハウス、データレイク、Salesforce などにデータを格納するための1,000以上の統合機能がすぐに使える状態で提供されています。
サポートとトレーニング
Kinesis
Kinesis には様々なサポートオプションがありますが、すべて親会社であるAmazonの下にあり、そこでユーザーは、デベロッパーセンター、ナレッジセンター、チュートリアルにアクセスし、ヒントやハウツーを得ることができます。
ちなみに、Kinesis は G2.com のサポート部門で10段階の8にランク付けされています。
Kafka
一方、Kafka は Kinesis よりも多くのコミュニティオプションを提供しており、サミットイベントやミートアップなど、ユーザーがネットワークやテクノロジーについて議論できる場が提供されています。その他、チュートリアル、ビデオ、サンプルプロジェクトなどのサポートがあります。
ちなみに、Kafka は G2.com のサポート部門で10段階の7.3にランク付けされています。
価格設定
Kinesis
Kinesis の価格設定では、必要なシャードの数と、データストリームに送信するデータプロデューサーのサイズに応じて増加します。初期費用はかからず、使用したリソースに対してのみ支払いが発生します。
Kafka
オープンソースのプラットフォームである Kafka は無料ですが、Kinesis よりもセットアップとメンテナンスのプロセスが大きく、追加のインストール/サポートの費用を考慮しないといけません。インフラを自分で管理し、ハードウェアのコストについても考える必要があります。
おすすめ記事:Integrate.io の料金設定の仕組み
まとめ
Kinesis と Kafka は、複雑なデータストリームを効率化するデータストリームサービスです。どちらのサービスも信頼性が高く、価値を提供してくれますが、限界もあります。例えば メッセージを7日以上保存したい場合、Kafka はソリューションを提供できるかもしれませんが、そのデータストリーム処理を機能させるには、人間のサポートが多数必要です。
様々なソースからデータを抽出、変換、格納 したいのに、データエンジニアリングチームがない時は、Integrate.io のような ETL ソリューションにお任せください。デモや14日間のリスクフリーパイロットをご希望の方は、こちらからぜひお問い合わせください。