ログイン / 登録 アカウント

統合

Apache Kafka とは

Apache Kafka は分散データストリーミング・プラットフォームで、レコードのストリームをリアルタイムで公開、サブスクライブ、保存、処理できます。複数のソースからデータストリームを処理し、複数のコンシューマーに配信することに特化しており、ただ A から B に動かすのではなく、A から Z までの複数の地点、および必要なあらゆる場所に、同時に大量のデータを移動させることが可能です。

Apache Kafka は従来のエンタープライズ・メッセージング・システムに代わるものです。当初は LinkedIn が 1 日 1 兆 4,000 億件のメッセージを処理するために社内システムとして開発したものですが、今ではさまざまなエンタープライズのニーズに対応するアプリケーションを持つオープンソースのデータストリーミング・ソリューションとなりました。


Apache Kafka との非同期統合

マイクロサービスによって、開発をめぐる状況は一変しました。共有データベース階層などの依存関係が減少し、開発者の俊敏性が増しました。しかし、開発者が構築している分散アプリケーションには、データを共有するためにまだいくらかの統合が必要です。統合の手法としては同期を使った方法が一般的であり、この手法ではアプリケーション・プログラミング・インタフェース (API) を使用して異なるユーザー間でデータを共有します。

もう 1 つの手法である非同期の方法は、中間ストレージにデータを複製します。ここが Apache Kafka の出番で、他の開発チームからのデータをストリーミングしてデータストアに入力し、データを複数のチームとアプリケーション間で共有できるようにします。

マイクロサービスを利用して開発を行うチームにとっての統合の要件は、従来のウォーターフォール型開発チームのものとは異なります。このようなチームには、次の 3 つの基本的な能力が必要です。

  1. 分散統合:必要に応じて継続的にデプロイでき、一元化された ESB タイプのデプロイに制限されない、軽量でパターンベースの統合。
  2. API:収益性があり信頼できるサービスの使用方法を提供する、パートナー、顧客、開発者のエコシステムを育成するための、API ベースのサービス。
  3. コンテナクラウドネイティブのコネクテッド・アプリケーションを開発、管理、スケーリングするためのプラットフォーム。コンテナによって、DevOps プロセスの一貫として個別にデプロイでき、すぐに使えるクラスタリングでサポートされる、無駄のないアーティファクトの開発が可能になり、高可用性が確保されます。

Red Hat ではこのアプローチを「アジャイル・インテグレーション」と呼びます。このアプローチでは、統合をアプリケーション開発プロセスの一部に取り入れることで俊敏性を増し、適応性の高いソリューションを提供します。アジャイル・インテグレーションの特長の 1 つが、アプリケーション固有のニーズに応じて、同期または非同期の統合を自由に選んで使用できることです。非同期のイベント駆動型統合を使用して同期統合と API の使用を増大し、マイクロサービスのサポートを強化してアジャイル・インテグレーションを実現することを目指すのであれば、Apache Kafka は非常に優れた選択肢です。開発プロセスを効率化し、イノベーションを促進して時間を節約する取り組みの中心に Apache Kafka を据えれば、最終的には、新しい機能、アプリケーション、サービスを迅速に市場に投入することも可能になるでしょう。


Apache Kafka を使用する場面

Apache Kafka はストリーミング・データ・パイプラインに組み込まれ、システムおよびアプリケーション間でデータを共有します。また、このデータを使用するシステムおよびアプリケーションにも組み込まれます。Apache Kafka は、高スループットとスケーラビリティが欠かせないさまざまなユースケースをサポートします。Apache Kafka によって、特定のアプリケーションでのデータ共有に対してポイントツーポイントの統合の必要性が最小化されるので、レイテンシーがミリ秒単位にまで短縮されます。つまり、データがすぐにユーザーの手に渡るようになります。これは、IT 運用や e コマースなど、リアルタイムでデータを取得する必要があるユースケースにおいては大きなメリットになり得ます。

