分散データ管理 - でのマイクロサービスの実装 AWS

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

分散データ管理

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

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

ビジネスオペレーションでは、複数のマイクロサービスが連携する必要がある場合があります。1 つのパートが失敗した場合、完了したタスクの一部を元に戻す必要がある場合があります。Saga パターンは、一連の補償アクションを調整することで、これを管理するのに役立ちます。

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

Saga 実行コーディネーター

図 6: Saga 実行コーディネーター

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

イベントソーシングは、多くの場合、Command Query Responsibility Segregation (CQRS) パターンと連携 hand-in-handします。これにより、データ変更とデータクエリを異なるモジュールに分割し、パフォーマンスとセキュリティを向上させます。

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

でのイベントソーシングパターンを示す図 AWS

図 7: でのイベントソーシングパターン AWS

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