自動化

關於自動化的文章、指南和教程,為開發者和企業提供實用知識與技巧。涵蓋範圍、工作量與實際成本。

真正帶來改變的事故檢討

事故檢討很容易召開,卻很難做得有用。會開了,文件寫了,四條改善事項記下來了,六個月後同一個故障又發生一次,而某個人正好在找別的東西時翻出那份舊文件。 談到這件事時,注意力幾乎都落在「不究責」這個詞上。這條原則確實重要,但失效的地方並不在那裡。有大量組織把不究責執行得一絲不苟,檢討卻什麼也沒有改變,原因很簡單:他們把檢討本身當成了交付物,而不是當成產出交付物的手段。 判斷你們的檢討是否有效,有一個簡單到令人難堪的測試:過去六個月記錄下來的改善事項,實際完成的比例是多少? 如果答案是「大部分」,那麼無論流程長什麼樣,它都在發揮作用。如果低於一半,你們是在開會而不是在運行一個流程,換更漂亮的範本也救不了。少數幾條帶負責人與期限的事項,勝過...

小型團隊的軟體供應鏈安全

軟體供應鏈安全聽起來像是設有專職資安部門的大型組織才需要煩惱的事,而正是這種定位讓人判斷失準。一個只維運少數幾項服務的小型團隊,通常同樣相依於數百個套件,而其中沒有任何一個是團隊裡有人真正讀過的。這些套件會在建置時從團隊無法掌控的套件庫抓下來,接著在存放部署認證資訊的機器上執行安裝腳本。 暴露程度並不跟著公司規模等比例放大。它跟著相依套件的數量與建置自動化的程度放大,而小型團隊往往是前者更多、後者更少人盯著,處境比那些公開談論這件事的大型組織還要吃緊一些。 令人不舒服的算術: 你的應用程式大概有十來個直接相依套件,以及數百個間接相依套件。那十來個是你自己挑的。其餘的不是,你一個也沒讀過,而其中任何一個只要執行安裝腳本,拿到的權限就跟...

真正會被讀的技術文件

技術文件的失敗方式非常具體,也非常好預測。有人在兩週清閒的時間裡寫下一大堆,接著系統變了,沒有人回頭更新,一年之內那份文件就開始信心十足地講著錯誤的內容。到了那個時候,它比什麼都沒有還要糟,因為相信它的讀者會依據早已不成立的資訊去動手。 常見的反應是號召大家多寫一些,而這只會讓同樣的失敗來得更快。有用的反應是少寫,並且認真挑選寫什麼,因為真正的瓶頸不是寫作的工夫,而是維護的工夫。文件從寫完那一刻起,就開始被現實甩在後面。 判斷一份文件該不該存在,唯一經得起時間的檢驗是: 當它變錯的時候,會不會有人察覺?部署指南天天有人用,錯誤立刻就會浮出來。一份二十頁的子系統說明只會被讀一次,它的錯誤要等到十八個月後,有人照著它動手時才浮出來。沒有...

讓新人第一週就能交付的開發者到職流程

開發者到職通常是用新人訓練花了幾天來衡量的,而那是問題的另一頭。真正重要的數字是另一個:一位新來的工程師要過多久,才能改動某個東西,而且有把握自己沒有弄壞別的地方。在大多數團隊裡,這個數字是以月計算的,而不是以天計算的。 延遲很少出在人身上。它出在系統裡有多少部分只存在於別人的腦袋裡,以及前兩週裡有多大一部分時間,是靠一次次打斷別人,一點一點把這些東西挖出來的。 唯一值得追蹤的指標:從到職到他們的第一次改動進入正式環境,需要多久。 不是第一次提交,提交可以只是改一個錯字,而是一次有意義而且真正上線的改動。如果這個時間超過一週,障礙幾乎從來都不是能力。而是一份最近沒有人從零走過一遍的環境建置流程,或者一份沒有人帶路就找不到入口的程式碼...

真正有意義的可用性 SLA

可用性 SLA 看起來像一句承諾,實際運作起來卻更像一份退款政策。供應商很清楚這一點。客戶往往並不清楚,於是在簽下服務等級協議時以為自己買到了可用性,而真正買到的,只是萬一沒拿到時的一點折扣。 這不一定是筆糟糕的交易。它只是與大多數人以為自己在簽的那筆交易不同,而這個差別恰恰在系統停擺、有人追問合約究竟怎麼寫的那一刻顯現出來。 三個九聽起來接近完美,卻允許每月 43 分鐘的停機。 四個九允許四分鐘。如果你的業務吸收得了平日下午 43 分鐘的中斷,99.9% 就足夠了,不必為更高的數字付費。如果吸收不了,再多的九也幫不上忙,因為協議給你的是一筆抵用金,而不是阻止這次中斷。 可用性 SLA 用分鐘兌現的承諾百分比把一個非常大的區間壓縮成...

