避免不完全的雲原生(五):目標和收益

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"italic"},{"type":"strong"}],"text":"本文最初發佈於The Startup博客,經原作者授權由InfoQ中文站翻譯並分享。"}]},{"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","marks":[{"type":"italic"}],"text":"注意:這是該系列文章的第5部分。你可以點擊這裏閱讀"},{"type":"link","attrs":{"href":"https:\/\/www.infoq.cn\/article\/Yc8fCIyvIwmBahZ1TPwy","title":"xxx","type":null},"content":[{"type":"text","text":"上一部分"}]},{"type":"text","marks":[{"type":"italic"}],"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":"在以前的文章中,我們已經明確了雲原生的“什麼”和“如何”。可是,還有一個更大、更根本的問題還沒有解決。爲什麼大家要關心這個問題呢?有了前兩篇文章的背景知識,我們現在可以探索“爲什麼”並看看雲原生的好處,先從它對業務的意義開始,然後再討論它對IT的意義。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/a4\/70\/a4160017bd6df5e3976ce048edf9fb70.png","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"雲原生方法的好處"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","marks":[{"type":"strong"}],"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":"讓我們面對現實吧,IT潮流一直在發展變化。許多業務團隊試圖超越這些潮流,讓IT人員自己走自己的路——畢竟,應用服務器或語言運行時的選擇通常對業務的運作方式沒有太大影響。雲原生有什麼特別之處?爲什麼業務部門應該支持向雲原生遷移?爲了理解這個問題,我們需要從一開始就考慮幾乎所有企業都必須關注的三件事:增長、降風險和降成本。我們認爲,使用雲原生方法構建應用程序有可能爲所有這些方面帶來好處。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","marks":[{"type":"strong"}],"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":"市場增長的關鍵在於發展新客戶並保持他們的興趣。爲了贏得新客戶,而又不損害邊緣客戶的利益,你必須能夠比競爭對手更快地把好的、新的想法推向市場。諸如採用精益方法和通過管道自動化簡化生產環境部署等因素,使團隊更快地將業務想法帶到生產環境。這縮短了上市時間,幫助IT部門按照業務的速度推出新特性。不過,新特性本身並不能保證市場增長。你必須能夠剔除那些對客戶留存和客戶獲取產生負面影響的新特性,同時保留那些對這兩個指標產生積極影響的新特性。真正關鍵的是確保創新就緒;讓企業可以大膽而迅速地將顛覆性的想法帶入生活,從而獲得新的細分市場,在競爭中保持領先,同時制定適當的衡量標準,讓你能夠根據經驗來判斷哪些想法好,哪些想法不好。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","marks":[{"type":"strong"}],"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":"然而,雲原生方法本身並不能神奇地降低風險。像特性標識和金絲雀測試這樣的技術可以讓業務人員做一些他們之前可能會因爲風險太大而拒絕做的事情,但爲了發揮這些技術的價值,需要IT與業務人員密切合作。我們必須與業務合作,更新他們度量和控制風險的方式,使其與引入的方法和流程兼容。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","marks":[{"type":"strong"}],"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","marks":[{"type":"strong"}],"text":"從IT角度看雲原生方法的目標和收益"}]},{"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":"到目前爲止,關於雲原生對業務的影響,我們的討論還停留在比較高的層次上。爲了讓業務人員理解雲原生的好處,我們必須將我們討論過的IT收益翻譯成相應的業務收益。接下來,我們將展示上面描述的每項關鍵業務收益與我們之前介紹的雲原生要素的對應關係。"}]},{"type":"heading","attrs":{"align":null,"level":3},"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":"每個業務都想從IT那裏獲得更多的特性——他們還希望IT能更快,而且要更準確地反映他們的需求。雲原生如何幫助實現這一點呢?"}]},{"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","marks":[{"type":"italic"},{"type":"strong"}],"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","marks":[{"type":"italic"},{"type":"strong"}],"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:\/\/kylegenebrown.medium.com\/the-role-of-an-agile-architect-ead1e114c8f2","title":"","type":null},"content":[{"type":"text","text":"應該鼓勵"}]},{"type":"text","text":"跨團隊協作和公共實踐,但是團隊可以自由地使用任何語言運行時和框架來滿足他們的需求。這種創新的自由讓團隊可以“跳出固有的思維模式”,更快地向業務交付解決方案,而且交付的解決方案在業務方面更具創新性。這種自治的一個關鍵是,業務必須是自治團隊的一部分。產品負責人和發起用戶("},{"type":"text","marks":[{"type":"italic"}],"text":"Sponsor User"},{"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","marks":[{"type":"italic"},{"type":"strong"}],"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":"早些時候,我們討論瞭如何創新,以及如何通過具體的經驗性指標來確定創新是否有價值,這對於確保IT團隊和業務保持同步至關重要。在這方面,其中一個關鍵是業務和IT通過假設驅動開發共同工作的能力。簡單地說,假設驅動開發是將企業經營理念作爲科學假說來表述,可以被證明或證僞。雲原生開發只有在業務參與整個開發週期時纔會給業務帶來好處。"}]},{"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":"一種主要的參與形式是藉助A\/B測試——如果你制定了適當的指標,比如清空購物車的百分比,或者在瀏覽後點擊“購買”的客戶百分比,那麼你就可以根據經驗來比較不同的想法。你可以引導一些客戶使用體現新理念的新方法,而另一些客戶使用現有方法,然後隨着時間的推移比較兩種方法之間的指標差異。這裏的關鍵是,需要業務根據可度量的差異來思考問題。就像一個科學假說如果不能被證僞就不能成爲假說一樣,業務假設也是如此。業務必須幫助確定一個可量化的衡量標準,通過它可以比較兩種不同的想法或方法。也就是說,他們必須參與整個過程,不僅幫助確定哪些想法需要接受測試,而且幫助確定如何測試,以及成功的定義是什麼。雲原生非常適合賦能這種響應行爲。它是敏捷方法的重要組成部分,而且,使用細粒度、良好解耦的組件添加新功能更安全,不會影響現有的功能。此外,服務網格之類的通用機制可以用來選擇性地在被測想法之間路由請求,還可以簡化假設評估的數據收集。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","marks":[{"type":"strong"}],"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","marks":[{"type":"italic"},{"type":"strong"}],"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","marks":[{"type":"italic"},{"type":"strong"}],"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","marks":[{"type":"italic"},{"type":"strong"}],"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":"敏捷方法規定,通往生產環境的路徑必須儘可能地自動化,這包括構建、測試和部署等方面。這些管道通常被稱爲持續集成\/持續交付(CI\/CD),由於對源代碼的更改而觸發。然而,由於聲明式部署也是代碼,底層運行時版本的改變也會觸發新的構建\/測試周期——這就是“GitOps”的一個例子。假設我們對自動化測試有足夠的信心,我們就能夠保持底層運行時版本比如今大多數應用程序的都新,這不僅能確保我們可以利用最新的特性,而且可以保證我們不會暴露在已知安全漏洞造成的風險中。同樣,這對企業來說應該也是有價值的,因爲它降低了客戶數據或資產丟失的信用風險。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","marks":[{"type":"strong"}],"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","marks":[{"type":"italic"},{"type":"strong"}],"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":"在那些顯而易見的特性(輕量級可伸縮組件)之外,容器還有一個更難能可貴的地方。長期來看,它們最大的好處可能是運營一致性。使用完全相同的技能來構建、部署,提供高可用性、伸縮性、監控、診斷和安全,而不需要考慮一組已經編排好的容器中的運行時,這是一個巨大的飛躍。至少,這意味着技能集可以跨以前孤立的IT領域通用。在理想情況下,操作自動化會減少運行特定基礎設施所需的人員數量,並提高其可靠性。然而,由於這些技術都是新的,個人和公司必須經歷一個陡峭的學習曲線,才能使這些好處成爲現實。"}]},{"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","marks":[{"type":"italic"},{"type":"strong"}],"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","marks":[{"type":"italic"},{"type":"strong"}],"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}},{"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},"content":[{"type":"link","attrs":{"href":"https:\/\/medium.com\/swlh\/the-why-of-cloud-native-goals-and-benefits-5c559a4e73a5","title":"","type":null},"content":[{"type":"text","text":"The “Why” of Cloud-Native: Goals and Benefits"}]}]},{"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},"content":[{"type":"link","attrs":{"href":"https:\/\/www.infoq.cn\/article\/Yc8fCIyvIwmBahZ1TPwy","title":"xxx","type":null},"content":[{"type":"text","text":"避免不完全的雲原生(四):技術和基礎設施角度"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/www.infoq.cn\/article\/LmUVC2HHNPD5lHSzETUa","title":"xxx","type":null},"content":[{"type":"text","text":"避免不完全的雲原生(三):架構和設計角度"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/www.infoq.cn\/article\/Qj0SqAEDZZyVOPyhyTXY","title":"","type":null},"content":[{"type":"text","text":"避免不完全的雲原生(二):人員和流程要素"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/www.infoq.cn\/article\/PfHdeTgybyC47SpAB2fo","title":"","type":null},"content":[{"type":"text","text":"避免不完全的雲原生(一):雲原生到底意味着什麼?"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/www.infoq.cn\/article\/LIRjAI0mhsClCooPtzLw","title":"","type":null},"content":[{"type":"text","text":"避免不完全的雲原生"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章