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

統合

Kubernetes で Apache Kafka を実行する理由

Jump to section

マイクロサービスクラウドネイティブ開発を採用するエンタープライズ IT はますます増加しており、その結果、イベント駆動型アプリケーション (EDA) によって分散システムが投入されています。この動的な開発環境では、多くのデジタルリーダーが Apache Kafka を利用し、それを Kubernetes と組み合わせています。

Apache Kafka によって、ユーザーはビジネスをリアルタイムで確認および分析し、絶えず変化する市場の状況にすばやく対応することができます。さらに、Apache Kafka は、内部のステークホルダー、外部のパートナー、サプライヤー、顧客とのリアルタイム接続を確立し、維持するための優れたオプションです。

Kafka Streams (任意のアプリケーションに追加できる Apache Kafka 内の機能) は、Kafka イベントのシンプルで強力なストリーム処理を可能にします。膨大な量のデータの処理と分析を、その場で、継続的かつ同時に実行できるという点で、Apache Kafka は他のメッセージングのオプションとは一線を画しています。Apache Kafka を使用すると、ユーザーは、ビッグデータ機構が数値を処理するのを待つのではなく、インラインのリアルタイム分析のためにイベントを集約、変換、強化、整理することができます。このため、リアルタイムデータへの即時応答を必要とするすべてのアプリケーションにとって Apache Kafka は不可欠です。

Apache Kafka は、クラウドネイティブ開発の理想的な基盤です。クラウドネイティブ・アプリケーションはイベント駆動型であり、Apache Kafka はイベントの管理に最適なバックボーンです。分散ストリーミング、リアルタイム処理、高いスケーラビリティといったコアなイベント駆動型機能はすべて、Apache Kafka によって可能になります。

クラウドネイティブ後の次のステップであるサーバーレス・アーキテクチャもイベントベースであり、Apache Kafka によって実現できます。開発者は、Kubernetes 上の Apache Kafka を利用して、スケーラブルなサーバーレス通知、プロセス間通信、サーバーレス機能の可視性を提供できます。

Kubernetes で Apache Kafka を実行する理由

Apache Kafka は、Kubernetes のコンテナ管理システムに頻繁にデプロイされます。これは、ホストのクラスタ全体でコンテナのデプロイ、スケーリング、運用を自動化するために使用されます。Kubernetes 上の Apache Kafka は、次世代のアプリケーション開発であるクラウドネイティブ開発と密接に関連しています。クラウドネイティブ・アプリケーションは、クラウドを介して高いスケーラビリティを提供する独立した疎結合の分散サービスです。同様に、Kafka で構築されたイベント駆動型アプリケーションは疎結合され、分散型ハイブリッドクラウド環境全体でスケーリングを行えるように設計されます。

Kubernetes で Apache Kafka を実行する運用チームにとっての主なメリットは、インフラストラクチャの抽象化です。これは、一度構成すればどこでも実行できます。現代の運用チームは通常、さまざまなオンプレミスリソースとクラウドリソースを管理します。Kubernetes を使用すると、これらのアセットを、Apache Kafka などのソフトウェアリソースの割り当てが可能なコンピューティング・リソースのプールとして扱うことができます。さらに、この同じ Kubernetes レイヤーにより、すべての Apache Kafka インスタンスを管理するための単一の環境が作られます。

Kubernetes に本来備わっているスケーラビリティは自ずと Apache Kafka を補完します。Kubernetes を使用すると、アプリケーションはシンプルなコマンドでリソースをスケールアップまたはスケールダウンできます。または、使用量をベースに自動的にスケーリングして、コンピュート、ネットワーク、ストレージのリソースを最も経済的に利用できます。また、Kubernetes は、Apache Kafka にオンプレミス、パブリック、プライベート、またはハイブリッドクラウドにまたがる可搬性を与え、異なるオペレーティングシステムを使用します。

Strimzi:Kubernetes で Apache Kafka を機能させる

Apache Kafka の手動運用は、多くのコンポーネントの過剰な構成を必要とする複雑な作業です。ベアメタルでの (そしてやはり仮想マシンでも) Apache Kafka の実行は複雑です。ノードのデプロイ、監視、更新、ロールバックは非常に複雑で困難です。

ここで、この複雑さを解決するものとして登場するのが、Strimzi オープンソース・プロジェクトです。Strimzi はオペレーターを使用して、Apache Kafka の構成をスムーズかつシームレスにデプロイします。オペレーターは、Kubernetes でアプリケーションをデプロイおよび管理するための最先端の機能で、インフラストラクチャレベルで抽象化し、開発者がインフラストラクチャに関する多くの情報を持たなくてもアプリケーションをデプロイできることから、開発に柔軟性をもたらします。オペレーターが自動的にインフラストラクチャをプロビジョニングして、すべての詳細を管理するので、開発者は専門的事項 (マシンの数やハードウェアの種類など) を知る必要がありません。

Strimzi には IaC (Infrastructure as Code) のメリットがあり、開発者はコードのようなインストラクションを簡単に記述するだけでインフラストラクチャを定義でき、Strimzi はこのインストラクションを完璧に実行します。Strimzi は、高可用性モードでの Apache Kafka のデプロイを単純化することもできます。これも他では困難です。

Strimzi のオペレーターは、Apache Kafka の多くのセキュリティ上の懸念にも対応しています。これは、Strimzi を実行するもう 1 つの重要な理由です。また、Strimzi は、シングルサインオン、暗号化、認証を使用して、Kubernetes 上の Apache Kafka のセキュリティを自動化するため、開発者は基本的なセキュリティ機能の実装に時間を費やす必要がありません。

適切な EDA ソリューションを見つける

Red Hat Integration の一部である Red Hat AMQ Streams は、Apache Kafka および Strimzi プロジェクトの Red Hat エンタープライズ・ディストリビューションです。AMQ Streams が Apache Kafka にもたらす付加価値の多くは、Kubernetes や、Kubernetes の Red Hat ディストリビューションである Red Hat OpenShift で Apache Kafka を使用することに焦点を当てています。

OpenShift 上の Red Hat AMQ Streams は、Kubernetes 上の Apache Kafka によって、分散型データストリームとストリーム処理を行うマイクロサービスベースのアプリケーションをサポートするエンタープライズ・グレードのイベント駆動型アーキテクチャを実現します。Apache Kafka に固有のパーティショニングがスケーラビリティ要件への対処に役立つため、AMQ Streams は大規模で高スループットのシナリオに特に適しています。

Red Hat による統合

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

新しいクラウドネイティブ・アプリケーションの構築、デプロイ、スケーリング、または既存システムのモダナイズ向けに最適化された開発者エクスペリエンスを提供するマネージド・クラウドサービスです。

Red Hat AMQ

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

Red Hat Openshift

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

Red Hat OpenShift Streams for Apache Kafka を試用する