可用性
本ドキュメントは、TASHIKAプラットフォームの可用性に関する要件を定義します。
NOTE
分類は IPA 非機能要求グレード 大項目 A に準拠しています。 事業継続計画は CR-004 を参照。
AV-001: 可用性 (Availability)
| 指標 | 目標値 | 備考 |
|---|---|---|
| 月間稼働率(通常期: 2〜12月) | 99.9%(月間ダウンタイム ≤ 43分) | |
| 月間稼働率(繁忙期: 1月) | 99.95%(月間ダウンタイム ≤ 22分) | |
| 計画メンテナンス | Zero Downtime Deployment | Blue/Green デプロイ |
| 障害復旧目標(RTO) | 4時間以内 | → CR-004 |
| データ復旧目標(RPO) | 1時間以内 | → CR-004 |
冗長性要件
- アプリケーション層: 複数インスタンスによる冗長構成
- データベース層: レプリカによるフェイルオーバー構成(同一リージョン内)
- クロスリージョンレプリカ: オプション(エンタープライズプラン向け)
AV-002: データ整合性 (Data Integrity)
| 要件 | 説明 |
|---|---|
| Source of Truth 管理 | 各データ項目が「API由来」か「手入力」かをメタデータで厳格に区別する |
| トランザクション保証 | 申告データの保存は原子的(Atomic)に行い、部分保存を許容しない |
| 楽観的排他制御 | 同一申告データの同時編集(従業員と管理者)を検知し、後勝ち上書きを防止する |
| 年度境界の整合性 | 年度確定後のデータは読み取り専用とし、いかなる操作でも変更不可とする |
| 外部キー整合性 | エンティティ間の参照整合性をDB制約で強制する |
| ミューテーション冪等性 | 状態変更を伴う API 操作(POST/PUT/PATCH)は Idempotency-Key ヘッダーにより冪等に実行可能とし、ネットワーク障害時のリトライで副作用が重複しないことを保証する |
AV-003: 弾力性 (Resilience)
マイナポータル・e-Tax/eLTAX・外部通知チャネル等の外部依存が障害を起こした場合、申告業務を縮退しながらも継続できることを保証する。
Circuit Breaker
外部API呼び出しにはすべて Circuit Breaker を適用し、障害の波及を防止する。
| 外部依存 | 正常時の動作 | Circuit Open 時のフォールバック |
|---|---|---|
| マイナポータルAPI | 電子的控除証明書の自動取込(XML) | 手動 XML アップロードモードへ切り替え |
| e-Tax / eLTAX | 電子申告データの自動送信 | ファイル出力(手動提出)モードへ切り替え |
| 外部給与連携 Webhook | 月次給与データのリアルタイム受信 | ポーリング / 手動 CSV インポートへ切り替え |
| 通知チャネル(Slack / Teams 等) | プッシュ通知 | メール通知へフォールバック。メールも不可の場合はシステム内通知のみ |
Retry(再試行)
- タイムアウト・5xx 系エラー(500 / 502 / 503 / 504)は自動再試行
- 最大再試行回数: 3回
- バックオフ戦略: Exponential Backoff + Jitter
- 冪等でない操作(データ送信等)は再試行前に重複チェックを必須とする
タイムアウト
| 操作カテゴリ | タイムアウト |
|---|---|
| 外部API(読み取り) | 5秒 |
| 外部API(書き込み) | 10秒 |
| XML インポート(単件) | 30秒 |
| PDF 生成(非同期ジョブ) | 5分 |
Graceful Degradation(段階的縮退)
外部依存が障害中であっても、以下の操作は継続可能であること:
- 申告データの入力・自動保存(モードレス設計、→ 申告領域)
- 申告ステータスの確認・履歴参照
- 手動 XML アップロードによる控除証明書登録
- 過去申告データ・源泉徴収票の参照・ダウンロード