英國企業

關於英國企業的文章、指南和教程,為開發者和企業提供實用知識與技巧。並說明真實成本與取捨。

Drupal Commerce 何時勝過 Shopify

對大多數網路商店來說,Drupal Commerce 都是錯的答案。這並不是在批評這個專案,它十五年來的工程品質一向紮實。這只是在陳述大多數商店的樣貌:幾百個 SKU、一種貨幣、面向消費者的客戶,最後刷一次卡。對這種形態的生意而言,代管型平台在每一個重要的面向上都會勝出,爭論還沒開始就已經結束。 但確實有一小群商家,他們的帳算下來完全相反,而且這是一群利潤可觀的商家。無法用變體表格表達的可組態產品。帶有議定價目表的貿易帳戶。目錄本身就是編輯內容。由 ERP 掌握庫存與價格,網站只是一個展示面的公司。在這些生意裡,代管型平台並不便宜,它是一筆長期繳納的稅,以應用程式、變通做法以及「這裡不准動」的形式支付。 本文要說清楚那條界線究竟落在...

Drupal 12:變化內容與搬遷時機

Drupal 12 預定在 2026年12月7日那一週推出,而 Drupal 10 會在 2026年12月9日走到生命週期終點。這兩個日期就印在 Drupal 核心發布時程的同一頁上,中間只隔兩行,可是絕大多數正在經營 Drupal 10 網站的人,兩個都沒注意到。新大版本的第一個 alpha 已經在 2026年9月2日打上標籤,所以這次發布的樣貌現在是有案可稽的事實,而不是臆測。 這場對撞就是整篇文章的重點。一個大版本問世,對網站擁有者來說通常並不急迫,因為你大可在舊的大版本上待個一兩年,等生態系跟上。這一次不一樣,舊的大版本會在新版本推出的同一週停止收到安全公告,於是一個技術事件變成一個帶著法遵鋒刃的期限。...

Drupal 主機代管:真正跑得動的伺服器條件

「Drupal 很慢」這個名聲,絕大部分來自主機代管,而它幾乎總是一個採購決定,不是軟體問題。網站被認真地做了出來,然後上線在一個以「幾個 PHP 檔案的形象網站」定價的方案上。結果就是:一套帶著正經算繪管線的內容管理系統,跑在一個自己改不了的記憶體上限裡,跑在一個自己控制不了的作業碼快取上,還沒有一個能執行自身工具的命令列。 人們心裡拿來對比的是 WordPress,而這個對比是錯的。WordPress 幾乎在任何環境下都能勉強跑得動,是因為它的市占率逼著主機商把它做成幾乎在任何環境下都能勉強跑得動。Drupal 的前提不同:它假定你有較新的 PHP、較新的資料庫、真正的快取後端、一個命令列,以及一套把程式碼庫當成建置產物、而不是...

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

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

真正有意義的可用性 SLA

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

軟體原始碼託管:誰真的需要它

軟體原始碼託管,也就是把原始碼交給中立的第三方保管(英文稱為 software escrow),回應的是一種完全合理的擔憂:替你打造並維運關鍵系統的供應商收攤了,而你手上留下的,是一個自己離不開、卻又維護不了的東西。託管合約把原始碼寄存在第三方那裡,一旦真的發生這種情況,第三方就把它交付給你。 這種擔憂站得住腳。問題在於這項工具經常被誤解,而兩者之間的落差催生出一種合約:每年都在花錢,真到需要它的那一天卻幫不上忙。 簽約之前該先問的那個不舒服的問題: 如果明天就把程式碼交到你手上,你這邊真的有人跑得起來嗎?一份沒有建置說明、沒有基礎架構定義、沒有它所呼叫的第三方服務憑證、也沒有資料的原始碼託管,不是營運持續計畫。那只是一個資料夾。從...

固定價格合約還是按工時計費

在固定價格合約與按工時計費之間做取捨,通常會被說成是一次關於風險的選擇。這個說法本身沒錯,可是緊接著就被處理歪了,因為雙方都預設風險會消失,而不是只在兩邊之間換手。 風險並不會消失。在固定價格的安排裡,估算失準的風險由廠商承擔,而廠商會把這份風險先算進報出的金額裡。在按工時計費的安排裡,承擔的人換成業主。真正的問題從來不是哪一種做法能消除不確定性,而是哪一方比較有條件去管理它,以及把風險轉移出去的代價值不值得付。 能事先看出哪一種做法會成功的檢驗: 你能不能把「完成」寫下來,寫到兩個人對於是否已經達到這個狀態能夠得出一致判斷的程度?如果可以,固定價格就是你能用的選項,而且多半是合理的。如果寫不出來,固定價格合約並不會把模糊消掉,它只...

小型軟體團隊的災難復原

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

軟體 RFP 怎麼寫:拿到能互相比較的報價

軟體 RFP,也就是需求建議書,本來的用途是讓不同廠商變得可以互相比較。可是現實中大多數文件剛好起了反效果:它們把解決方案寫得夠細,細到把回答的空間綁死,卻偏偏漏掉了任何人報價時都會需要的那些資訊。結果就是五份報價,彼此差了一個數量級,形式上每一份都回應了需求,但沒有任何兩份在衡量同一件事。 常見的說法是廠商在打太極。偶爾確實如此。但更常見的情況是,文件要了一個從它本身內容根本推不出來的數字,於是每家廠商都用各自不同的假設去填補空白。假設不同,價格自然不同,這裡並沒有誠不誠實的問題。 判斷你的 RFP 是否有效的檢驗方式: 兩家不同的廠商讀完之後,能不能得出實質上相同的範圍?如果文件裡只寫了「使用者管理」,沒有說明有幾種角色、權限是...

軟體維護成本:沒人編進預算的部分

軟體維護成本,就是那個讓一個成功專案在十八個月後變成一場尷尬談話的數字。開發階段有預算、有簽核,也如期交付了。可是上線之後會發生什麼事,被一句「技術支援」草草帶過,再配上一個有人憑感覺喊出來的金額,而那個金額幾乎每次都太小。 原因出在結構,不是誰不用心。開發有一個可以報價的範圍。維護沒有範圍,因為決定它的是還沒發生的事:某個相依套件爆出漏洞、某家供應商改掉自己的介接規格、某位使用者碰上當初誰都沒想到的狀況。 人人都在引用的經驗法則是每年抓開發成本的 15 到 20 個百分點,而它之所以危險,正是因為它離正確答案不遠。 它對的次數多到讓人安心,錯的時候又總是往同一個方向錯:它低估了缺陷集中浮現的第一年,而在有法遵義務或外部介接很多的系...