Apache Kafka は毎秒数百万のデータポイントを処理できるため、ビッグデータの課題に対する最適な解決策です。さらに Kafka は、現在このような膨大な量のデータを取り扱っていない企業にとっても意味があります。IoT (モノのインターネット) やソーシャルメディアなど、多数のデータ処理ユースケースにおいて、データは爆発的に増加しており、現在のデータ量を基準に構築しているアプリケーションではまもなく手に負えなくなります。データ処理の面ではスケーラビリティを考慮する必要があり、データの急増化を見越しておく必要があります。

IT 運用

IT 運用の要はデータです。IT 運用部門はデータにアクセスする必要があり、しかも迅速なアクセスが必要です。Web サイト、アプリケーション、システムを常時稼働させ、機能させるには、これが唯一の方法です。Apache Kafka は、監視、アラート、レポート、ログ管理、Web サイトアクティビティの追跡など、さまざまな情報源からのデータ収集を中心とする IT 運用業務に適しています。

IoT (モノのインターネット)

Gartner によると、2020 年までに、IoT デバイスは 200 億台以上になると予測されています。IoT の価値は、この膨大な量のセンサーから生成される実用的なデータです。Apache Kafka は IoT から送信される膨大な量のデータを処理できるスケーラビリティを念頭に設計されています。

e コマース

e コマースは Apache Kafka を使用する事例として成長中の分野で、ページクリック、いいね、検索、注文、ショッピングカート、インベントリーなどのデータを処理できます。


Kubernetes で Apache Kafka アプリケーションをスケーリングする

Kubernetes は Apache Kafka にとって理想的なプラットフォームです。開発者には Kafka アプリケーションをホストするスケーラブルなプラットフォームが必要で、その回答が Kubernetes です。

Apache Kafka と同様に、Kubernetes も開発プロセスの俊敏性向上に貢献します。Google のクラウドサービスを支えるテクノロジーである Kubernetes は、コンテナ化アプリケーションを管理するオープンソース・システムであり、これを使うことで、コンテナに関連する手動プロセスの多くが不要になります。Apache Kafka を Kubernetes で使用すると、Apache Kafka のデプロイ、構成、管理、使用が最適化されます。

Kafka と Kubernetes を組み合わせると、Kafka のすべてのメリットに加えて、Kubernetes の特長であるスケーラビリティ、高可用性、移植性、デプロイの容易性も活用できます。

Kubernetes のスケーラビリティは自ずと Kafka を補完します。Kubernetes では、シンプルなコマンドでリソースをスケールアップまたはスケールダウンできます。または、必要に応じて使用量をベースに自動的にスケーリングして、コンピュート、ネットワーク、ストレージのインフラストラクチャを最適に利用できます。この機能によって、限りのあるリソースプールを Apache Kafka と他のアプリケーションで共有させることが可能になります。また、Kubernetes を使えば、Apache Kafka をインフラストラクチャ・プロバイダーやオペレーティングシステムに移植することもできます。Kubernetes によって、Apache Kafka クラスタをオンサイトおよびパブリック、プライベート、またはハイブリッドクラウドにまたがらせ、異なるオペレーティングシステムを使用することができます。

Red Hat による統合

Red Hat は、オープンソースやオープンスタンダードを通じて、オンプレミスでもクラウドでも利用可能なモジュール式の軽量で包括的な統合ソリューションを提供しています。

メッセージング

Red Hat® AMQ の一部である AMQ Streamsは、Red Hat OpenShift® Container Platform 上で Apache Kafka を提供します。AMQ Streams は、Apache Kafka に基づく、スケーラブルな高パフォーマンス分散データストリーミング機能で、Kubernetes 上で実行します。

コンテナ・プラットフォーム

コンテナ・プラットフォームでコンテナを使用したクラウドネイティブ・アプリケーションの開発、デプロイ、管理、およびスケーリングを行います。OpenShift はこれらのアプリケーションをすべて自動的にオーケストレーションし、MQ、Fuse、および3scale API Management のような製品と連携して、アジャイル・インテグレーション・アプローチをクラウドで実現できます。

Red Hat を使用した統合についてさらに調べる