重要

このページの日本語コンテンツは古くなっている可能性があります。最新の英語版コンテンツをご覧になるには、こちらをクリックしてください。

アーキテクチャに関する考慮事項

多様な種類のアーキテクチャについて説明すると、このセクションには収まらないので、このページでは次の 3 つのトピックを取り上げます。

  1. サーバーレスアーキテクチャ
  2. ステートレスマイクロサービス
  3. クラウドネイティブアプリケーション

サーバーレスアーキテクチャ

サーバーレスアーキテクチャは、イベントに対応する一時的な機能(FaaS や Lambda)や、API 呼び出しでのみ利用できるサードパーティのサービスに大きく依存します。アプリケーションが柔軟であるためには、使用量ベースの料金が適用され、運用上の負荷がゼロのサーバーレスアーキテクチャが必要です。つまり、Confluent Cloud のベーシッククラスターとスタンダードクラスターには柔軟性があります。これらのクラスターでは、スループットとストレージに基づいた使用量ベースの料金が適用されます。API を呼び出したり機能を構成したりする場合を除き、障害のリカバリやアップグレードにユーザーが関与することはありません。Kafka クラスターの可用性、信頼性、稼働率は、Confluent が管理します。Confluent Cloud のサーバーレスオファリングには、コアの Kafka ブローカーサービスだけでなく、ksqlDB によるイベントストリーム処理と、フルマネージド型コネクターによるエンドシステムとのデータ移行が含まれます。大まかには、これによって ETL パイプラインが実現します。つまり、データを Confluent Cloud に移動し(抽出)、REST API への SQL のパブリッシュによって、長期にわたって実行され自動的にスケーリングされるストリーム変換を作成し(変換)、そのデータを永続化します(ロード)。

ステートレスマイクロサービス

また、ステートレスマイクロサービスを使用して、Confluent Cloud と対話するアプリケーションを構築することもできます。マイクロサービスアーキテクチャは、分散されたサービスが疎結合された集合体として、アプリケーションを構築します。各クラウドプロバイダーから分散されたサービスへのアクセスが提供されるクラウド環境では、このようなアーキテクチャが適しています。通常、このアーキテクチャにおける多くのフォームのデータストレージは、外部サービスによって処理されます。こうした処理は、Confluent Cloud でのフルマネージド型 Kafka でも、クラウドプロバイダーサービスでも行うことができます。つまり、クラウドネイティブアプリケーションを構成するマイクロサービスはステートレスにして、マイクロサービスのステートの処理は他のクラウドサービスで行うことができます。ステートレスであることは、より回復性のあるアプリケーションを構築することも可能にします。サービスインスタンスが失われても、瞬時に別のインスタンスに処理を移すことができるので、データの損失が発生しません。

クラウドネイティブアプリケーション

Confluent Cloud を使用する場合は、Kafka クライアントアプリケーションもクラウドネイティブにしてクラウドで実行することができます。新しいアプリケーションを最初から Confluent Cloud で開発することもできますが、いずれは従来のアプリケーションをクラウドに移行する機会があるはずです。クラウドへの移行には、さまざまな形態があります。

  1. アプリケーションはクラウドネイティブであり、同じクラウドで実行する
  2. アプリケーションは、オンプレミスの Kafka クラスターで実行する。そして、Bridge to Cloud パターンで、Confluent Replicator を使用して Kafka クラスターと Confluent Cloud の間でデータをストリーミングする
  3. アプリケーションはオンプレミスで Confluent Cloud に対して実行する。そして、時間が経ったらアプリケーションをクラウドに移行する

クラウドで初めてアプリケーションを実行する開発者は、クラウド環境の不安定さに驚くことがよくあります。IP アドレスは変更され、証明書の有効期限は切れ、サーバーは再起動され、インスタンス自体が廃止されることもあります。また、WAN で送受信されるネットワークパケットは、ほとんどのデータセンターよりも高い頻度で失われます。変化に備えて計画することは、どのような場合でも良案です。しかし、クラウドでアプリケーションを実行するとなると、これは必要不可欠です。クラウド環境は頻繁な変更を見越して構築されているので、クラウドネイティブな設計にすれば、この不安定な環境を利点として活用することができます。クラウドへのデプロイを成功させる鍵は、クラウド環境の不安定さを柔軟に処理して、結果的に回復性が高くなるようなアプリケーションを構築することです。