

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

# 分散データ管理
<a name="distributed-data-management"></a>

 従来のアプリケーションでは、多くの場合、すべてのコンポーネントが 1 つのデータベースを共有します。対照的に、マイクロサービスベースのアプリケーションの各コンポーネントは独自のデータを維持し、独立性と分散化を促進します。このアプローチは分散データ管理と呼ばれ、新しい課題をもたらします。

 このような課題の 1 つは、分散システムの一貫性とパフォーマンスのトレードオフから発生します。多くの場合、即時更新 (即時整合性) を要求するよりも、データ更新のわずかな遅延 (結果整合性) を受け入れる方が現実的です。

 場合によっては、ビジネスオペレーションで複数のマイクロサービスが連携する必要があります。1 つのパートが失敗した場合、完了したタスクの一部を元に戻す必要がある場合があります。[Saga パターン](https://docs.aws.amazon.com/prescriptive-guidance/latest/modernization-data-persistence/saga-pattern.html)は、一連の補償アクションを調整することで、これを管理するのに役立ちます。

 マイクロサービスの同期を維持するために、一元化されたデータストアを使用できます。このストアは、 AWS Lambda AWS Step Functionsや Amazon EventBridge などのツールを使用して管理されており、データのクリーンアップや重複排除に役立ちます。

![\[Saga 実行コーディネーター\]](http://docs.aws.amazon.com/ja_jp/whitepapers/latest/microservices-on-aws/images/saga-coordinator.png)


 マイクロサービス全体の変更を管理する一般的なアプローチは、*イベントソーシング*です。アプリケーションのすべての変更はイベントとして記録され、システムの状態のタイムラインが作成されます。このアプローチは、デバッグと監査に役立つだけでなく、アプリケーションのさまざまな部分が同じイベントに反応するのも可能になります。

 イベントソーシングは、多くの場合、コマンドクエリ責任分離 (CQRS) パターン hand-in-hand と連携して機能します。CQRS パターンでは、データの変更とデータクエリを異なるモジュールに分割して、パフォーマンスとセキュリティを向上させます。

 では AWS、サービスの組み合わせを使用してこれらのパターンを実装できます。図 7 に示すように、Amazon Kinesis Data Streams は中央イベントストアとして機能し、Amazon S3 はすべてのイベントレコードに耐久性のあるストレージを提供します。 AWS Lambda、Amazon DynamoDB、および Amazon API Gateway は連携してこれらのイベントを処理および処理します。

![\[でのイベントソーシングパターンを示す図 AWS\]](http://docs.aws.amazon.com/ja_jp/whitepapers/latest/microservices-on-aws/images/event-sourcing-pattern.png)


 分散システムでは、再試行によってイベントが複数回配信される可能性があるため、これを処理するようにアプリケーションを設計することが重要です。