⚡ 技術制約・API制限
📋 AI SUMMARY
System: Technical Constraints & API Rate Limits Reference Purpose: Centralized source of truth for all technical limitations and performance constraints Key Rules: Single source for all rate limits, performance targets, technical constraints Architecture: Centralized constraint management to prevent duplication across documentation
🎯 QUICK REFERENCE
- Shopify API: REST 40req/min、GraphQL 1000cost/min (実運用は余裕を持って35req/min、900cost/min)
- Cloudflare Workers: CPU時間制限・メモリ制限あり
- Firebase Auth: 料金上限設定必要
- 応答時間目標: 200ms以下 (API)、100ms以下 (表示速度)
🔗 INTEGRATION POINTS
- Input Systems: 外部API(Shopify、Firebase)
- Output Systems: BFF API、フロントエンド
- Dependencies: レート制限管理、キューイングシステム
- Validation: リアルタイム監視、アラート設定
# 技術制約ルール(機械可読版)
API_CONSTRAINTS:
shopify_rest_api:
rate_limit: 40 # requests per minute
burst_limit: 80 # initial burst allowance
retry_strategy: "exponential_backoff"
max_retries: 3
shopify_graphql_api:
rate_limit: 1000 # cost per minute
query_complexity_limit: 100
cloudflare_workers:
cpu_time_limit: 50 # milliseconds
memory_limit: 128 # MB
subrequest_limit: 6
duration_limit: 30000 # milliseconds
firebase_auth:
monthly_active_users_free: 50000
custom_claims_per_user: 1000
token_lifetime: 3600 # seconds
PERFORMANCE_TARGETS:
api_response_time: 200 # milliseconds
page_load_time: 100 # milliseconds
uptime_target: 99.9 # percentage
concurrent_users: 1000 # target capacity
SCALING_CONSTRAINTS:
database_connections: 1000 # D1 database
file_storage: 100 # GB for R2
bandwidth: 10 # TB/month
edge_locations: "global" # Cloudflare network
🚨 Shopify API制約
REST API制限
- 基本制限: 40リクエスト/分
- バースト許可: 80リクエスト(初回)
- 制限範囲: ショップ全体
- リセット: 毎分
GraphQL API制限
- コスト制限: 1000コスト/分
- クエリ複雑度: 100以下推奨
- バッチ処理: 推奨アプローチ
対策
shopify_rate_limiting_strategy:
queue_system: "実装必須"
retry_logic: "exponential backoff"
caching: "積極的活用"
batch_operations: "可能な限り使用"
⚡ Cloudflare制約
Workers制限
- CPU時間: 50ms (有料プランは100ms)
- メモリ: 128MB
- サブリクエスト: 6回まで
- 実行時間: 30秒まで
Pages制限
- ファイルサイズ: 25MB/ファイル
- 総ファイル数: 20,000ファイル
- デプロイサイズ: 500MB
D1 Database制約
- 読み取り: 無制限(キャッシュ活用)
- 書き込み: 100,000リクエスト/日(無料)
- ストレージ: 5GB(無料)
🔥 Firebase制約
Authentication
- MAU制限: 50,000ユーザー/月(無料)
- カスタムクレーム: 1,000バイト/ユーザー
- トークン有効期限: 1時間
対策
firebase_optimization:
token_refresh: "自動管理"
custom_claims: "最小限使用"
usage_monitoring: "必須実装"
📊 パフォーマンス目標
レスポンス時間
| コンポーネント | 目標値 | 現状 | 対策 |
|---|---|---|---|
| BFF API | 200ms以下 | - | キャッシュ・最適化 |
| フロントエンド | 100ms以下 | - | CDN・プリロード |
| データベースクエリ | 50ms以下 | - | インデックス最適化 |
可用性目標
- 稼働率: 99.9%以上
- 同時ユーザー: 1,000人対応
- データ保持: 99.99%
🎉 制約解決状況
1. ✅ Queue System実装済み
// ✅ Cloudflare Queuesで完全解決済み
interface QueueImplementation {
status: "IMPLEMENTED"; // ✅ 実装済み
solution: "Cloudflare Queues + Workers";
benefits: [
"429エラー完全撲滅",
"注文処理 <2秒レスポンス",
"自動リトライ + 障害耐性",
"Idempotencyで重複防止"
];
rateLimit: 35; // per minute (余裕を持って安全運用)
}
2. キャッシュ戦略
caching_strategy:
shopify_products: "1時間"
user_profiles: "30分"
system_config: "24時間"
static_content: "7日"
3. ✅ Queue監視システム
queue_monitoring_thresholds:
api_error_rate: 1 # 1%でアラート (大幅改善)
response_time: 2000 # 2秒超過でアラート
queue_length: 50 # 50件でアラート (安全範囲)
dlq_count: 5 # DLQに5件で緊急アラート
rate_limit_usage: 0 # 429エラーは完全撲滅
queue_processing_time: 30000 # 30秒超過でアラート
🔄 制約管理プロセス
定期レビュー
- 週次: API使用状況確認
- 月次: 制約値の見直し
- 四半期: 最適化施策の評価
緊急対応
escalation_procedures:
rate_limit_exceeded: "キューイング強化"
performance_degradation: "キャッシュ拡張"
capacity_exceeded: "スケールアウト"
📍 Single Source of Truth: このドキュメントが全技術制約の唯一の情報源です
🔄 更新頻度: 制約変更時は即座に更新
🚨 参照: 他ドキュメントでは制約値の重複記載禁止
関連ドキュメント: BFF API設計 | パフォーマンステスト