Phase 2-2: 高頻度Mutationリゾルバーの実装
目的
高頻度データ更新とイベント通知のリゾルバーを実装します(reportDataByNode, fireEventByNode)。
性能要件
- データ更新: 15回/秒/グループ
- イベント通知: 2回/秒/グループ
- 全体書き込み負荷: 170 TPS
タスク
reportDataByNode Mutation (DynamoDB直結)
- リクエストハンドラー (AppSync JavaScript) の実装
- NodeStatus更新 (
PutItem) - タイムスタンプ自動付与
- SensorData配列のDynamoDB List形式変換
- NodeStatus更新 (
- レスポンスハンドラーの実装
- Subscription トリガー用データ返却
- Resolverの登録
fireEventByNode Mutation (None DataSource)
- None DataSourceの定義
- リクエストハンドラー (AppSync JavaScript) の実装
- ペイロードのパススルー
- レスポンスハンドラーの実装
- Event型への整形
- タイムスタンプ自動付与
- Resolverの登録
テスト
- reportDataByNode動作確認
- fireEventByNode動作確認
- 性能テスト (15回/秒達成確認)
成果物
- JSリゾルバーファイル
js/resolvers/Mutation.reportDataByNode.req.jsjs/resolvers/Mutation.reportDataByNode.res.jsjs/resolvers/Mutation.fireEventByNode.req.jsjs/resolvers/Mutation.fireEventByNode.res.js
- CDK Resolver定義コード
技術仕様
reportDataByNode リクエスト例
{ operation: 'PutItem', key: { pk: {S: 'GROUP#${groupId}'}, sk: {S: 'NODE#${nodeId}'} }, item: { nodeId: {S: nodeId}, groupId: {S: groupId}, data: {L: ...}, timestamp: {S: util.time.nowISO8601()} } }
関連
- EPIC Issue: EPIC: Mesh v2 拡張機能の実装 #444
- Phase: 2 (バックエンドロジック)
- 依存: Phase 1-3: AppSync GraphQL APIとスキーマの実装 #448 (Phase 1-3)
🤖 Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com