這裡要額外解釋一下 API 協作,大家可以想像一下,這個例子里用 controller 的方式,協作的心智成本是很低的,我們只需要看一下其它組的 API(也就是 CRD)里的欄位含義,然後開始"聲明自己要幹嘛" 就可以了。
當然,其實這兩者的對比是不公平的,因為例子一基本上等於沒有框架也沒有 PaaS 在裸寫應用,而例子二是在現成的架子上搭東西。真正搞開發的時候,底下的資料庫,高可用以及由框架或 Mesh 定義的規範與 協作形式基本也都是做完一遍之後開箱即用的,整體成本和自己整一個生產級 kubernetes 孰高孰低還不好說。另外,CRD 雖然改聲明方便,但用過 k8s 原生對象的都知道,改 spec 前我們必須得對下面的 機制有所了解,才能明白改了之後到底能否實現自己的需求,因此這個"心智成本"也只是變了一下形式而已。最後,這個"房間、燈、鎖"的例子其實選得很好,因為這個系統里組件明確並且都需要去協調一個不可靠的 模塊(燈、鎖這些設備),假如是我們只是在虛擬賬戶間轉個賬對個賬啥的,恐怕就很難塞進這個模式里去了。