

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Precisely Connect を使用してメインフレームデータベースを AWS にレプリケート
<a name="replicate-mainframe-databases-to-aws-by-using-precisely-connect"></a>

*Lucio Pereira、Sayantan Giri、Balaji Mohan、Amazon Web Services*

## 概要
<a name="replicate-mainframe-databases-to-aws-by-using-precisely-connect-summary"></a>

このパターンでは、Precisely Connect を使用してメインフレームデータベースから Amazon データストアにほぼリアルタイムでデータをレプリケーションする手順の概要を示しています。Amazon Managed Streaming for Apache Kafka (Amazon MSK) によるイベントベースのアーキテクチャと、クラウド内のカスタムデータベースコネクタを実装して、スケーラビリティ、耐障害性、パフォーマンスを向上させます。

Precisely Connect は、従来のメインフレームシステムからデータをキャプチャしてクラウド環境に統合するレプリケーションツールです。データは、低レイテンシーで高スループットの異種データパイプラインによるほぼリアルタイムのメッセージフローを使用して、変更データキャプチャ (CDC) を通じてメインフレームから AWS に複製されます。 

このパターンには、マルチリージョンのデータ複製とフェールオーバールーティングによる回復力のあるデータパイプラインの災害復旧戦略も含まれます。

## 前提条件と制限
<a name="replicate-mainframe-databases-to-aws-by-using-precisely-connect-prereqs"></a>

