メインコンテンツまでスキップ

境界が壊れる

Scope

対象は、システムの内外を分ける境界に関する前提について、 維持できない状況が観測されている状態である。 ここで扱うのは、特定の外部 API や通信方式ではなく、 運用中に観測される破綻の型である。

Definition

境界が壊れるとは、システムが外部とやり取りする際に成立していると仮定されていた 入力形式、応答内容、可用性、時間的制約といった前提が部分的に崩れ、 内部処理がそれらを前提として成立しない状況が観測される状態を指す。

Symptoms(現れ方)

  • 想定外の入力や応答が境界を越えて流入し、内部状態が前提どおりに扱えない状況が観測される
  • 外部仕様の変更が検知されないまま、内部処理の前提に影響している状況が観測される
  • タイムアウトや部分失敗が例外として扱われず、通常系の前提に組み込まれている状況が観測される
  • 境界を越えた責務や判断が、内部ロジックの一部として扱われている状況が観測される

Typical Triggers

  • 外部システムの振る舞いが暗黙の前提としてコードに埋め込まれた状態が継続している
  • エラーハンドリングやフォールバックが部分的に実装された状態が前提として扱われている
  • 境界条件の検証が省略されたまま、入力が信頼されている状況が観測される
  • 境界に関する仮定が明示されないまま、運用が継続している

Diagnostic Questions(見分けるための問い)

  • 外部から渡される値を、無条件に信頼している状態か
  • 境界で何が保証され、何が保証されないかを説明できる状態か
  • タイムアウトや失敗時の状態を把握できる状態か
  • 境界を越えた変更が内部に波及する経路を列挙できる状態か

What This Is Not

  • API 設計のベストプラクティスを示すものではない
  • 外部依存を完全に排除することを目的としない
  • 単一の通信エラーや障害事例を指すものではない

Connections