[Update] MBC CQRS サーバーレス フレームワーク v1.1.5 をリリース
Technology
Mar 28, 2026
MBC CQRS サーバーレス フレームワーク v1.1.5 をリリースしました。今回のリリースでは、大量データインポートのパフォーマンスを大幅に改善するv2バッチ処理アーキテクチャを導入しました。
主な変更点
新機能:V2バッチ処理アーキテクチャ
大量データのCSVインポートにおけるホットパーティション問題を解決するため、AWS Step FunctionsのDistributed Map機能を活用したv2バッチ処理アーキテクチャを導入しました。
- 並列処理の最適化:
MaxItemsPerBatch: 100、MaxConcurrency: 50による高スループット処理 - ImportPublishMode: エンティティごとにSYNC/ASYNCの発行モードを設定可能
- ネイティブ集計:
finalize_parent_jobステートでDistributed Mapの結果を直接集計(S3再読み取り不要) - 処理効率の向上: インポート処理中のDynamoDB書き込み頻度を削減し、ホットパーティション問題を解消
⚠️ 破壊的変更
v1.1.5にアップグレードする際は、以下の破壊的変更に対応が必要です:
- リアルタイム進捗トラッキングの廃止: バッチ完了後に一括でステータス更新されるため、リアルタイムの進捗表示は行われなくなります
import_tmpテーブルのバイパス: V2ではインポート中間テーブルを使用しません。インポート処理中にimport_tmpテーブルのデータを参照しているコードは更新が必要です- ステートマシンの更新: インフラのステートマシン定義を更新する必要があります。CDKテンプレートを参照してください
テスト強化
- V2バッチ処理の統合テスト追加(100件/バッチ、50並列)
ImportPublishModeSYNC/ASYNC切り替えテスト追加finalize_parent_job集計ロジックのユニットテスト追加
ImportPublishMode の設定例
import { ImportPublishMode } from '@mbc-cqrs-serverless/import';
// サービスでの設定例
const publishModeMap = new Map([
['ORDER', ImportPublishMode.SYNC], // 即時整合性が必要なエンティティ
['LOG', ImportPublishMode.ASYNC], // 非同期処理で十分なエンティティ
]);
アップグレード方法
npm install @mbc-cqrs-serverless/core@1.1.5
npm install @mbc-cqrs-serverless/import@1.1.5
破壊的変更への対応が必要です。詳細は変更履歴 v1.1.5およびV2バッチ処理アーキテクチャドキュメントをご参照ください。
