Loading...

[Update] MBC CQRS サーバーレス フレームワーク v1.1.5 をリリース

MBC CQRS サーバーレス フレームワーク v1.1.5 をリリースしました。今回のリリースでは、大量データインポートのパフォーマンスを大幅に改善するv2バッチ処理アーキテクチャを導入しました。

主な変更点

新機能:V2バッチ処理アーキテクチャ

大量データのCSVインポートにおけるホットパーティション問題を解決するため、AWS Step FunctionsのDistributed Map機能を活用したv2バッチ処理アーキテクチャを導入しました。

  • 並列処理の最適化: MaxItemsPerBatch: 100MaxConcurrency: 50 による高スループット処理
  • ImportPublishMode: エンティティごとにSYNC/ASYNCの発行モードを設定可能
  • ネイティブ集計: finalize_parent_jobステートでDistributed Mapの結果を直接集計(S3再読み取り不要)
  • 処理効率の向上: インポート処理中のDynamoDB書き込み頻度を削減し、ホットパーティション問題を解消

⚠️ 破壊的変更

v1.1.5にアップグレードする際は、以下の破壊的変更に対応が必要です:

  • リアルタイム進捗トラッキングの廃止: バッチ完了後に一括でステータス更新されるため、リアルタイムの進捗表示は行われなくなります
  • import_tmpテーブルのバイパス: V2ではインポート中間テーブルを使用しません。インポート処理中にimport_tmpテーブルのデータを参照しているコードは更新が必要です
  • ステートマシンの更新: インフラのステートマシン定義を更新する必要があります。CDKテンプレートを参照してください

テスト強化

  • V2バッチ処理の統合テスト追加(100件/バッチ、50並列)
  • ImportPublishMode SYNC/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バッチ処理アーキテクチャドキュメントをご参照ください。

関連リンク

Top