第1章 Service Registry の概要
本章では、Service Registry の概念および機能を紹介し、レジストリーに保存されるサポート対象のアーティファクトタイプの詳細を提供します。
Service Registry はテクノロジープレビュー機能としてのみ提供されます。テクノロジープレビュー機能は、Red Hat の本番環境のサービスレベルアグリーメント (SLA) ではサポートされず、機能的に完全ではないことがあるため、Red Hat は本番環境での使用は推奨しません。Red Hat は実稼働環境でこれらを使用することを推奨していません。
これらの機能は、近々発表予定の製品機能をリリースに先駆けてご提供することにより、お客様は機能性をテストし、開発プロセス中にフィードバックをお寄せいただくことができます。Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、https://access.redhat.com/ja/support/offerings/techpreview を参照してください。
1.1. Service Registry の概要 リンクのコピーリンクがクリップボードにコピーされました!
Service Registry は、標準のイベントスキーマおよび API 設計のデータストアです。Service Registry を使用して、アプリケーションからデータの構造を切り離し、REST インターフェースを使用して実行時にデータ構造と API の記述を共有および管理できます。
たとえば、クライアントアプリケーションは、再デプロイせずに最新のスキーマ更新を実行時にレジストリーとの間で動的にプッシュまたはプルできます。開発者チームは、実稼働にデプロイされたサービスに必要な既存のスキーマのレジストリーをクエリーでき、新規サービスに必要な新規スキーマを登録できます。
Service Registry は以下の機能を提供します。
- 標準イベントスキーマと API 仕様の複数のペイロード形式をサポート。
- Red Hat AMQ Streams の Apache Kafka ベースのストレージ。
- REST API、Maven プラグイン、または Java クライアントを使用してレジストリーコンテンツを管理します。
- レジストリーコンテンツが時間の経過と共にどのように進化するかを管理するためのコンテンツ検証およびバージョン互換性のルール。
- 外部システム用の Kafka Connect との統合を含む、Apache Kafka スキーマレジストリーの完全なサポート。
- 実行時に Kafka およびその他のメッセージタイプを検証するクライアントシリアライザー/デシリアライザー(SerDes)。
- メモリーフットプリントの低さと高速デプロイメントのクラウドネイティブ Quarkus Java ランタイム。
- 既存の Confluent スキーマレジストリークライアントアプリケーションとの互換性。
Service Registry は、Apicurio Registry オープンソースコミュニティープロジェクトに基づいています。詳細は https://github.com/apicurio/apicurio-registry を参照してください。
1.1.1. Service Registry アーティファクト リンクのコピーリンクがクリップボードにコピーされました!
イベントスキーマや API 仕様などの Service Registry に保存される項目は アーティファクト と呼ばれます。以下は、単純な株価アプリケーションの JSON 形式の Apache Avro スキーマアーティファクトの例を示しています。
スキーマまたは API 契約がレジストリーのアーティファクトとして追加されると、クライアントアプリケーションはそのスキーマまたは API 契約を使用して、実行時にクライアントメッセージが正しいデータ構造に準拠することを確認できます。
Service Registry は、標準のイベントスキーマおよび API 仕様の幅広いメッセージペイロード形式をサポートしています。たとえば、サポートされている形式には、Apache Avro、Google プロトコルバッファー、GraphQL、AsyncAPI、OpenAPI などがあります。詳細は、「サポートされるアーティファクトタイプ」 を参照してください。
1.1.2. Registry REST API リンクのコピーリンクがクリップボードにコピーされました!
Registry REST API を使用すると、クライアントアプリケーションは Service Registry のアーティファクトを管理できます。この API では、以下を行うために作成、読み取り、更新、および削除の操作が提供されます。
- アーティファクト
- レジストリーに保存されているスキーマおよび API デザインアーティファクトを管理します。アーティファクトのライフサイクル状態 (enabled、disabled、または deprecated) を管理することもできます。
- アーティファクトのバージョン
- アーティファクトコンテンツの更新時に作成されるバージョンを管理します。バージョンのライフサイクル状態(enabled、disabled、または deprecated)を管理することもできます。
- アーティファクトのメタデータ
- アーティファクトが作成された日時、最終更新日などの詳細を管理します。
- グローバルルール
- すべてのアーティファクトのコンテンツ展開を管理するルールを設定し、無効または互換性のないコンテンツがレジストリーに追加されないようにします。グローバルルールは、アーティファクトに独自の特定のアーティファクトルールが設定されていない場合にのみ適用されます。
- アーティファクトルール
- 特定のアーティファクトのコンテンツ展開を管理するルールを設定し、無効または互換性のないコンテンツがレジストリーに追加されないようにします。アーティファクトルールは、設定されたグローバルルールを上書きします。
詳細は、Apicurio Registry REST API のドキュメント を参照してください。
他のスキーマレジストリーとの互換性
Service Registry REST API は Confluent スキーマレジストリー REST API と互換性があります。つまり、Confluent クライアントライブラリーを使用するアプリケーションは、代わりに Service Registry をドロップイン置換として使用できます。詳細は、「Replacing Confluent Schema Registry with Red Hat Integration Service Registry」を参照してください。
1.1.3. ストレージオプション リンクのコピーリンクがクリップボードにコピーされました!
Service Registry は、アーティファクトの以下の基礎となるストレージ実装をサポートします。
- Red Hat AMQ Streams 1.4
- Red Hat AMQ Streams 1.3
1.1.4. 利用可能なディストリビューション リンクのコピーリンクがクリップボードにコピーされました!
ディストリビューション | 場所 |
---|---|
コンテナーイメージ | |
Maven リポジトリー | |
完全な Maven リポジトリー(すべての依存関係を含む) | |
ソースコード |
利用可能な Service Registry ディストリビューションにアクセスするには、Red Hat Fuse のサブスクリプションが必要で、Red Hat カスタマーポータルにログインする必要があります。
1.1.5. クライアントシリアライザー/デシリアライザー リンクのコピーリンクがクリップボードにコピーされました!
イベントベースのプロデューサーアプリケーションは、シリアライザーを使用して、特定のイベントスキーマに準拠するメッセージをエンコードできます。コンシューマーアプリケーションはデシリアライザーを使用して、特定のスキーマ ID に基づいてメッセージが適切なスキーマを使用してシリアライズされたことを検証できます。Service Registry は、クライアントシリアライザー/デシリアライザーを提供し、実行時に以下のメッセージタイプを検証します。
- Apache Avro
- Google プロトコルバッファー
- JSON スキーマ
Service Registry Maven リポジトリーおよびソースコードディストリビューションには、これらのメッセージタイプのシリアライザー/デシリアライザー実装が含まれます。クライアント開発者がレジストリーと統合するために使用できます。これらの実装には、サポートされる各メッセージタイプにカスタム io.apicurio.registry.utils.serde
Java クラスが含まれ、クライアントアプリケーションが検証用に実行時にレジストリーからスキーマをプルするために使用できます。
関連情報
AMQ Streams プロデューサーおよびコンシューマーアプリケーションで Apache Avro に Service Registry クライアントシリアライザー/デシリアライザーを使用する方法は、「 Using AMQ Streams on OpenShift 」を参照してください。
1.1.6. レジストリーのデモ リンクのコピーリンクがクリップボードにコピーされました!
Service Registry は、Apache Kafka Streams のストレージを使用した Apache Avro シリアライゼーション/デシリアライゼーションのオープンソースのデモ例を提供します。以下の例は、シリアライザー/デシリアライザーが実行時にレジストリーから Avro スキーマを取得し、これを使用して Kafka メッセージをシリアライズおよびデシリアライズする方法を示しています。詳細は、https://github.com/Apicurio/apicurio-registry-demo を参照してください。
このデモでは、Apache Kafka のストレージを使用した Avro および JSON スキーマのシリアライズ/デシリアライズの両方に関する簡単な例も含まれています( https://github.com/Apicurio/apicurio-registry-demo/tree/master/src/main/java/io/apicurio/registry/demo/simple)。
Apache Kafka のストレージを使用した Avro シリアライゼーション/デシリアライゼーションの詳細は、『 Getting Started with Red Hat Integration Service Registry 』の「Red Hat Developer」の記事を参照してください。