論平臺工程的價值

{"type":"doc","content":[{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我已經當了幾年的平臺工程師。我喜歡這份工作,對此充滿了激情。"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"在本文中,我將討論我的專業知識所帶來的好處。由於平臺工程師的角色還比較新,所以對於這個角色的需求和所提供的價值還沒有形成廣泛的共識。假如你找三個人詢問他們對這個問題的意見,你會得到四個答案——至少在細節方面,我不會感到奇怪。另外,由於平臺工程與基礎設施非常接近,不存在直接和明顯的價值可見性,想想前端工程,它就可以顯示所提供的價值。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"不管怎麼說,我真正的動機是要清楚自己對這個問題的看法,而在這個過程中,寫作幫助了我。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"因爲我現在只研究雲基礎設施,因此我所有的論點,以及對基礎設施資源的提及,都應該放在這個背景下來看;不過我猜測,很多論斷在更傳統的數據中心,甚至更寬泛的範圍應該都可以成立。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"在我提出有價值的論點之前,我認爲明智的做法是先簡單回顧一下互聯網歷史。我所許諾的價值將會得到體現,這不僅是爲了好玩,而且是爲了描繪一幅圖景。我當然是基於自己的個人經歷,所以你的情況可能會不一樣。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"雲計算簡史"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"雲計算是指計算機系統資源的按需可用性,尤其是數據存儲(雲存儲)和計算能力,而用戶無需直接主動管理。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"——維基百科:"},{"type":"link","attrs":{"href":"https:\/\/en.wikipedia.org\/wiki\/Cloud_computing","title":null,"type":null},"content":[{"type":"text","text":"雲計算"}]},{"type":"text","text":"詞條"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"隨着現代雲計算的出現,計算環境發生了一個重大變化:硬件現在有了一個按需的 API。實際上,並不是硬件,而是資源之前只能通過硬件來表達。這種情況不是一朝一夕就能發生的,沒有第一家廠商使用“雲”這個詞,並且爲所有人都指定了新的標準(即使有人可能會這樣說)。這曾經是,現在依然是,一個由必要性和需求驅動的過程。這也不是一個進程,而是多個進程同時運行,並且以某種程度向同一方向發展。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"對於平臺工程,我認爲兩個因果概念或技術尤其重要,它們是:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"虛擬化"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"。儘管這一概念本身已經"},{"type":"link","attrs":{"href":"https:\/\/en.wikipedia.org\/wiki\/IBM_CP-40","title":null,"type":null},"content":[{"type":"text","text":"存在了幾十年"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":",而且很久以前就被用來處理邊緣案例和大型企業解決方案,但是在我看來,第一個對更大的市場產生重大影響的實施是虛擬服務器。虛擬服務器允許數據中心的所有者將其昂貴的硬件分割爲更小的塊,以供自己使用,並使之更容易銷售給他人。對現有資源的有效利用更爲有效。但更重要的是,如果能夠在一個物理服務器中創建多個虛擬服務器,那麼下一個邏輯步驟當然是自動執行這個過程,然後再進一步:自動化的工具。基礎設施 API 應運而生。不只是簡單地管理虛擬服務器,還包括網絡防火牆、CDN、數據庫等等,這些都是虛擬的,可以通過 API 來實現。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"容器化(與編排)"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":":從嚴格意義上說,容器化是"},{"type":"link","attrs":{"href":"https:\/\/en.wikipedia.org\/wiki\/OS-level_virtualization","title":null,"type":null},"content":[{"type":"text","text":"虛擬化的一個具體實現"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"。但我仍然認爲它應該有介紹自己的一段內容,因爲沒有技術能像容器化一樣,在基礎設施提供商和基礎設施用戶之間架起橋樑。封裝在容器內的應用使雙方在共同點上達成一致。只有適合於容器,我們才能運行它。而且,從容器化基礎設施的角度來看,也需要編排:在隔離的環境下,大規模地運行標準化容器。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"新範式"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"以上所提到的技術的廣泛應用(我相信還有其他因素)引起了許多思考,並導致了一系列新的觀點和後續業務的出現。在此,我要再次強調一些我認爲特別具有影響力並與背景相關的因素:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"微服務"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":":微服務是對應用設計和實現的一種完全不同的觀點。這使你可以將最複雜的應用視爲一組不同的、潛在的、相互連接的功能。這一思路不僅適用於實現(構建“簡化”的微服務),還適用於組織(擁有整體中定義良好的部分),當然,對部署和執行也有直接的影響:單體設計通常具有對操作系統和硬件(資源)的大量高度特定需求,而封裝在容器中的微服務可以在更相同的基礎設施中工作,不是作爲一個整體,而是按照服務(部分)來擴展,以更小的爆炸半徑單獨失敗,等等。這並不意味着每個應用都是(或者應該是)從一開始就被設計成微服務,但它仍然創造了思維方式,推動了組織,並促進了標準化。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"寵物與牛"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":":以前的服務器都是有名字的,並且都是單獨配置的。我曾經在裸機上工作過,在將它們放進機架之前,我親手貼上一張帶有名字的貼紙,我很清楚我可以創造的“寵物”。由於能夠訪問提供虛擬服務器或任何其他資源的 API,因此沒有辦法,也沒有必要跟上。現在,基礎設施用戶可以購買完全脫離物理的資源,根據需要自動擴展。結果,資源的可得性就不那麼重要了(它們只是可得的);我們考慮的是堆棧(資源),而非單個機器。資源就是數字。牛,不是寵物。"},{"type":"link","attrs":{"href":"http:\/\/cloudscaling.com\/blog\/cloud-computing\/the-history-of-pets-vs-cattle\/","title":null,"type":null},"content":[{"type":"text","text":"請參閱 Randy Bias 寫的內容,他將這一類比總結得很完美"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"基礎設施即代碼"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":":應用很複雜。操作系統也很複雜。如果兩者都是相關的,那就會變得更復雜。過去,大多數人,包括我在內,都是手動配置系統的。這樣就得到了系統的深刻理解,並且常常是獨特的理解。這裏所謂的獨特,如在:低"},{"type":"link","attrs":{"href":"https:\/\/en.wikipedia.org\/wiki\/Bus_factor","title":null,"type":null},"content":[{"type":"text","text":"巴士因子"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"(bus factor);又如在:除了一個人外,沒有人知道這個系統的情況。這個問題的解決方案是"},{"type":"link","attrs":{"href":"https:\/\/en.wikipedia.org\/wiki\/Configuration_management","title":null,"type":null},"content":[{"type":"text","text":"配置管理"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":",它允許維護人員以可複製、可測試、版本控制和標準化的文檔方式來描述整個設置。通過這個系統,配置可以很容易地重建(相對而言),人爲錯誤因素大大減少,任何設置都可以在較短時間內被他人理解(相對而言)。基礎設施即代碼(Infrastructure as Code,IaC)在基礎設施資源方面也是如此。不再需要手動提供 \/ 配置 \/ 訂購特定服務或應用所需的資源,而是使用標準化、文檔化、簽入版本控制、代碼可查看、可測試和可複製的代碼來描述。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"**即服務:"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"隨着基礎設施資源自動化日益普及,在上述基礎設施上運行的東西也可以輕鬆地獲得超級能力:可擴展性。也就是說,你只需爲所需資源付費。或者從商業角度來看,你只需爲你實際賣出的東西付費(粗略地說)。牢記這一點,我們就不難理解爲什麼如今幾乎所有的"},{"type":"link","attrs":{"href":"https:\/\/free-for.dev\/","title":null,"type":null},"content":[{"type":"text","text":"功能都可以作爲服務來購買"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"。我們可以把它想象成一種由基礎設施即服務(Infrastructure as a Service,IaaS)提供基礎的供應鏈。這樣,平臺即服務(Platform as a Service,PaaS)就可以構建自己的服務,這些服務包括計算運行時、數據庫、CDN 等等。通過這種方式,軟件即服務(Software as a Service,SaaS)的構建者可以將注意力集中在他們自己的領域:軟件構建,而不是深入到基礎設施層。而且人們還可以根據需要增加或減少需求。請注意,在撰寫本文時,維基百科上列出的"},{"type":"link","attrs":{"href":"https:\/\/en.wikipedia.org\/wiki\/As_a_service","title":null,"type":null},"content":[{"type":"text","text":"“即服務”類型有 75 種"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":",因此我略去了一些。但重點是,市場已經改變。諸如硬件、操作系統、服務操作之類的問題現在可以外包,按需購買。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"所有這些範式深深地糾纏在一起。你可以認爲“**即服務”是“微服務”的結果,反之亦然。另外,如果沒有“基礎設施即代碼”,寵物與牛是幾乎不可能的,而後者是前者所需要的。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"什麼是平臺工程?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"在討論平臺工程帶來的價值之前,我需要先說明我所說的是什麼意思(或者不是什麼意思)。也要記得,我的觀點是,角色就像一頂帽子:你可以根據需要戴帽子。有些帽子是你經常戴的,有些帽子是你比別人更喜歡的,而有些帽子你會藏起來,希望以後不要把它拿出來。角色沒有明確的界限,也不與職位掛鉤。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"平臺化"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"我認爲可以肯定地說,平臺工程師參與平臺的建設。由於平臺這一術語"},{"type":"link","attrs":{"href":"https:\/\/en.wikipedia.org\/wiki\/Computing_platform","title":null,"type":null},"content":[{"type":"text","text":"相當模糊"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":",所以我將試着在本文的範圍內解釋我的意思。讓我們從以下幾個方面開始:平臺是一個定義良好的接口,它簡化了對資源的處理和訪問。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"當然,在平臺工程領域中,這些資源都是某種基礎設施資源。從軟件開發人員的角度來說,"},{"type":"link","attrs":{"href":"https:\/\/refactoring.guru\/design-patterns\/facade","title":null,"type":null},"content":[{"type":"text","text":"門面設計模式"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"是我所能想到的最接近平臺關鍵屬性的。在我看來,平臺是由一個或多個“服務門面(facade)”機器接口規範和文檔組成的。這一切都是必要的,因爲平臺的目的就是自動化通用用例。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"對於用戶來說,平臺基本上是透明的(比如,你不知道里面發生了什麼),但我不確定這是否一個要求——儘管在大多數情況下這肯定是個好主意。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"根據這一定義,GitHub 就是一個平臺。AWS 也是一個平臺,更確切地說,它是一個平臺中的平臺。但任何單獨的、內部創建的解決方案都是一個平臺,它爲管理你的用例使用所需的基礎設施資源提供了簡化的接口。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"平臺化就是要確定常見的用例(或模式),爲描述這些用例的接口進行建模,提供實現這些用例的自動化解決方案,並將其文檔化,這樣過程就可以以最小的人工交互進行使用。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"平臺工程就是與平臺化相關的學科。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"與其他角色相比"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"儘管平臺工程是一個新的角色,但它並非憑空而來,而是對現有的其他角色和職責進行了專門劃分——與所有角色一樣。在我看來,以下幾點對平臺工程有重大影響:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"我認爲 "},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"DevOps 工程師"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"最接近平臺工程的角色,他們專注於爲特定應用(基於雲基礎設施)提供解決方案。或者說我這樣認爲:畢竟 "},{"type":"link","attrs":{"href":"https:\/\/devops.com\/devops-lifestyle-not-title\/","title":null,"type":null},"content":[{"type":"text","text":"DevOps 是一種生活方式"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"。這是一個非常接近於平臺工程的東西。在我看來,主要的區別應該是視角和所得到的的規模。DevOps 工程師提倡“他們”的應用,而平臺工程則關注大量或全部應用。DevOps 工程師處理特殊用例(構建一組特定應用運行的基礎設施),而平臺工程處理普通用例(構建所有 \/ 大多數應用運行的平臺)。DevOps 工程師對細節更感興趣,而平臺工程則更關注共性。根據我的經驗,這兩者通常都有需要,邊界非常模糊,而且經常是同一個人“戴着兩頂帽子”。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"平臺工程師角色的起源可能涉及到"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"基礎設施工程師"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"的角色,其重點是構建、部署和維護基礎設施。這個角色接近於系統管理員、網絡工程師以及可能還有 DevOps。這超出了雲的範疇,因爲它還涉及到數據中心。本文只涉及雲相關的範圍。在這個術語中,我認爲是“"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"雲(基礎設施)工程師"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"”,所以我就是這個意思。自然的,平臺工程師從這裏開始,使用(雲) 基礎設施,並對基礎設施進行全面的思考。最大的不同在於,基礎設施工程師非常注重可操作性和可靠性,而平臺工程則是注重可訪問性。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"另外,"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"後端工程師"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"也發揮了作用,他們專注於應用的"},{"type":"link","attrs":{"href":"https:\/\/en.wikipedia.org\/wiki\/Front_end_and_back_end","title":null,"type":null},"content":[{"type":"text","text":"數據訪問層"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"。它的範圍很廣,有許多子專業,而且肯定接近 DevOps。其中一個核心問題是 API 的設計和實現,包括處理數據源、隊列等等。平臺工程也做這些,不過目的不同。後端工程師是由平臺工程創建的平臺的“客戶”(公司內部),並在平臺上構建自己的應用。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"我曾說過,邊界很難畫出來,可能會有更多的角色(比如網站可靠性工程),我想和他們比較一下,但是有時候我不得不停下來,希望這個描繪的更清晰一些。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"價值主張"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"最後,我要談一下我的論點:平臺工程的價值。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"鑑於技術領域的變化,以及由此產生的新範式,我們可以清楚地看到:應用生態圈的複雜性正在增加。但這並非因爲使用基礎設施或應用開發方面的複雜性增加所致。事實上,基礎設施的事情已經變得非常簡單了,有了基礎設施即代碼等,從我的角度來看,應用開發也在易用性方面取得了長足的進步。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"那是什麼呢?嗯,這是巨大成功的錯誤所在:我所強調的變化(以及其他變化)帶來了更多的可能性和機會。現在人人都能很容易獲得可擴展性嗎?好吧,這也意味着現在每個人都在關注這個問題。正因爲如此,平臺工程才起到關鍵作用:它通過降低用戶和應用開發者的複雜性,幫助使這些機會更容易獲得。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"具體而言:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"標準 PaaS 推銷方式"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"PaaS(Platform as a Service,平臺即服務)的優勢主要在於它可以進行更高級別的編程,而複雜性則大大降低。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"——維基百科:"},{"type":"link","attrs":{"href":"https:\/\/en.wikipedia.org\/wiki\/Platform_as_a_service#Advantages_and_disadvantages","title":null,"type":null},"content":[{"type":"text","text":"平臺即服務"}]},{"type":"text","text":"詞條"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"首先:我認爲這應該是一般的作爲服務的推銷,而不是專門針對 PaaS 的。比如。“**即服務”的優勢主要在於,它可以在更高的級別上進行使用,而複雜性則大大降低:你知道,發送電子郵件、流媒體電影。如果有其他選擇,所有更好的接口都會大幅降低複雜性。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"這就是平臺工程可以完成的工作:爲基礎設施資源創建更高級別的接口,這些接口的設計是爲了使它們適合用例,然後實現它們。只不過不是爲任何終端用戶,就像上面一般的服務推銷所暗示的那樣,而是爲應用開發者服務。標準化是免費的回報。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"當然,平臺工程師並非專爲 PaaS 提供商工作的(周圍沒有那麼多),他們在各地搭建平臺。大多數 PaaS 提供商面向的是大衆市場。有很多公司因爲規模、安全、法律、遺留系統或者其他的原因不適合這個產品。他們仍需要使用由開發人員創建的基礎設施來運行服務。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"DevOps 工程和平臺工程在專注於應用層的開發人員和提供用於運行應用的資源的基礎設施提供商之間架起了一座橋樑。DevOps 工程提供了一個解決方案,可以在雲基礎設施中運行一組小型、專業化的服務。平臺工程以平臺的形式提供解決方案,在雲基礎設施中運行更通用的服務。二者之間的邊界非常模糊,主要是規模和增長的問題。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"無論哪種方式:這使開發人員能夠集中精力開發應用,他們在這方面非常出色。依我看,你當然應該儘早開始平臺化,除非你不期待基礎設施的發展或變化。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"價值"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":":持久、高節奏的開發進度。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"抵消技術債務"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"隨着事情的改變或發展,"},{"type":"link","attrs":{"href":"https:\/\/en.wikipedia.org\/wiki\/Technical_debt","title":null,"type":null},"content":[{"type":"text","text":"技術債務"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"也隨之增加。一直如此,除非你停滯不前。問題不在於如何完全阻止它,而在於如何減緩它,讓它變得可控,在你被迫停止之前不會增加。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"許多因素導致了技術債務的增加。當然,也有業務方面的原因,因爲它們佔據了優先地位,使人們幾乎沒有或根本沒有時間去調整基礎設施或軟件設計來抵消累積的技術債務。此外,還存在結構或架構方面的原因。類似微服務這樣的模式也是爲了從架構方面解決這個問題而產生的。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"造成技術債務快速增長的一個主要因素是,同一問題有太多的解決方案。就像其他的應用一樣,它們也有自己獨特的部署管道、服務運行時、數據庫設置或者是所有你能想到的東西。一座正在發展中的解決方案和模式的“動物園”,在此刻聽起來也許是不錯的主意,因爲它們解決了眼前的問題,但在未來卻會變成一片難以處理的混亂,非常脆弱,在這裏危險,不可觸碰,否則風險很大。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"平臺工程至少通過提供一個標準化的框架(服務的共同標準),在不同程度上抵消了這最後一個因素,以及其他因素。它還強制執行明確的邊界和接口,使你可以更容易地理解、發展和改變應用的前景,無論是現在還是將來。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"與此密切相關的是,久而久之,"},{"type":"link","attrs":{"href":"https:\/\/en.wikipedia.org\/wiki\/Legacy_system","title":null,"type":null},"content":[{"type":"text","text":"遺留問題"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"也在不斷積累。它還會轉化成要求在某個時間償還的技術債務。儘管平臺工程並不直接解決遺留問題,但它將這些問題限定於組成服務或應用的商定邊界之內。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"最後,平臺工程孕育了像前面提到的微服務這樣的現代範式,它本身可以抵消技術債務。平臺在這方面起到了支持和推動的作用。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"價值"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":":變革的敏捷性 \/ 不間斷的增長。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"爲變化做好準備"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"唯一不變的就是變化。"},{"type":"link","attrs":{"href":"https:\/\/www.ancient.eu\/Heraclitus_of_Ephesos\/","title":null,"type":null},"content":[{"type":"text","text":"早在 2500 年前"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":",人們就已經知道了這一點,甚至對於現代的應用基礎設施而言,它仍然適用。然而,當變化到來的時候,我們仍然會感到驚奇。我在這個生態圈工作了 20 年,從來沒有遇到過一個系統不會隨時間而改變的情況。變化有許多形式。你可以做一些小事情,比如增加應用價值的新功能,也可以做一些根本性的改變,比如從物理數據中心遷移到雲基礎設施,或者重新構建整個應用。不管怎麼說:事情會發生變化,你需要做好準備,或者在變化來臨時支付高額的賬單。這是必然的。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"你猜對了,這裏有一個共同的主題:平臺工程是爲了拯救。怎麼說呢?它爲部署和運行你的應用提供了一個標準化的環境。重點在於“標準化”一詞。可以這樣想,移動一百個應用,每一個都有各自的部署和運行服務的方式,這是非常困難的,甚至是可怕的。而移動一百個具有共同部署和運行服務方式的應用就容易得多。毫無疑問,一個平臺可以提供這些共享的共性。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"這也意味着:平臺的早期。也許不是在打造 MVP 的時候,即使是我也不會提倡這樣做,但是要確保時間足夠早,以使標準化工作不會太過痛苦,讓你對其視而不見。找出合適的時機並非易事,所以,要儘早進入平臺。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"價值"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":":靈活性(應用基礎設施中的靈活性轉化爲業務中的靈活性)。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"作者介紹:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"Ulrich Kautz,居住德國柏林,高級平臺工程師,供職於 Scout24 Group。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"原文鏈接:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"https:\/\/ulrichkautz.com\/posts\/2021-03-11_value-of-platforming-engineering\/"}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章