**前提条件**
+ AWS クラウドに複製する既存のメインフレームデータベース (IBM DB2、IBM 情報管理システム (IMS)、仮想ストレージアクセスメソッド (VSAM) など)
+ アクティブなAWS[アカウント](https://aws.amazon.com/account/)
+ 企業環境から AWS への [AWS Direct Connect](https://aws.amazon.com/directconnect/) または [AWS 仮想プライベートネットワーク (AWS VPN)](https://aws.amazon.com/vpn/)
+ レガシープラットフォームからアクセス可能なサブネットを備えた[仮想プライベートクラウド](https://aws.amazon.com/vpc/) 

## アーキテクチャ
<a name="replicate-mainframe-databases-to-aws-by-using-precisely-connect-architecture"></a>

**ソーステクノロジースタック**

次のデータベースのうち少なくとも 1 つを含むメインフレーム環境
+ IBM IMS データベース
+ IBM DB2 データベース
+ VSAM ファイル

**ターゲットテクノロジースタック**
+ Amazon MSK
+ Amazon Elastic Kubernetes Service (Amazon EKS) と Amazon EKS Anywhere
+ Docker
+ 次のような AWS リレーショナルまたは NoSQL データベース：
  + Amazon DynamoDB
  + Oracle の Amazon Relational Database Service (Amazon RDS)、Amazon RDS for PostgreSQL、または Amazon Aurora
  + Amazon ElastiCache for Redis
  + Amazon Keyspaces (Apache Cassandra 向け)

**ターゲット アーキテクチャ**

*メインフレームデータの AWS データベースへのレプリケーション*

次の図表では、メインフレームデータを DynamoDB、Amazon RDS、Amazon ElastiCache、Amazon Keyspaces などの AWS データベースに複製する方法を示しています。レプリケーションは、オンプレミスのメインフレーム環境では Precisely Capture and Publisher を使用し、オンプレミスの分散環境の Amazon EKS Anywhere では Precisely Dispatcher を使用し、AWS クラウドでは Precisely Apply Engine とデータベースコネクタを使用して、ほぼリアルタイムで行われます。 

![メインフレームデータの AWS データベースへのレプリケーション](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/17ac53b7-86d5-4a8c-a55f-56b6338a1af3/images/777dd7da-48ed-4510-b8fa-9041be042671.png)


この図表は、次のワークフローを示しています:

1. Precisely Capture は CDC ログからメインフレームデータを取得し、そのデータを内部の一時ストレージに保持します。

1. Precisely Publisher は内部データストレージの変更を監視し、TCP/IP 接続を介して CDC レコードを Precisely Dispatcher に送信します。

1. Precisely Dispatcher はパブリッシャーから CDC レコードを受信し、Amazon MSK に送信します。発送者は、ユーザー設定と複数のワーカータスクに基づいて Kafka キーを作成し、データを平行でプッシュします。レコードが Amazon MSK に保存されると、発想者はパブリッシャーに確認応答を送り返します。

1. Amazon MSK は CDC レコードをクラウド環境に保持します。トピックのパーティションサイズは、使用するトランザクション処理システム (TPS) のスループット要件によって異なります。Kafka キーは、さらなる変換やトランザクションの順序付けには必須です。

1. Precisely Apply Engine は Amazon MSK からの CDC レコードを受信し、ターゲットデータベースの要件に基づいてデータを (フィルタリングやマッピングなどによって) 変換します。Precisely SQD スクリプトにはカスタマイズされたロジックを追加できます。(SQD は Precisely 独自の言語です)。Precisely Apply エンジンは、各 CDC レコードを Apache Avro または JSON 形式に変換し、要件に基づいてさまざまなトピックに配信します。

1. ターゲット Kafka トピックは、ターゲットデータベースに基づいて複数のトピックの CDC レコードを保持し、Kafka は定義済みの Kafka キーに基づいてトランザクションの順序付けを容易にします。パーティションキーは対応するパーティションと連動し、順次処理をサポートします。 

1. データベースコネクタ (カスタマイズされた Java アプリケーション) は Amazon MSK の CDC レコードを受信し、ターゲットデータベースに保存します。

1. 要件に基づいて、ターゲットデータベースを選択できます。このパターンでは NoSQL データベースとリレーショナルデータベースをサポートします。

ディザスタリカバリ

ビジネス継続性は組織の成功の鍵です。AWS クラウドは高可用性 (HA) とディザスタリカバリ (DR) を実現する機能を提供し、組織のフェイルオーバープランとフォールバックプランをサポートします。このパターンでは、アクティブ/パッシブの DR 戦略に従い、RTO と RPO の要件を満たす DR 戦略を実装するための大まかなガイダンスを提供します。

次の図は、 のワークフローです。

![メインフレームデータを AWS に複製するためのディザスタリカバリワークフロー](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/17ac53b7-86d5-4a8c-a55f-56b6338a1af3/images/9cccba7a-7a25-411e-829f-7cd5a7a20ab4.png)


図に示す内容は以下のとおりです。

1. AWS リージョン 1 で障害が発生した場合、半自動フェイルオーバーが必要です。リージョン 1 で障害が発生した場合、システムは Precisely Dispatcher をリージョン 2 に接続するためのルーティング変更を開始する必要があります。 

1. Amazon MSK はリージョン間のミラーリングを通じてデータを複製します。そのため、フェイルオーバー時には、リージョン 2 の Amazon MSK クラスターをプライマリリーダーに昇格させる必要があります。 

1. Precisely Apply Engine とデータベースコネクタは、どのリージョンでも動作するステートレスアプリケーションです。 

1. データベースの同期は、ターゲットデータベースによって異なります。例えば、DynamoDB はグローバルテーブルを使用でき、ElastiCache はグローバルデータストアを使用できます。

*データベースコネクタによる低レイテンシーで高スループットの処理*

このパターンでは、データベースコネクタが重要なコンポーネントです。コネクタはリスナーベースのアプローチに従い、Amazon MSK からデータを収集し、ミッションクリティカルなアプリケーション (階層 0 と 1) の高スループットで低レイテンシーの処理を通じてトランザクションをデータベースに送信します。次の図は、このプロセスを示したものです。

![データベースコネクタを使用して AWS でメインフレームデータを複製](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/17ac53b7-86d5-4a8c-a55f-56b6338a1af3/images/79479634-becb-4212-bbfc-1a3b17ae1bed.png)


このパターンでは、マルチスレッド処理エンジンを通じてシングルスレッドで消費するカスタマイズされたアプリケーションの開発をサポートします。

1. コネクタのメインスレッドは Amazon MSK の CDC レコードを消費し、スレッドプールに送信して処理します。

1. スレッドプールのスレッドは CDC レコードを処理し、ターゲットデータベースに送信します。

1. すべてのスレッドがビジー状態の場合、CDC レコードはスレッドキューによって保留されます。

1. メインスレッドは、スレッドキューからすべてのレコードがクリアされるのを待って、Amazon MSK にオフセットをコミットします。

1. 子スレッドは障害を処理します。処理中に障害が発生した場合、失敗したメッセージは DLQ (デッドレターキュー) トピックに送信されます。

1. 子スレッドは、メインフレームのタイムスタンプに基づいて条件付き更新 (DynamoDB ドキュメントの[条件式](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ConditionExpressions.html) を参照) を初期化し、データベースの重複や順序の狂った更新を回避します。

マルチスレッド機能を備えた Kafka コンシューマーアプリケーションを実装する方法については、Confluent ウェブサイトのブログ投稿[Apache Kafka コンシューマーによるマルチスレッドメッセージ消費](https://www.confluent.io/blog/kafka-consumer-multi-threaded-messaging/) を参照してください。

## ツール
<a name="replicate-mainframe-databases-to-aws-by-using-precisely-connect-tools"></a>

**AWS サービス**
+ 「[Amazon Managed Streaming for Apache Kafka (Amazon MSK)](https://docs.aws.amazon.com/msk/latest/developerguide/what-is-msk.html)」 は、Apache Kafka を使ってストリーミングデータを処理するアプリケーションを、構築および実行することを支援するフルマネージドサービスです。
+ [Amazon Elastic Kubernetes Service (Amazon EKS)](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html) は、 で Kubernetes を実行する際に役立ちます。独自の Kubernetes コントロールプレーンまたはノードをインストールおよび維持する必要はありません。
+ [Amazon EKS Anywhere](https://anywhere.eks.amazonaws.com/docs/) を使用すると、自社のデータセンターで実行される Kubernetes クラスターをデプロイ、使用、管理できます。
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) は、フルマネージド NoSQL データベースサービスです。高速かつ予測可能でスケーラブルなパフォーマンスを提供します。
+ [Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) を使用して、AWS クラウドでリレーショナルデータベース (DB) をセットアップ、運用、スケーリングできます。
+ [Amazon ElastiCache](https://docs.aws.amazon.com/elasticache/) は、AWS クラウドのインメモリ分散キャッシュ環境のセットアップ、管理、スケーリングに役立ちます。
+ [Amazon Keyspaces (Apache Cassandra に向け)](https://docs.aws.amazon.com/keyspaces/latest/devguide/what-is-keyspaces.html) は、AWS クラウドの Cassandra ワークロードの移行、実行、スケーリングを支援するマネージド型データベースサービスです。

その他のツール
+ [Precisely Connect](https://www.precisely.com/product/precisely-connect/connect) は、VSAMデータセットやIBMメインフレームデータベースなどの従来のメインフレームシステムのデータを次世代のクラウドおよびデータプラットフォームに統合します。

## ベストプラクティス
<a name="replicate-mainframe-databases-to-aws-by-using-precisely-connect-best-practices"></a>
+ 最適なパフォーマンスとコストのバランスを取るために、Kafka パーティションとマルチスレッドコネクタの最適な組み合わせを検出します。Precisely Capture インスタンスと Dispatcher インスタンスが複数あると、MIPS (1 秒あたり百万命令) の消費量が増えるため、コストが増加する可能性があります。
+ データ操作や変換のロジックをデータベースコネクタに追加しません。そのためには、マイクロ秒単位の処理時間を実現する Precisely Apply エンジンを使用します。
+ 接続を頻繁にウォームアップして待ち時間を短縮するために、データベースコネクターでデータベースへのリクエストまたはヘルスチェックコール (*ハートビート*) を定期的に作成します。
+ スレッドプール検証ロジックを実装して、スレッドキュー内の保留中のタスクを把握し、すべてのスレッドが完了するまで待ってから次の Kafka ポーリングを行います。これにより、ノード、コンテナ、またはプロセスがクラッシュした場合にデータが失われることを回避します。
+ ヘルスエンドポイントを通じてレイテンシーメトリクスを公開し、ダッシュボードやトレースメカニズムを通じてオブザーバビリティ機能を強化します。

## エピック
<a name="replicate-mainframe-databases-to-aws-by-using-precisely-connect-epics"></a>

### ソース環境 (オンプレミス) の準備
<a name="prepare-the-source-environment-on-premises"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| メインフレームプロセス (バッチまたはオンラインユーティリティ) を設定して、メインフレームデータベースから CDC プロセスを開始します。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/replicate-mainframe-databases-to-aws-by-using-precisely-connect.html) | メインフレームエンジニア | 
| メインフレームデータベースのログストリームを有効にします。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/replicate-mainframe-databases-to-aws-by-using-precisely-connect.html) | メインフレーム DB スペシャリスト | 
| キャプチャーコンポーネントを使用して CDC レコードをキャプチャします。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/replicate-mainframe-databases-to-aws-by-using-precisely-connect.html) | メインフレームエンジニア、Precisely Connect SME | 
| キャプチャコンポーネントをリッスンするようにパブリッシャーコンポーネントを設定します。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/replicate-mainframe-databases-to-aws-by-using-precisely-connect.html) | メインフレームエンジニア、Precisely Connect SME | 
| オンプレミスの分散環境で Amazon EKS Anywhere をプロビジョニングします。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/replicate-mainframe-databases-to-aws-by-using-precisely-connect.html) | DevOps エンジニア | 
| 発想者コンポーネントを分散環境にデプロイして設定し、AWS クラウドにトピックを公開します。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/replicate-mainframe-databases-to-aws-by-using-precisely-connect.html) | DevOpsエンジニア、Precisely Connect SME | 

### ターゲット環境 (AWS) の準備
<a name="prepare-the-target-environment-aws"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 指定された AWS リージョンに Amazon EKS クラスターをプロビジョニングします。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/replicate-mainframe-databases-to-aws-by-using-precisely-connect.html) | DevOps エンジニア、ネットワーク管理者 | 
| MSK クラスターをプロビジョニングし、該当する Kafka トピックを設定します。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/replicate-mainframe-databases-to-aws-by-using-precisely-connect.html) | DevOps エンジニア、ネットワーク管理者 | 
| レプリケーションされた Kafka トピックを聞くように Apply Engine コンポーネントを設定します。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/replicate-mainframe-databases-to-aws-by-using-precisely-connect.html) | Precisely Connect SME | 
| AWS クラウドで DB インスタンスをプロビジョニングします。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/replicate-mainframe-databases-to-aws-by-using-precisely-connect.html) | データエンジニア、DevOps エンジニア | 
| Apply Engine が公開するトピックを聞くためのデータベースコネクタを設定してデプロイします。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/replicate-mainframe-databases-to-aws-by-using-precisely-connect.html) | アプリ開発者、クラウドアーキテクト、データエンジニア | 

