type
status
date
slug
summary
tags
category
icon
password
理論
1. 分散システムにおけるデータ整合性
分散システムは、複数のコンポーネントが協調して動作するため、データの一貫性(整合性)を維持するのが難しくなります。特に、データが複数の場所に保存されている場合(例えば、DynamoDBと他のストレージサービスに保存されている場合)、そのデータを削除したり更新したりするときに、整合性をどのように保つかが重要な課題です。
- 最終的整合性は、データが全てのシステムに伝播され、最終的に一貫性が保たれることを意味します。しかし、即時の整合性が必要な場合、どのように効率的にデータの削除や更新を反映させるかを設計することが求められます。
2. イベント駆動型アーキテクチャとその利点
本質的なアーキテクチャ的なアプローチとして、イベント駆動型アーキテクチャが挙げられます。イベント駆動型システムでは、各マイクロサービスが独立して動作し、状態の変更(イベント)をトリガーとして、他のサービスが適切に反応します。
- イベントは状態の変化を示し、それをトリガーとしてサービス間の連携を行います。このアーキテクチャのメリットは、システム間の結合度を低く保ちながら、状態同期を効率的に行える点です。
- 例えば、ユーザー情報の削除イベントが発生した場合、それを通知するメカニズム(SNSやEventBridgeなど)を使用して、他のマイクロサービスがそのイベントを受け取って自動的に処理を実行します。これにより、各サービスは独自にデータを管理しつつ、必要な時にデータの変更を即座に反映できます。
3. 削除処理の即時性と一貫性
ユーザー情報削除の要求に対して、即座にそのデータを削除する必要がある場合、その削除処理を複数のサービス間で同期させるための手段を考える必要があります。特にプライバシーやセキュリティの観点から、削除漏れや遅延が発生することは許容されません。
- 削除の即時反映: 一度削除操作が行われたら、関連するすべてのマイクロサービスでその情報が即座に消去されることが求められます。この要件は、特に個人情報の削除やデータプライバシー法に基づいて重要な要素となります。
4. AWSサービスの役割と選択肢
AWSは、イベント駆動型アーキテクチャを実現するための様々なサービスを提供しています。以下にそれらの役割を説明します。
- DynamoDB Streams: DynamoDBのデータ変更をリアルタイムでキャプチャし、これを他のサービスに通知することで、削除イベントを他のシステムに即座に伝え、データの一貫性を確保します。
- SNS(Simple Notification Service): SNSは、発生したイベントを複数の購読者(マイクロサービス)に通知するメッセージブローカーです。複数のサービスがこの通知を受けて処理を行い、データの削除を反映します。
- EventBridge: より柔軟で複雑なイベントルールを作成できるサービスで、削除イベントをカスタムイベントバスを使ってシステム全体に伝達することが可能です。
5. 「即時削除」の要件を満たすためのアーキテクチャ的選択
本質的な考え方として、削除処理の即時性とデータの整合性を保証するために、以下の要素が重要です。
- リアルタイムでのイベント通知: ユーザー削除イベントを即座に他のサービスに通知すること。これにより、削除されたデータの情報が即座に他のサービスにも伝わり、削除処理が行われます。
- 非同期処理の活用: 削除イベントは非同期に処理されることが多いため、削除の通知が他のサービスに伝わった後、各サービスはそれを受けて非同期に削除処理を実行します。この方式により、負荷を分散しつつ、全体の一貫性を保つことができます。
結論
本質的な理解は、データ整合性を保ちつつ、複数のサービス間で即座にデータの削除を反映させるためには、イベント駆動型のアーキテクチャを採用し、AWSのサービスをうまく組み合わせることが必要であるという点です。削除処理のリアルタイム性を担保し、セキュリティやプライバシーの観点からも適切な処理が行えるように設計することが求められます。
実践
略
一問道場
問題 #166の要点
配送会社がAWSクラウドでサーバーレスソリューションを運用しています。このソリューションは、ユーザーデータ、配送情報、過去の購入履歴を管理しています。ソリューションは複数のマイクロサービスで構成されています。中央のユーザーサービスは、機密データをAmazon DynamoDBテーブルに保存します。他の複数のマイクロサービスは、機密データの一部をさまざまなストレージサービスにコピーして保存します。
会社は、リクエストに応じてユーザー情報を削除できる機能を必要としています。中央のユーザーサービスがユーザーを削除した際、他のすべてのマイクロサービスは、即座にそのデータのコピーを削除しなければなりません。
この要件を満たすソリューションはどれですか?
- A. DynamoDBテーブルでDynamoDB Streamsを有効にし、DynamoDBストリームにAWS Lambdaトリガーを作成して、ユーザー削除に関するイベントをAmazon Simple Queue Service(Amazon SQS)キューに投稿します。各マイクロサービスはキューをポーリングして、DynamoDBテーブルからユーザーを削除します。
- B. DynamoDBテーブルでDynamoDBイベント通知を設定し、Amazon Simple Notification Service(Amazon SNS)トピックをDynamoDBイベント通知のターゲットとして作成します。各マイクロサービスはSNSトピックにサブスクライブし、DynamoDBテーブルからユーザーを削除します。
- C. 中央のユーザーサービスがユーザーを削除する際に、カスタムのAmazon EventBridgeイベントバスにイベントを投稿するように設定します。各マイクロサービスは、ユーザー削除イベントパターンに一致するEventBridgeルールを作成し、マイクロサービス内のロジックを呼び出して、DynamoDBテーブルからユーザーを削除します。
- D. 中央のユーザーサービスがユーザーを削除する際に、Amazon Simple Queue Service(Amazon SQS)キューにメッセージを投稿するように設定します。各マイクロサービスはSQSキューでイベントフィルターを作成し、DynamoDBテーブルからユーザーを削除します。
- 作者:みなみ
- 链接:https://tangly1024.com/資格勉強/170d7ae8-88e2-80f4-b0a2-f34a287d5390
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章