ストーリー
あなたは、ビジネス要件をもとに、具体的で計測可能な非機能要件を策定することになりました。
ミッション概要
| ミッション | テーマ | 目安時間 |
|---|---|---|
| Mission 1 | 非機能要件の発見と分類 | 15分 |
| Mission 2 | パフォーマンス要件の定義 | 15分 |
| Mission 3 | スケーラビリティ設計 | 15分 |
| Mission 4 | 可用性と災害復旧 | 15分 |
| Mission 5 | セキュリティ要件と脅威モデル | 15分 |
| Mission 6 | 非機能要件ドキュメント完成 | 15分 |
前提条件
以下のECプラットフォームの要件が与えられています:
事業概要:
- BtoC向けECプラットフォーム
- 初年度ユーザー数: 10万人、3年後目標: 100万人
- 商品数: 10万SKU
- ピーク時(セール): 通常の10倍のトラフィック
- 決済: クレジットカード、QRコード決済
- 24時間365日稼働(メンテナンスウィンドウは深夜2-4時)
Mission 1: 非機能要件の発見と分類(15分)
要件
上記のビジネス要件から、非機能要件を洗い出し、以下のカテゴリに分類してください。
- パフォーマンス
- スケーラビリティ
- 可用性
- セキュリティ
- 保守性
- 運用性
期待される成果物
各カテゴリごとに最低2つの非機能要件を記述すること。
解答例
| カテゴリ | 非機能要件 |
|---|---|
| パフォーマンス | 商品検索のレスポンスタイムが95パーセンタイルで200ms以内 |
| パフォーマンス | 商品詳細ページの表示が95パーセンタイルで500ms以内 |
| スケーラビリティ | 通常時の10倍のトラフィックに15分以内でスケールアウト可能 |
| スケーラビリティ | 3年間でユーザー数10倍に対応できるアーキテクチャ |
| 可用性 | 年間稼働率99.95%以上(ダウンタイム年間4.38時間以内) |
| 可用性 | RPO: 1時間以内、RTO: 4時間以内 |
| セキュリティ | PCI DSS Level 1準拠 |
| セキュリティ | 個人情報の暗号化(保存時・通信時) |
| 保守性 | 新機能のデプロイが1日1回以上可能 |
| 保守性 | テストカバレッジ80%以上 |
| 運用性 | 全サービスの健全性を単一ダッシュボードで監視可能 |
| 運用性 | 障害検知から通知まで5分以内 |
Mission 2: パフォーマンス要件の定義(15分)
要件
以下のユーザージャーニーに対して、具体的なパフォーマンスSLAを定義してください。
- トップページ表示
- 商品検索
- 商品詳細ページ表示
- カートへの追加
- 決済処理
期待される成果物
各操作について、p50/p95/p99のレスポンスタイム目標を設定すること。
解答例
| 操作 | p50 | p95 | p99 | 備考 |
|---|---|---|---|---|
| トップページ表示 | 300ms | 800ms | 1.5s | CDN利用前提 |
| 商品検索 | 150ms | 400ms | 1s | Elasticsearchバックエンド |
| 商品詳細ページ | 200ms | 500ms | 1.2s | 画像はCDN配信 |
| カート追加 | 100ms | 300ms | 800ms | 同期処理 |
| 決済処理 | 1s | 3s | 5s | 外部決済ゲートウェイ依存 |
スループット要件:
| 指標 | 通常時 | ピーク時 |
|---|---|---|
| 同時接続ユーザー | 5,000 | 50,000 |
| リクエスト/秒 | 1,000 | 10,000 |
| 注文/時間 | 500 | 5,000 |
Mission 3: スケーラビリティ設計(15分)
要件
3年後の10倍成長に対応するスケーラビリティ戦略を設計してください。
以下を検討すること:
- 水平スケーリングの方針
- データベースのスケーリング戦略
- キャッシュ戦略
- 非同期処理の活用
解答例
水平スケーリング方針:
アプリケーション層:
- Kubernetes HPA(CPU使用率70%でスケールアウト)
- 最小Pod数: 3、最大Pod数: 30
- スケールアウト時間: 30秒以内
データベース層:
- 書き込み: Primary 1台(垂直スケーリング)
- 読み取り: Read Replica 2-8台(水平スケーリング)
- シャーディング: ユーザーIDベース(100万ユーザー超時に導入)
キャッシュ層:
- Redis Cluster(3ノード以上)
- 商品情報キャッシュ: TTL 5分
- セッション: Redis(TTL 30分)
- CDN: 静的アセット + 商品画像
非同期処理:
即座に応答不要な処理:
- メール送信 → メッセージキュー
- 在庫集計 → バッチ処理
- レコメンデーション更新 → 非同期ジョブ
- ログ分析 → ストリーミング処理
Mission 4: 可用性と災害復旧(15分)
要件
99.95%の可用性を実現するための設計と、災害復旧計画を策定してください。
解答例
可用性設計:
| 層 | 冗長化方式 | フェイルオーバー時間 |
|---|---|---|
| ロードバランサー | アクティブ-アクティブ(マルチAZ) | 即時 |
| アプリケーション | 3AZに分散配置、最低3Pod | 30秒 |
| データベース | マルチAZレプリケーション | 60秒(自動) |
| キャッシュ | Redis Sentinel / Cluster | 30秒 |
| CDN | グローバル分散 | 即時 |
ダウンタイム予算(99.95%):
年間: 4時間22分48秒
月間: 21分54秒
日間: 43.2秒
災害復旧計画:
| 指標 | 目標 | 手段 |
|---|---|---|
| RPO(Recovery Point Objective) | 1時間 | データベースの継続的バックアップ |
| RTO(Recovery Time Objective) | 4時間 | 別リージョンへのフェイルオーバー |
| DRテスト | 年2回 | ゲームデイによるDR訓練 |
Mission 5: セキュリティ要件と脅威モデル(15分)
要件
ECプラットフォームに対する主要な脅威を特定し、セキュリティ要件を定義してください。
解答例
STRIDE脅威分析(抜粋):
| 脅威 | カテゴリ | 対策 |
|---|---|---|
| セッションハイジャック | Spoofing | HttpOnly Cookie、セッション固定対策 |
| 注文データ改ざん | Tampering | サーバーサイドバリデーション、署名検証 |
| 管理者操作の否認 | Repudiation | 監査ログ、操作履歴の保全 |
| 個人情報漏洩 | Information Disclosure | AES-256暗号化、アクセス制御 |
| DDoS攻撃 | Denial of Service | WAF、レート制限、CDN |
| 権限昇格 | Elevation of Privilege | RBAC、最小権限の原則 |
セキュリティ要件:
認証:
- 多要素認証(管理者必須)
- パスワードポリシー: 12文字以上、複雑性要件
- アカウントロックアウト: 5回失敗で30分ロック
暗号化:
- 通信: TLS 1.3
- 保存: AES-256-GCM
- 鍵管理: AWS KMS
コンプライアンス:
- PCI DSS Level 1
- 個人情報保護法対応
- Cookie同意管理
Mission 6: 非機能要件ドキュメント完成(15分)
要件
Mission 1-5の成果を統合し、完成された非機能要件ドキュメントを作成してください。
以下の構成で整理すること:
- 概要と前提条件
- パフォーマンス要件
- スケーラビリティ要件
- 可用性・災害復旧要件
- セキュリティ要件
- 運用性要件
解答例
上記Mission 1-5の回答を以下のフォーマットで統合します:
# ECプラットフォーム 非機能要件定義書
## 1. 概要
- 対象: BtoC向けECプラットフォーム
- 初年度10万ユーザー → 3年後100万ユーザー
## 2. パフォーマンス要件
- 主要操作のレスポンスタイムSLA(p50/p95/p99)
- スループット要件(通常時/ピーク時)
## 3. スケーラビリティ要件
- 水平スケーリング方針
- データベース戦略
- キャッシュ・非同期処理活用
## 4. 可用性・災害復旧要件
- SLA: 99.95%
- RPO: 1時間 / RTO: 4時間
- 冗長化設計
## 5. セキュリティ要件
- 認証・認可・暗号化
- コンプライアンス(PCI DSS)
- 脅威モデルと対策
## 6. 運用性要件
- 監視・アラート
- デプロイ頻度
- インシデント対応
達成度チェック
| ミッション | テーマ | 完了 |
|---|---|---|
| Mission 1 | 非機能要件の発見と分類 | |
| Mission 2 | パフォーマンスSLA定義 | |
| Mission 3 | スケーラビリティ設計 | |
| Mission 4 | 可用性と災害復旧 | |
| Mission 5 | セキュリティ脅威モデル | |
| Mission 6 | 非機能要件ドキュメント |
まとめ
| ポイント | 内容 |
|---|---|
| NFR発見 | ビジネス要件から体系的に抽出する |
| 定量化 | 「速い」ではなく「p95で200ms以内」と定義する |
| トレードオフ | 可用性とコストのバランスを明示する |
| 文書化 | ステークホルダーが合意できる形で整理する |
チェックリスト
- ビジネス要件から非機能要件を体系的に洗い出せた
- パフォーマンスSLAを定量的に定義できた
- スケーラビリティ戦略を設計できた
- 可用性と災害復旧計画を策定できた
- セキュリティ要件を脅威ベースで定義できた
次のステップへ
次はチェックポイントクイズです。非機能要件の理解度を確認しましょう。
推定読了時間: 90分