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日間のリスクフリーパイロットをご希望の方は、こちらからぜひお問い合わせください。