小型軟體團隊的災難復原

在小團隊裡,災難復原通常只剩下一份從來沒人打開過的文件裡的一行字:備份已經開啟。這句話本身沒有錯,卻算不上任何問題的答案,因為它既沒有說明真正出事時救回來的資料會有多舊,也沒有說明還原一次要花多久,更沒有說明到今天為止究竟有沒有人完整地做過一次還原。 擁有備份和真的能復原之間存在一段明顯的距離,多數的服務中斷正是在這段距離裡升級成事故。一份存在、內容也夠新、卻從來沒有被還原過的備份,本質上仍然只是一個假設;而你第一次驗證這個假設的時刻,剛好是發現它其實是錯的最糟糕的時刻。 兩個數字能把意見變成計畫。 你承受得起丟多少資料,又承受得起停多久?這就是你的復原點目標與復原時間目標。只要營運那一側沒有人把這兩個數字說出口,關於備份頻率的一切...

經得起真實使用者考驗的軟體測試策略

談到軟體測試策略,大家幾乎都從覆蓋率說起,而覆蓋率偏偏是整個領域裡資訊量最低的一個數字。一個覆蓋率達到九十的程式碼庫,照樣可能在最常被走到的路徑上把缺陷送上線,因為覆蓋率量的是測試執行期間有哪些程式碼行被跑過,而不是有沒有針對這些行做出任何有意義的斷言。 真正信任自己測試套件的團隊,並不是覆蓋率百分比最高的那一群。他們是這樣的團隊:東西真的壞掉時測試會亮紅燈,其餘時候測試安安靜靜。這個特性,比多數人想像的更難用錢買到。 對任何一個測試都值得問的問題: 如果它失敗了,我知道該怎麼辦嗎?因為行為改變而失敗的測試,會告訴你一些事情。因為某個實作細節換了位置而失敗的測試,只能告訴你有人做了重構。這種失敗累積到一定數量,團隊就不再讀失敗訊息,...

Cloudflare Queues:在邊緣處理背景工作

Cloudflare Queues 解決的是每個無伺服器應用遲早都會撞上的那個問題:一個請求抵達,觸發了一段使用者本來不該等待的工作。寄出確認郵件、把上傳的圖片改尺寸、把記錄同步到第三方服務。這些工作的共同點是:它們必須發生,但並不需要在使用者按下按鈕的那一刻發生。在傳統伺服器上,你把這類工作交給一個背景工作行程就好。可是在 Workers 上,請求處理完就結束,根本沒有可以交出去的常駐行程。 常見的幾種繞道做法,比看起來更糟。把工作放在請求裡同步做完,等於讓使用者去等一家郵件服務商的回應。向另一個 Worker 丟出請求卻不等待它,只要發起方的呼叫先結束,這個工作就丟了。這兩種做法都撐不過服務商的一次故障。 佇列真正給你的是什麼:...

企業 AI 代理人:成本與失敗之處

企業 AI 代理人是一個熟悉故事的當下版本:一個十分鐘就展示得很漂亮的原型,接著是六個月的努力,只為把它做到夠可靠、可以無人看管。幾乎全部預算都消耗在這兩種狀態之間的距離裡,而幾乎沒有任何行銷資料描述這段距離。 代理人與聊天機器人有一處在商業上真正要緊的差別。聊天機器人產出文字,由人來決定拿它做什麼。代理人則會採取行動:呼叫系統、寫入紀錄、發送訊息。這一轉變把風險從尷尬變成了後果,也正因如此,所需的工程紀律更接近建置一套支付系統,而不是一件內容工具。 錢實際花在哪裡: 模型是最便宜的部分。成本在工具整合、評測框架、護欄,以及交回給人的路徑上。一個簡單的內部代理人是 £5,000 到 £12,000,帶檢索的是 £12,000...

CRM 與 ERP 整合:成本、方法與陷阱

CRM 與 ERP 整合幾乎總是被說成一個連線問題,而它幾乎從來都不是連線問題。兩套系統都有文件齊全的介面,也都有現成的連接器。真正的難處在於,業務和財務花了很多年,用兩套不同的詞彙去描述同一門生意,而整合正是這兩套詞彙被迫達成一致的地方。 當有人問起,一條被轉換過兩次的商機到底該產生一個客戶還是兩個,這個專案就不再是技術問題了。這樣的對話,在三十個欄位上重複一遍,才是真正的工作量。 先做這件事: 在挑選連接器或平台之前,先寫下每一個共用欄位由哪套系統擁有,以及兩邊同時被編輯時會發生什麼。跳過這一步的整合建得很快,然後用好幾年時間不斷產出重複紀錄、對不上的合計數,以及沒人敢信的報表。 為什麼 CRM 與 ERP 的資料始終對不齊兩套...