Boundary Breaks
Scope
Mục tiêu là các trạng thái trong đó
các giả định về boundaries phân tách bên trong và bên ngoài của một hệ thống
không còn có thể được duy trì.
Điều được đề cập ở đây không phải là external APIs hoặc communication methods cụ thể,
mà là các loại breakdown được quan sát trong operations.
Definition
Boundary breaks mô tả một trạng thái trong đó các giả định như input format, response content,
availability, và temporal constraints được giả định sẽ thành lập khi một hệ thống tương tác với bên ngoài
sụp đổ một phần,
và internal processing không còn thành lập dựa trên các giả định đó.
Symptoms
- Unexpected input hoặc responses vượt qua boundaries và internal state không thể được xử lý như giả định
- Các tình huống được quan sát mà các thay đổi đến external specifications ảnh hưởng đến assumptions của internal processing mà không được phát hiện
- Các tình huống được quan sát mà timeouts hoặc partial failures được tích hợp vào happy-path assumptions thay vì được coi như exceptions
- Các tình huống được quan sát mà responsibility và decisions vượt qua boundaries được coi như một phần của internal logic
Typical Triggers
- Các trạng thái tiếp tục mà hành vi của external systems được nhúng vào code như implicit assumptions
- Các trạng thái được coi như assumptions mà error handling hoặc fallback được triển khai một phần
- Input được tin tưởng trong khi verification của boundary conditions bị bỏ qua
- Operations tiếp tục mà không có assumptions liên quan đến boundaries được làm rõ ràng
Diagnostic Questions
- Có phải là một trạng thái mà các values được truyền từ bên ngoài được tin tưởng vô điều kiện?
Có phải là một trạng thái mà guarantees và non-guarantees tại boundaries có thể đượcgiải thích rõ ràng? - Có phải là một trạng thái mà các states trong timeout hoặc failure có thể được nắm bắt?
- Có phải là một trạng thái mà các paths mà qua đó các thay đổi vượt qua boundaries lan truyền internally có thể được liệt kê?
What This Is Not
- Điều này không chỉ ra best practices cho API design
- Điều này không nhằm mục đích loại bỏ hoàn toàn external dependencies
- Điều này không đề cập đến single communication errors hoặc failure cases
Connections
- Why It Breaks: Context Erosion, Decision Avoidance