ユーザーアイコン

mizuko

約2か月前

0
0

OpenSearch Serverless にてバッチ処理で429エラーが発生する問題

OpenSearch
AWS

OpenSearch Serverless でのバッチ処理検証結果から、大規模な全文検索システムには適さないことが判明。 そのためServerlessへの移行は断念。

バッチ処理での実測結果

  • バッチサイズ 1500件 × 並列数 15 → 429エラー多発
  • バッチサイズ 1500件 × 並列数 5 → 429エラー発生
  • バッチサイズ 1500件 × 並列数 1 → それでも429エラー発生
  • OCU を 20 に増やしても 5.5 OCU までしか使用されず、レート制限が先に発生

問題の本質

  • OCU の処理能力ではなく、API レート制限がボトルネック
  • バルクキュー容量:50-200リクエスト/ノード(固定)
  • 同時接続数制限:非公開だが存在
  • 大量データの高速投入は構造的に困難

Serverless が適している用途

  1. リアルタイム・ニアリアルタイム処理

    • API経由の個別データ更新
    • ストリーミングデータの継続的な取り込み
    • 継続的な小規模更新
  2. 小〜中規模の検索システム

    • データ量が限定的なシステム
    • 更新頻度が低いシステム
  3. 開発・検証環境

    • 使用時のみコスト発生
    • 自動スケールダウンによるコスト削減

Serverless が不適切な用途

  1. 大規模全文検索システム

    • 数百万〜数千万件のドキュメントを扱うシステム
    • 頻繁なインデックス更新が必要なシステム
    • 複雑な検索クエリと大量データの組み合わせ
  2. バースト的な大量書き込み

    • 短時間での大量データ投入
    • 複数システムからの同時バッチ処理
    • 日次・月次の全件再インデックス

移行判断基準

Serverless を選択すべき場合: - データ規模:小〜中規模 - 更新パターン:分散型(継続的な小規模更新) - 運用負荷軽減が最優先 マネージドクラスターを選択すべき場合: - データ規模:大規模(数百万件以上) - 更新パターン:バッチ型(定期的な大量更新) - 全文検索のパフォーマンスが重要