2026/01/10

2026-01-10.png

「沒有 bug 的程式是不存在的,軟體得以正常運行是要建立在一系列特定的前提條件下。」——《DevOps 原理与实践》(本書為簡體中文作者出版書籍,引用內文則經過轉譯為正體中文。)

對你而言,軟體是一個不可解的黑盒子?還是一個充滿確定性的工具?

至少在大多數的情況下,我們對於軟體的認識應該是「特定的輸入,可以得到特定的輸出」。

最簡單的範例,好比電子計算機輸入 1 + 1 就是會得到 2。

但有沒有可能同樣給予「特定的輸入」,卻沒能得到預期中「特定的輸出」呢?

如同金句所述,軟體要能得以正常運行,需要仰賴「一系列特定的前提條件」。

因此當你的軟體(服務)需要依賴的「前提條件」較為複雜時,如何管理它們就會是一個頗有難度的挑戰。

試著去比較一下單機軟體、網站、分散式架構的軟體、雲原生應用、IoT設備的軟體、工控軟體⋯⋯,你會發現各自需因應的挑戰皆不相同。

當軟體運行所需的不再只是程式碼,還環環相扣包含了 Infrastructure 的彈性、網路的延遲、資料庫的狀態,甚至是第三方服務的穩定性。只要其中一個環節出了差錯,就無法滿足「特定輸出」的前提條件。

正常運行的軟體,需要包含 Dev、Ops 及整個團隊的共同努力,這裡面會涉及多重層次的相依關性,而 DevOps 正是一再的提醒我們這件重要的事情。