人類非常擅長將複雜性簡化。我們把時間劃分為行程表,把知識劃分為學科,把組織劃分為部門,把流程劃分為可預測的序列。
這種能力幫助我們建立了現代文明。但在某個時刻,我們開始把簡化後的模型與現實本身混淆了。
宇宙不會執行甘特圖。網路不會等待一個操作完成後才開始另一個。金融市場不理會組織邊界,而複雜系統很少按照預定的序列運作。
然而,我們的許多基礎設施、教育、管理和軟體工程仍然圍繞著這個假設來組織。
我們稱之為線性壟斷。
當線性思維遇上平行現實
考慮一個相對簡單的系統,有十個組件,每個組件可以有三種狀態:在線、降級或離線。
這會產生 3^10 = 59,049 種可能的組合。
如果有二十個組件,這個數字會超過 34 億。
加上網路延遲、並行性、不可預測的人類行為和共享相依性,可能互動的數量會變得非常龐大。
並非每一種組合都是可達到的或危險的。但獨立地理解每個組件,對於整個系統會如何運作,告訴我們的資訊少得驚人。
資料庫操作成功。網路請求成功。身份驗證檢查成功。然而在特定的時間和狀態組合下,整個操作失敗了。
一個系統可以在局部是正確的,但在全域是錯誤的。
這就是線性壟斷的根本弱點:假設正確執行個別步驟就能保證整體結果正確。
隱藏的成本
我們到處都遇到這種矛盾。
- 軟體工程:應用程式在測試期間運作完美,但在意外的並行性、時間或資源競爭下失敗。競爭條件暴露出順序推理所忽略的互動。
- 基礎設施:集中式架構簡化了控制,但可能透過共享相依性放大故障。當原本應該獨立的組件依賴相同的脆弱基礎時,冗餘就沒有意義。
- 風險管理:組織單獨評估威脅,而現實世界的風險會互動、複合,並透過相互連接的系統傳播。
- 企業管理:專案被表示為可預測的序列,即使其結果取決於不斷變化的人員、資源、市場和外部事件網路。
根本的錯誤是一致的:我們優化孤立的組件,卻低估了它們之間的關係。
局部最佳化並不等於全域韌性。
超越直線
打破線性壟斷並不意味著放棄順序流程。它意味著認識到它們的局限性。
分散式架構、參與者模型、形式化驗證和系統思維提供了推理複雜性的方法,而不是隱藏它。
但還有一個同樣重要的觀點轉變。
我們必須停止混淆系統被指示要做的事與實際發生的事。
發送文件並不能證明已送達。送達並不能證明它被打開。打開並不能證明理解。而資料庫記錄並不會自動構成可信的證據。
在分散式環境中,事件發生在不同的裝置、網路和獨立運作的系統上。要建立它們之間的關係,需要的不只是一連串方便的綠色勾號。
它需要可驗證的證據。
簡化的真正代價
線性思維永遠是必要的。沒有抽象,我們既無法理解也無法管理我們周圍的世界。
當抽象變成教條時,危險就開始了。
現代系統不僅僅是組件的集合。它們的行為是從互動、相依性、時間和不斷變化的條件中湧現出來的。
安全不能簡化為一份清單。韌性不能僅靠讓個別組件可靠來實現。信任不能僅靠宣稱某個流程已完成來建立。
我們需要的系統,不僅要能執行指令,還要能處理不確定性、保存證據,並在事件發展與預期不同時仍然可靠。
可靠技術的未來,不會由系統多麼完美地遵循預期序列來定義,而是由它們如何處理序列之外發生的一切來定義。

💬 评论
📜 评论政策