雲原生要素:人員和流程

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"italic"},{"type":"strong"}],"text":"本文最初發佈於TheStartup博客,經原作者授權由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":"注意:這是該系列文章的第2部分。你可以點擊這裏閱讀"},{"type":"link","attrs":{"href":"https:\/\/www.infoq.cn\/article\/PfHdeTgybyC47SpAB2fo","title":"xxx","type":null},"content":[{"type":"text","text":"第1部分"}]},{"type":"text","marks":[{"type":"italic"}],"text":",或者跳轉到第"},{"type":"link","attrs":{"href":"https:\/\/medium.com\/swlh\/the-how-of-cloud-native-architecture-and-design-perspective-7bb629255bb3","title":"","type":null},"content":[{"type":"text","marks":[{"type":"italic"}],"text":"3"}]},{"type":"text","marks":[{"type":"italic"}],"text":"、"},{"type":"link","attrs":{"href":"https:\/\/medium.com\/swlh\/the-how-of-cloud-native-technology-and-infrastructure-perspective-765be1606840","title":"","type":null},"content":[{"type":"text","marks":[{"type":"italic"}],"text":"4"}]},{"type":"text","marks":[{"type":"italic"}],"text":"、"},{"type":"link","attrs":{"href":"https:\/\/medium.com\/swlh\/the-why-of-cloud-native-goals-and-benefits-5c559a4e73a5","title":"","type":null},"content":[{"type":"text","marks":[{"type":"italic"}],"text":"5"}]},{"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":"在前一篇文章中,我們討論了雲原生的實際含義,並且指出,要從雲原生方法中獲益,就需要從多個角度來審視它。這不僅與你使用的技術和基礎設施所在的位置有關,還與你如何構建解決方案有關。但最重要的也許是,它和你如何組織員工和遵循什麼流程有關。在這篇文章以及接下來的兩篇文章中,我們將介紹成功邁出雲原生第一步的最重要的部分,並從不同的角度進行分析。本系列文章的主題摘要如下圖所示:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/4e\/2e\/4ee3e44660a6d7924fde84697857d42e.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":"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":"heading","attrs":{"align":null,"level":1},"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之間快速協調,以一種“低接觸”的方式將更改提交到生產環境,並對所交付的內容負責,而且信心十足。任何新技術或現代架構方法都無法憑一己之力實現這一點。團隊需要投入精力轉向敏捷方法,採用DevOps原則和軟件生命週期自動化,引入新的角色(例如SRE),而且,組織必須賦予團隊一定程度的自治權。下圖展示了雲原生方法中人員要素的一些最重要的方面:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/41\/3d\/41bc1e5e395f412dd38dac55ac509d3d.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":"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":"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":"雲原生基礎設施和基於微服務的設計使得開發可快速更改和部署的細粒度組件成爲可能。然而,如果我們沒有能夠用來實現交付並兌現承諾的開發方法,這將毫無意義。敏捷方法使被授權的(去中心化的)團隊能夠縮短變更週期,更緊密地結合業務需求,其特點如下:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"短而有規律的迭代週期"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"固有的業務協同"}]}]},{"type":"listitem","attrs":{"listStyle":null},"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":"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":"除非你縮短將新代碼轉移到生產環境所花費的時間,否則你無法達到你想要的敏捷程度。如果生命週期流程很慢,那麼你的方法多敏捷,或者你設計的組件多輕量化,就都沒有什麼關係了。此外,如果反饋週期被打破,你就不能實時地對業務需求的變化做出響應。生命週期自動化主要圍繞三個關鍵管道,它們是:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"持續集成——構建\/測試管道自動化"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"持續交付\/部署——部署、驗證"}]}]},{"type":"listitem","attrs":{"listStyle":null},"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":"image","attrs":{"src":"https:\/\/static001.infoq.cn\/resource\/image\/e0\/74\/e035e51404ee14d9d2d7b92a4606ab74.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":"管道自動化(CI\/CD)是DevOps和敏捷方法的基礎"}]},{"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)意味着經常(“持續”地)向源代碼存儲庫提交更改,並且可以即刻進行自動構建、質量檢查、相關代碼集成及測試。CI可以即時爲開發人員提供反饋,讓他們知道更改與當前代碼庫是否兼容。我們發現,基於鏡像的部署使得構建管道更簡單、更一致。此外,更加模塊化的、細粒度的、完全解耦的無狀態組件的創建簡化了自動化測試過程。"}]},{"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":"CD既可以表示持續交付,也可以表示持續部署(兩個都對,儘管Jez Humble的"},{"type":"link","attrs":{"href":"https:\/\/www.amazon.com\/Continuous-Delivery-Deployment-Automation-Addison-Wesley\/dp\/0321601912","title":"","type":null},"content":[{"type":"text","text":"著作"}]},{"type":"text","text":"讓持續交付這個術語流行了起來,它實際上涵蓋了這兩個過程)。持續交付從CI獲取輸出,並執行將其部署到目標環境所需的所有準備工作,但是不部署,把最後的步驟留在審批之後,以受控的方式手動執行。當環境允許自動向環境中部署時,這就是持續部署,對敏捷的優勢和潛在的風險進行了平衡。"}]},{"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":"持續採用(CA)這個術語知道的人比較少,它表示一個越來越常見的概念:保持對底層軟件運行時和工具的更新。這包括Kubernetes、語言運行時等平臺。大多數供應商和開源社區已經開始按季度甚至按月進行升級。無法跟上軟件的發展步伐會導致應用程序過時,變得難以更改和支持。通常,安全更新是由軟件內部的管理機制強制執行的。供應商會爲數量很少的舊版本提供支持,所以支持窗口一直在變短。例如,Kubernetes每三個月發佈一次,社區僅支持最近的三個版本。如上所述,CI\/CD意味着代碼更改觸發構建和可能的部署。企業應該自動化類似的CA管道,當供應商或社區發佈新的升級補丁時觸發這些管道。有關CA的更多信息,請參見"},{"type":"link","attrs":{"href":"https:\/\/medium.com\/@jvdschot\/continuous-adoption-keeping-current-with-accelerating-software-innovations-33233461181a","title":"","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":"值得注意的是,生命週期自動化的效率取決於與之相關的過程。如果你的發佈審批週期仍然需要幾周,或者有個依賴項的生命週期以月爲單位,那麼將CI\/CD週期縮短到幾分鐘就沒有意義了。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"DevOps和站點可靠性工程"}]},{"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":"這就是所謂的DevOps,以下是其核心內容:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"跨開發和運營角色的協作和聯合"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"運營關切“左移”"}]}]},{"type":"listitem","attrs":{"listStyle":null},"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":"DevOps採取的方法是,我們應該不斷努力減少並儘可能消除開發和運營之間的距離,以便保持目標一致。這可以激勵開發人員“左移”許多運營上關注的事項。在實踐中,這可以歸結爲問一系列問題,然後根據答案採取行動:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"numberedlist","attrs":{"start":1,"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":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":2,"align":null,"origin":null},"content":[{"type":"text","text":"我們可以將可伸縮性、可用性和可觀察性測試作爲早期測試的一部分嗎?"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":3,"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":"在這方面,容器和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":"顯然,使用CI\/CD縮短開發和生產之間的路徑是與DevOps聯繫在一起的,因爲關注迭代和業務是敏捷方法的特點。這也意味着改變人們的工作模式。軟件開發人員應該在照管生產系統方面發揮積極的作用,而不僅僅是創建新的功能。運營人員應該專注於那些可以讓單調而枯燥的任務自動化的方法,這樣他們就可以轉向更有價值的活動,比如創建自動化程度更高的自愈環境。當這兩者結合起來時,這個特定的角色通常被稱爲站點可靠性工程師,以強調他們也是軟件工程師的事實。成功的關鍵是需要充分認識到,組件“失敗是正常的”,因此,我們應該計劃好如何管理失敗,而不是徒勞地試圖阻止它發生。"}]},{"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":"團隊自治"}]},{"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":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"所有權去中心化"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"技術自由"}]}]},{"type":"listitem","attrs":{"listStyle":null},"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":"在整個企業中,仍然需要在方法和技術上保持一定程度的一致性。例如,像Spotify模式這樣的方法,通常是通過“協會(Guild)”來實現這種需求。“協會”是由團隊中的個人組成的團體,他們專注於鼓勵(而不是強制)團隊基於自己的實際經驗選擇常見的方法和工具。"}]},{"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":"link","attrs":{"href":"https:\/\/www.ibm.com\/garage\/method\/","title":"","type":null},"content":[{"type":"text","text":"IBM Garage Method"}]},{"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-how-of-cloud-native-people-and-process-perspective-a50852b50aa2","title":"","type":null},"content":[{"type":"text","text":"The “How” of Cloud Native: People and Process Perspective"}]}]},{"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\/PfHdeTgybyC47SpAB2fo","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\/LIRjAI0mhsClCooPtzLw","title":"","type":null},"content":[{"type":"text","text":"避免不完全的雲原生"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章