構建雲開發工具正當時

{"type":"doc","content":[{"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","text":"我們生活在開發工具的黃金時代,隨着雲原生時代的來臨,以及組織代碼規模的擴張,不斷出現的新開發模式又引入了新的複雜性,從而使得新的開發工具紛紛湧現。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"InfoQ 在今年三月份發佈了一篇譯文《"},{"type":"link","attrs":{"href":"https:\/\/www.infoq.cn\/article\/toataglje5qf5ovd2yct","title":null,"type":null},"content":[{"type":"text","text":"構建開發工具正當時"}]},{"type":"text","text":"》,這篇文章深刻地剖析了軟件開發的生命週期,並舉例說明了開發工具在每一個生命週期中所發揮的價值。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"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}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","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","text":"自從三年前,我加入了一家雲計算公司,從事工具鏈產品研發,成爲了一名光榮的“工具人”。從那時開始,我始終關注業界動態,關注着國內外相關領域蓬勃發展。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在今年的三月份,我讀到了一篇文章《"},{"type":"link","attrs":{"href":"https:\/\/www.infoq.cn\/article\/toataglje5qf5ovd2yct","title":null,"type":null},"content":[{"type":"text","text":"構建開發工具正當時"}]},{"type":"text","text":"》,由 SourceGraph 的 Co-Founder "},{"type":"link","attrs":{"href":"https:\/\/beyang.org\/","title":null,"type":null},"content":[{"type":"text","text":"Beyang Liu"}]},{"type":"text","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}},{"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}},{"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}},{"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}},{"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}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"近年來,以 CNCF 爲代表的雲原生社區與組織,構建了一系列的開源工具,來幫助開發者完成軟件構建的生命週期,涵蓋了《構建》一文中提及的“編寫、測試、評審、部署、監控”這五個階段。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Hashicorp "},{"type":"link","attrs":{"href":"https:\/\/techcrunch.com\/2020\/03\/16\/hashicorp-soars-above-5b-valuation-in-new-175m-venture-round\/","title":null,"type":null},"content":[{"type":"text","text":"E 輪 50 億美元"}]},{"type":"text","text":"的估值,則代表了獨立工具廠商的興起,以及它們在商業上的成功。隨着多雲時代的來臨,採用多家雲服務提供商已經成爲了屢見不鮮的事實。中立的開源軟件供應商,一定程度上促進了工具類產品價值的自由流動,從而也承載了巨大的商業價值。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"雲服務提供商,爲了向開發者提供更好的服務,則紛紛投身於各種開源軟件的貢獻中,例如在 CNCF 的項目中,能看到許多雲廠商的身影。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","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","text":"每當我們開發一款新的工具時,都會面臨這樣的靈魂拷問:“你的工具能帶來什麼樣的價值”?"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"價值模型"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"工具類產品的"},{"type":"text","marks":[{"type":"strong"}],"text":"價值模型"},{"type":"text","text":",可以從兩個方面來看待:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"numberedlist","attrs":{"start":"","normalizeStart":1},"content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":1,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"對採用者的價值"},{"type":"text","text":":對於工具的採用者來說,開發者工具作爲軟件開發的二階加速器,改進了現有的"},{"type":"text","marks":[{"type":"strong"}],"text":"開發模式"},{"type":"text","text":"和"},{"type":"text","marks":[{"type":"strong"}],"text":"生產關係"},{"type":"text","text":",產生了"},{"type":"text","marks":[{"type":"strong"}],"text":"效能"},{"type":"text","text":",支撐了企業的擴張;擴張的企業用"},{"type":"text","marks":[{"type":"strong"}],"text":"規模效應"},{"type":"text","text":"產生"},{"type":"text","marks":[{"type":"strong"}],"text":"邊際效益"},{"type":"text","text":",反哺了開發工具的投資,從而產生"},{"type":"text","marks":[{"type":"strong"}],"text":"飛輪效應"},{"type":"text","text":"。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":2,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"對服務提供商的價值"},{"type":"text","text":":對於雲服務提供商來說,一方面雲開發工具可以降低用戶的採用成本,從而間接影響用戶的決策,形成廠商間的競爭優勢。另一方面,雲服務商通過爲流行的開源工具,編寫大量的廠商集成代碼,可以獲取天然的用戶池,並且用戶池規模會隨着時間的推移而形成自然的增長。"}]}]}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"增長邏輯"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"雲開發工具類產品的"},{"type":"text","marks":[{"type":"strong"}],"text":"增長邏輯"},{"type":"text","text":",與常規的商業產品有很大的不同,它的理念從根本上更接近於開源社區的“禮物文化”。這個概念來自於知名開源技術作家 Eric Raymond 的《大教堂與集市》一書,是指開源社區的貢獻和贈予是一種非零和的博弈。開發者工具的開放並不會給雲廠商造成經濟上的損失,反而可以獲得聲譽、品牌影響力上的回饋。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"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}},{"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}},{"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}},{"type":"numberedlist","attrs":{"start":"","normalizeStart":1},"content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":1,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"自然增長"},{"type":"text","text":":當流行的工具生態擴張時,廠商的"},{"type":"text","marks":[{"type":"strong"}],"text":"潛在用戶池"},{"type":"text","text":"也將隨之產生自然的增長,滿足了服務提供商本身用戶規模擴張的訴求。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":2,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"內生增長"},{"type":"text","text":":由於工具能夠顯著降低用戶的採用成本,廠商內部進入工具生態的產品,具有天然的增長優勢。從而產生爲更多"},{"type":"text","marks":[{"type":"strong"}],"text":"服務品類"},{"type":"text","text":"提供工具支持的內生訴求。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":3,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"外部增長"},{"type":"text","text":":廠商是否提供用戶所熟知的工具,對於許多用戶來說是一個不容忽視的成本指標,能顯著影響用戶的採用決策。從而使用戶向服務提供商提出了擴張"},{"type":"text","marks":[{"type":"strong"}],"text":"工具品類"},{"type":"text","text":"的訴求。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"因此,"},{"type":"text","marks":[{"type":"strong"}],"text":"潛在用戶池"},{"type":"text","text":"、"},{"type":"text","marks":[{"type":"strong"}],"text":"服務品類"},{"type":"text","text":"和"},{"type":"text","marks":[{"type":"strong"}],"text":"工具品類"},{"type":"text","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","text":"面向雲的開發工具,已經具有很長的歷史,但整體看來,雲開發工具仍是一個新興的領域,依然面臨着許多機遇與挑戰。本節將以雲資源管理爲例,帶領大家直觀感受一下,開發者工具是如何從專有領域走向通用領域,最終與軟件開發融爲一體。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"雲資源管理工具的設計目標是解決兩個問題:一個是對"},{"type":"text","marks":[{"type":"strong"}],"text":"資源的生命週期的管理"},{"type":"text","text":",例如資源的增刪改查、對依賴關係的管理;另一個是對"},{"type":"text","marks":[{"type":"strong"}],"text":"多雲的支持"},{"type":"text","text":"。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"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}},{"type":"numberedlist","attrs":{"start":"","normalizeStart":1},"content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":1,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"第一階段:使用通用編程語言和工具直接調用 API"},{"type":"text","text":"(SDK、CLI)。在這一階段,用戶採用 SDK 來直接調用 API,從而管理資源的生命週期,這常常適用於最小化的概念驗證與原型開發。這種方式的潛在問題是,當面臨多個雲供應商的時候,每一個供應商的 API 和 SDK 千差萬別,從而存在額外的啓動成本,並且成爲基礎設施規模發展速度的限制性因素。"},{"type":"text","marks":[{"type":"strong"}],"text":"面向特定廠商"},{"type":"text","text":"的基礎設施研發,是這一階段的特點。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":2,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"第二階段:基礎設施即代碼"},{"type":"text","text":"(IaC,Infrastructure as Code)。這一階段的方案,通過將多個雲供應商集中抽象爲一種拓撲描述的文本格式,幾乎可以管理任何資源而無需學習新的工具,降低了雲服務商的採用成本。並基於此實現了基礎設施即代碼(IaC)的理念,使得基礎架構能夠和項目源碼一同管理和交付。但這種方式帶來了一個新的問題,即基礎架構描述文件的可複用性和可測試性受到了工具本身描述能力的限制,大家會發現,描述基礎設施所用的 DSL,越來越像一門通用的編程語言,支持模塊化、控制流等語句。那麼我們爲什麼不直接用通用的編程語言來進行資源管理呢?"},{"type":"text","marks":[{"type":"strong"}],"text":"面向特定語言\/架構風格"},{"type":"text","text":"的基礎設施研發,是這一階段的特點。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":3,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"第三階段:基礎設施即軟件"},{"type":"text","text":"(IaS,Infrastructure as Software)。這一階段的工具採用通用編程語言(例如 Python、Go 等)來進行資源管理。與第二階段的方案類似,它們同樣屏蔽了多雲管理方式的差異,與此同時,由於該階段的方案採用通用編程語言,從而消除了學習 DSL 的成本,並藉助主流編程語言的成熟工具鏈,可以很方便地進行抽象複用、靜態分析、測試等等。基礎設施"},{"type":"text","marks":[{"type":"strong"}],"text":"與特定的廠商和架構風格解耦"},{"type":"text","text":"和應用軟件融爲一體,是這一階段的特點。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"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}},{"type":"numberedlist","attrs":{"start":"","normalizeStart":1},"content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":1,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"聲明式(Declaritive)API"},{"type":"text","text":"。聲明式 API 區別於命令式(Imperative)API,命令式 API 通過編排對系統狀態的操作步驟,來完成最終系統狀態的變換。聲明式 API 則致力於通過描述系統的期望狀態,通過自動化的調和來使系統達到最終狀態。一個典型的例子如 Kubernetes 的 Operator,用戶創建和更改所需的資源描述文件,Operator 通過一定的調和邏輯盡力而爲地使基礎設施推進至期望的狀態。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":2,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"不可變基礎設施(Immutable Infrastructure)"},{"type":"text","text":"。不可變基礎設施是指當基礎設置被創建後就不能進行任何修改操作。比較典型的例子是容器應用的最佳實踐,每當應用需要更新時,創建新的實例以替換。不可變基礎設施使得變更的狀態是清晰和明確的,可以快速升級、回滾和重建一個特定的環境。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":3,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"基礎設施即代碼(IaC, Infrastructure as Code)"},{"type":"text","text":"。IaC 是一個相對較舊的概念,但隨着近年來雲原生和一些流行的 IaC 工具的興起,IaC 成爲了雲時代的重要技術。IaC 不僅僅指“將基礎設施以代碼的形態表達”,更重要的是,將代碼世界中的一些軟件工程的最佳實踐和原則,應用到基礎設施的管理中。例如模塊化、測試技術等。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":4,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"基礎設施即軟件(IaS, Infrastructure as Software)"},{"type":"text","text":"。IaS 是 IaC 的一個實例,IaS 是指通過通用編程語言來聲明資源,編寫基礎設施代碼。IaS 可以使基礎設施與應用本身能夠複用相同的工具鏈,打破 Dev 和 Ops 之間的隔閡,在抽象層次,可測試性方面取得根本性的飛躍。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":5,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"GitOps"},{"type":"text","text":"。GitOps 是一種採用 Git 來管理基礎設施(infrastructure)和配置(configuration)的編程實踐,通常認爲由 Weaveworks 提出,其核心在於使 Git 作爲基礎設施和應用的單一事實來源(trusted source),受版本管理。當 Git 中的內容變更時,基礎架構和應用也隨之自動變更和交付。聲明式 API、基礎設施即代碼是 GitOps 的基礎。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"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}},{"type":"numberedlist","attrs":{"start":"","normalizeStart":1},"content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":1,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/en.wikipedia.org\/wiki\/CFEngine","title":null,"type":null},"content":[{"type":"text","text":"CFEngine"}]},{"type":"text","text":"。CFEngine 是最古老的配置管理工具之一,於 1993 年發佈。CFEngine 最初是其作者 Mark Burgess 的一個研究項目,在發展的過程中實踐了非常多的學術理論,並引發了後續配置管理領域的相關研究。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":2,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/github.com\/puppetlabs\/puppet","title":null,"type":null},"content":[{"type":"text","text":"Puppet"}]},{"type":"text","text":"。Puppet 是一種開源的配置管理軟件,於 2005 年發佈。Puppet 基於一種聲明式的編程語言來描述系統配置。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":3,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/github.com\/chef\/chef","title":null,"type":null},"content":[{"type":"text","text":"Chef"}]},{"type":"text","text":"。Chef 是一種開源的配置管理軟件,於 2009 年發佈。通過使用 Chef 工具,可以集中式的管理服務器集羣。除此之外,Chef 還提供了一系列周邊工具,例如可以採用 Chef InSpec 編寫面向基礎設施的合規策略。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":4,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/github.com\/ansible\/ansible","title":null,"type":null},"content":[{"type":"text","text":"Ansible"}]},{"type":"text","text":"。Ansible 是一種開源的配置管理軟件,於 2012 年發佈。Ansible 可以通過編寫 YAML 格式的配置來編排自動化過程。Ansible 是最流行的配置管理工具之一,有着大量可複用的代碼和非常廣泛的服務提供商支持。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":5,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/github.com\/saltstack\/salt","title":null,"type":null},"content":[{"type":"text","text":"SaltStack"}]},{"type":"text","text":"。SaltStack 是一種開源的配置管理軟件,於 2011 年發佈。SaltStack 的特點是基於事件驅動的設計,以及由豐富的遠程執行模塊構成的中心化管理能力。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":6,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/github.com\/hashicorp\/terraform","title":null,"type":null},"content":[{"type":"text","text":"Terraform"}]},{"type":"text","text":"。Terraform 是 Hashicorp 出品的一款多雲資源編排工具,於 2014 年發佈。Terraform 採用一種名爲 HCL 的 DSL 來描述基礎設施。Terraform 是最流行的多雲資源管理工具之一,基於圖的結構使它能夠高效地處理資源之間的拓撲依賴關係,目前支持 200+ 軟件和服務。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":7,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/github.com\/pulumi\/pulumi","title":null,"type":null},"content":[{"type":"text","text":"Pulumi"}]},{"type":"text","text":"。Pulumi 也是一款流行的資源管理工具,於 2017 年發佈。Pulumi 採用多種通用編程語言來進行資源管理,並通過名爲 Crosswalk 的子項目,實現與 Kubernetes 的互操作,目前支持 5 種編程語言。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":8,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/github.com\/hashicorp\/terraform-cdk","title":null,"type":null},"content":[{"type":"text","text":"cdktf"}]},{"type":"text","text":"、"},{"type":"link","attrs":{"href":"https:\/\/github.com\/cdk8s-team\/cdk8s","title":null,"type":null},"content":[{"type":"text","text":"cdk8s"}]},{"type":"text","text":"。二者分別由 Hashicorp 和 AWS 推出,它們構建在 Terraform 與 Kubernetes 之上,實現了一個轉換邏輯,可以使用多種通用編程語言來生成二者所需的資源定義文件,從而使基礎設施可以採用通用編程語言來編排。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"其中,配置管理工具和 Terraform 是 IaC 概念的典型代表,Pulumi 和 CDK 則專注於實現 IaS,他們共同構成了 GitOps 的最佳實踐。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"回看這二十多年,從 IaC 到 IaS,象徵着 Dev 和 Ops 之間的牆在一定程度上被打破。從單一的廠商\/技術棧,到多供應商、多架構風格的轉變,象徵着開發者工具對於軟件價值自由流動所起到的推進作用。它們共同構成了工具類軟件對於生產模式和生產關係的變革,雲資源管理工具這一領域方向,正是開發者工具行業的一個縮影。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","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","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":"在雲原生時代的浪潮中,到處都可以見到開發工具的身影,多雲管理、API 構建、以至於軟件交付、工程效能、安全合規等領域,都將成爲這一技術方向的機遇和挑戰。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"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}},{"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}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"附錄:"}]},{"type":"numberedlist","attrs":{"start":"","normalizeStart":1},"content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":1,"align":null,"origin":null},"content":[{"type":"text","text":"《構建開發工具正當時》: "},{"type":"link","attrs":{"href":"https:\/\/www.infoq.cn\/article\/toataglje5qf5ovd2yct","title":null,"type":null},"content":[{"type":"text","text":"https:\/\/www.infoq.cn\/article\/toataglje5qf5ovd2yct"}],"marks":[{"type":"italic"}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":2,"align":null,"origin":null},"content":[{"type":"text","text":"Blog: Beyang Liu: "},{"type":"link","attrs":{"href":"https:\/\/beyang.org\/","title":null,"type":null},"content":[{"type":"text","text":"https:\/\/beyang.org\/"}],"marks":[{"type":"italic"}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":3,"align":null,"origin":null},"content":[{"type":"text","text":"News: Hashicorp E 輪 50 億美元: "},{"type":"link","attrs":{"href":"https:\/\/techcrunch.com\/2020\/03\/16\/hashicorp-soars-above-5b-valuation-in-new-175m-venture-round\/","title":null,"type":null},"content":[{"type":"text","text":"https:\/\/techcrunch.com\/2020\/03\/16\/hashicorp-soars-above-5b-valuation-in-new-175m-venture-round\/"}],"marks":[{"type":"italic"}]}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":4,"align":null,"origin":null},"content":[{"type":"text","text":"《大教堂與集市》: "},{"type":"link","attrs":{"href":"https:\/\/book.douban.com\/subject\/25881855\/","title":null,"type":null},"content":[{"type":"text","text":"https:\/\/book.douban.com\/subject\/25881855\/"}],"marks":[{"type":"italic"}]}]}]}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章