用語集
この用語集では、MBC CQRS Serverlessフレームワークのドキュメント全体で使用される主要な用語と概念の定義を提供します。
デザインパターン
CQRS(コマンドクエリ責任分離)
コマンド クエリ責任分離 (CQRS) パターンは、データの変更、つまりシステムのコマンド部分をクエリ部分から分離します。スループット、レイテンシ、一貫性などの要件が異なる場合は、CQRS パターンを使用して更新とクエリを分離できます。 CQRS パターンは、アプリケーションをコマンド側とクエリ 側の 2 つの部分に分割します。コマンド側は、作成、更新、削除のリクエストを処理します。クエリ側はリードレプリカを使用してクエリ部分を実行します。

See: CQRS パターン
イベントソーシング
イベント ソーシング パターンは通常、読み取りワークロードと書き込みワークロードを分離し、パフォーマンス、スケーラビリティ、セキュリティを最適化するために CQRS パターンとともに使用されます。データは、データ ストアへの直接更新ではなく、一連のイベントとして保存されます。マイクロサービスは、イベント ストアからイベントを再生して、独自のデータ ストアの適切な状態を計算します。このパターンは、アプリケーションの現在の状態を可視化し、アプリケーションがその状態にどのように到達したかについての追加のコンテキストを提供します。コマンド データ ストアとクエリ データ ストアのスキーマが異なる場合でも、特定のイベントのデータを再現できるため、イベント ソーシング パターンは CQRS パターンと効果的に連携します。
See: イベントソーシングパターン
楽観的ロック
リソースをロックせずに複数のトランザクションを進行させる並行性制御メカニズム。コミット前に、システムは別のトランザクションがデータを変更したかどうかを確認します。MBC CQRS Serverlessでは、バージョン番号を使用して実装されています - 各更新には現在のバージョンを含める必要があり、バージョンが一致しない場合は更新が失敗します。
ドメイン駆動設計(DDD)
ビジネスドメインに基づいてソフトウェアをモデリングすることに焦点を当てたソフトウェア設計アプローチ。主要な概念には、エンティティ、値オブジェクト、集約、境界づけられたコンテキストが含まれます。MBC CQRS ServerlessはDDDの原則を使用してモジュールとエンティティを構造化します。
集約
単一のユニットとして扱うことができるドメインオブジェクトのクラスター。集約にはルートエンティティ(集約ルート)と集約内の内容を定義する境界があります。MBC CQRS Serverlessでは、各コマンドテーブルは通常、集約を表します。
フレームワークの概念
コマンド
システムの状態を変更するリクエスト。コマンドはCQRSパターンのコマンド側で処理されます。MBC CQRS Serverlessでは、コマンドはCommandServiceを使用して発行され、DynamoDBコマンドテーブルに保存されます。
コマンドテーブル
コマンド(書き込み)モデルを保存するDynamoDBテーブル。バージョン追跡による変更の完全な履歴を含みます。データはDynamoDB Streamsを介してコマンドテーブルからデータテーブルに流れます。
データテーブル
データ(読み取り)モデルを保存するDynamoDBテーブル。クエリ用に最適化されたエンティティの現在の状態を含みます。コマンドが処理されると自動的に更新されます。
データ同期ハンドラー
DynamoDB Streamイベントを処理してテーブル間またはRDSなどの外部システムとデータを同期するハンドラー。IDataSyncHandlerインターフェースを実装します。
呼び出しコンテキスト
ユーザー情報、テナントコンテキスト、リクエストメタデータを含むサービスメソッドに渡されるコンテキストオブジェクト。Lambdaイベントから作成され、認可と監査に使用されます。
パーティションキー(PK)
パーティション間のデータ分散を決定するDynamoDBのプライマリキーコンポーネント。MBC CQRS Serverlessでは、通常TYPE#tenantCode形式(例:ORDER#tenant001)。
ソートキー(SK)
パーティション内での範囲クエリを可能にするDynamoDBのセカンダリキーコンポーネント。MBC CQRS Serverlessでは、データテーブルでは通常TYPE#code形式、コマンドテーブルではTYPE#code#vN形式。
テナント
マルチテナントアプリケーションにおける分離された組織単位。各テナントはテナントコードで識別される独自のデータパーティションを持ちます。テナントはアプリケーションインフラストラクチャを共有しますが、データは完全に分離されています。
バージョン
エンティティのリビジョン履歴を追跡する番号。更新ごとにインクリメントされます。同時更新の競合を防ぐための楽観的ロックに使用されます。
AWSサービス
Amazon DynamoDB
シームレスなスケーラビリティで高速かつ予測可能なパフォーマンスを提供するフルマネージドNoSQLデータベースサービス。MBC CQRS ServerlessはDynamoDBをコマンドテーブルとデータテーブルの両方のプライマリデータストアとして使用します。
DynamoDB Streams
DynamoDBテーブルのデータ変更イベントをキャプチャする機能。MBC CQRS Serverlessがコマンドテーブルとデータテーブル間、および外部システムへのデータ同期をトリガーするために使用します。
AWS Lambda
イベントに応答してコードを実行するサーバーレスコンピューティングサービス。MBC CQRS ServerlessはAPIハンドラー、イベントプロセッサー、バックグラウンドタスクにLambda関数を使用します。
Amazon Cognito
ユーザー認証、認可、ユーザー管理を提供するサービス。MBC CQRS ServerlessはCognitoをユーザー認証とJWTトークン検証に使用します。
AWS Step Functions
Lambda関数と他のAWSサービスを組み合わせることができるサーバーレスオーケストレーションサービス。MBC CQRS Serverlessでデータインポートやバッチ処理などの長時間実行ワークフローに使用されます。