### 事業継続とディザスタリカバリの設定
<a name="set-up-business-continuity-and-disaster-recovery"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| ビジネスアプリケーションのディザスタリカバリの目標を定義します。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/replicate-mainframe-databases-to-aws-by-using-precisely-connect.html) | クラウドアーキテクト、データエンジニア、アプリオーナー | 
| 定義した RTO/RPO に基づいてディザスタリカバリ戦略を設計します。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/replicate-mainframe-databases-to-aws-by-using-precisely-connect.html) | クラウドアーキテクト、データエンジニア | 
| ディザスタリカバリのクラスタと構成をプロビジョニングします。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/replicate-mainframe-databases-to-aws-by-using-precisely-connect.html) | DevOpsエンジニア、ネットワーク管理者、クラウドアーキテクト | 
| ディザスタリカバリ の CDC パイプラインをテストします。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/replicate-mainframe-databases-to-aws-by-using-precisely-connect.html) | アプリオーナー、データエンジニア、クラウドアーキテクト | 

## 関連リソース
<a name="replicate-mainframe-databases-to-aws-by-using-precisely-connect-resources"></a>

「**AWS リソース**」
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html)
+ [Amazon DynamoDB による条件式](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ConditionExpressions.html)
+ [Amazon EKS](https://docs.aws.amazon.com/eks/index.html)
+ [Amazon EKS Anywhere](https://anywhere.eks.amazonaws.com/docs/)
+ [Amazon ElasticCache](https://docs.aws.amazon.com/elasticache/index.html)
+ [Amazon Keyspaces](https://docs.aws.amazon.com/keyspaces/?icmpid=docs_homepage_databases)
+ [Amazon MSK](https://docs.aws.amazon.com/msk/latest/developerguide/getting-started.html)
+ [Amazon RDS と Amazon Aurora](https://docs.aws.amazon.com/rds/index.html)
+ [Amazon VPC](https://docs.aws.amazon.com/vpc/index.html)

**Precisely Connect リソース**
+ [Precisely Connect の概要](https://www.precisely.com/product/precisely-connect/connect)
+ [Precisely Connect による変更データキャプチャ](https://help.precisely.com/r/Connect-CDC-SQData/4.1/en-US/Connect-CDC-SQData-Installation/Connect-CDC-SQData-Architecture)

**コンフルエントリソース**
+ [Apache Kafka コンシューマーによるマルチスレッドメッセージ消費](https://www.confluent.io/blog/kafka-consumer-multi-threaded-messaging/)