アンチパターンガイド
このガイドでは、MBC CQRS Serverlessフレームワークで開発する際に避けるべき一般的な間違いとアンチパターンを文書化しています。「やってはいけないこと」を理解することは、ベストプラクティスを知ることと同じくらい重要です。
コマンド処理のアンチパターン
AP001: CommandServiceをバイパスした直接データベース書き込み
アンチパターン
CommandServiceをバイパスしてDynamoDBテーブルに直接書き込むことは絶対にしないでください。
// ❌ Anti-Pattern: Direct DynamoDB write (アンチパターン: 直接DynamoDB書き込み)
const dynamodb = new DynamoDBClient({});
await dynamodb.send(new PutItemCommand({
TableName: 'my-table',
Item: { pk: { S: 'TENANT#mbc' }, sk: { S: 'ITEM#001' }, ... }
}));
// ✅ Correct: Use CommandService (正解: CommandServiceを使用)
await this.commandService.publishAsync({
pk: 'TENANT#mbc',
sk: 'ITEM#001',
version: 0,
// ...
}, { invokeContext });
なぜこれが問題なのか:
- バージョン管理と楽観的ロックをバイパスする
- 下流同期のイベント発行をスキップする
- コマンドテーブルに監査証跡が残らない
- CQRSパターンの一貫性を壊す