DevOps 核心能力:技術篇——架構

2021-01-13 艾拓先鋒

DevOps 核心能力: 技術篇--架構

DevOps 研究和評估 (DORA) 團隊的研究表明,架構是實現持續交付的重要預測因素。無論您使用的是 Kubernetes 還是大型機,您的架構都可以促成團隊採用提升軟體交付效能的做法。

當團隊採用持續交付做法時,以下架構做法有助於取得成功的結果:

團隊可以在無需團隊外部人員許可或依賴其他團隊的情況下,對其系統設計進行大規模更改。團隊無需與團隊外部人員進行精細的溝通和協調即可完成工作。團隊按需部署和發布其產品或服務,與團隊所依賴的服務或依賴該團隊的其他服務無關。團隊按需執行大部分測試,無需集成式測試環境。團隊可以在正常工作時間進行部署,且停機時間可以忽略不計。通過大型機技術有可能實現這些結果。但即使採用最新、最流行的技術,也有可能無法實現這些結果。許多組織在技術採用方面投入了大量的時間和精力,但由於架構造成的限制,未能實現關鍵的軟體交付結果。

如果系統的架構設計旨在讓團隊能夠在不依賴其他團隊的情況下測試、部署和更改系統,則團隊之間幾乎不需要溝通即可完成工作。換句話說,架構和團隊都是鬆散耦合。

溝通的強度與系統架構之間的這一聯繫最初是由 Melvin Conway 論述的,他提到:「設計系統…的組織受到限制,完成的設計往往是這些組織內部溝通結構的複製」。為抵消緊密耦合的架構並幫助支持更好的溝通模式,團隊和組織可以使用反向康威操縱,通過這一技術,團隊結構和模式的設計可提升預期的架構狀態。這樣,團隊溝通模式可以支持和實施所構建的架構模式。

如果採用緊密耦合的架構,細微更改可能會導致大規模的級聯故障。因此,在系統的某個部門工作的任何人都必須經常性地與在系統其他部門工作的任何其他人協調,包括應付複雜、繁文縟節的變更管理流程。

微服務架構本應該能夠實現這些結果,就像任何真正的面向服務的架構一樣。但實際上,許多所謂的面向服務的架構不允許相互獨立地測試和部署服務,因此不會使團隊達到更高的軟體交付效能。在實現面向服務的架構和微服務架構時,必須嚴格要求取得這些結果。

如何實現持續交付架構

考慮主要的架構原型。Randy Shoup 是 App Engine 前工程總監和 WeWork 前工程副總裁,他注意到以下情況:

「沒有一個完美的架構適用於所有產品和所有規模。任何架構都滿足特定的一組目標或一系列要求和限制條件,例如產品上市期、易於開發功能、擴縮等。任何產品或服務的功能幾乎都必定會隨著時間的推移而不斷演進,因此我們的架構需求也會隨之改變就不足為奇了。架構在規模為 1 倍時適用,但在規模為 10 倍或 100 倍時很少適用」。

考慮到架構原型的優缺點,每個架構原型都符合組織不同的發展需求。

如上表所示,支持精簡產品開發工作的單體式架構(例如,快速設計新功能原型、潛在策略變化或重大策略變化)不同於需要數百個開發者團隊的架構,這些團隊必須能夠獨立為客戶帶來價值。通過允許架構不斷演進,您可以確保架構始終能夠滿足組織的當前需求。無論原型如何,在設計架構以便於持續交付的過程中,團隊都必須有能力實現本文檔簡介中所述的功能。

打造跨職能團隊以及組織中的代表(產品、開發、測試和運營)使團隊能夠獨立開展工作,並有助於圍繞團隊邊界進行構建。如果您的團隊是跨職能團隊,則團隊可以自主行使職責,發揮創意並選擇自己的工具。為有助於跨團隊溝通和測試,最好是明確定義服務之間的合同。

團隊獨立性很重要,產品和服務的獨立性也很重要。服務必須能夠根據需要進行測試。採用有關模擬外部服務和對外部進行存根的技術有助於減少外部依賴性的影響,並讓團隊可以快速創建測試環境。此外,實現外部服務的合同測試有助於確保對團隊服務或其他服務的依賴性仍會得到滿足。為真正實現持續交付,單個團隊的產品或服務必須獨立完成驗收測試,並從所依賴的服務中進行部署。

如需啟用隨時部署功能,請考慮實現藍綠部署模型或滾動部署模型,並實現高度自動化。使用這些模型時,至少有兩個或更多產品或服務版本同時運行。藉助這些部署模型,團隊可以驗證更改並部署到生產環境,並且停機時間極少甚至沒有。一個重要的考慮因素是如何執行數據升級,這意味著數據和架構必須以向後兼容的方式完成。

為有助於獨立部署組件,我們建議您創建向後兼容的版本化 API。確保 API 向後兼容增加了系統的複雜性,但是您在簡化部署方面獲得的靈活性價值要數倍於增加的複雜性。

面向服務的架構和微服務架構能夠實現這些功能,因為它們使用有界限上下文和 API 將大型網域分離成更小、更鬆散的耦合單元,並使用 test doubles 和虛擬化單獨測試服務或組件。

常見架構誤區

同時發布多項服務。在不優先考慮可測試性和可部署性的團隊中,大多數測試都需要使用複雜且昂貴的集成環境。在許多情況下,由於複雜的相互依賴性,部署需要同時發布多項服務。這些「一次性」部署需要團隊協調安排他們的工作,包括數百個或數千個任務之間的許多交接和依賴關係。一次性部署通常需要數小時甚至數天的時間,並且需要安排較長停機時間。將更改與來自數百個甚至數千個其他開發者的更改集成。這些開發者反過來可能依賴於數十、數百或數千個互連繫統。測試是在稀缺的集成測試環境中完成的,通常需要數周時間來獲取和配置。這些環境通常不代表生產環境,降低了測試的價值和準確性。結果不僅變更前的準備時間較長(通常以數周或數月計),並且開發者的工作效率降低,部署結果不佳。在軟體交付流程中存在瓶頸。例如,瓶頸可能是許多其他團隊從手動處理角度(測試、部署等)或服務運營角度所依賴的一個團隊。在這兩個示例中,這些瓶頸會造成單點故障,並需要這些團隊或服務能夠擴縮以滿足眾多依賴團隊的需求。改進架構的方法

藉助可讓小型開發者團隊獨立實現、測試代碼並將其安全快速地部署到生產環境的架構,您可以提高開發者的工作效率並改善部署結果。面向服務的架構和微服務架構的一個關鍵特性是,它們由具有有界限上下文的鬆散耦合服務組成。基於這些原則的現代 Web 架構的一組常見模式是十二要素應用。

Randy Shoup 注意到以下情況:

「具有此類面向服務的架構的組織,如 Google 和 Amazon,具有超高的靈活性和可擴縮性。這些組織中有數以萬計的開發者,而小型團隊的工作效率仍然非常之高」。

在許多組織中,測試和部署服務非常困難。我們建議您採用迭代方法來改進企業系統的設計,而不是重新設計所有內容的架構。此方法稱為演進式架構。在此方法中,假設成功的產品和服務在其生命周期內由於對其需求發生了變化需要重新設計架構。

在此情況下,一種有用的模式是絞殺榕應用。在這種模式中,您可以通過確保按照面向服務的架構的原則完成新工作,以迭代方式將單體式架構替換為一個更加組件化的架構。您應接受新的架構可能會完全委託給要替換的系統。隨著時間的推移,在新架構中執行的功能越來越多,舊系統會被「絞殺」。

產品和服務架構在不斷演進。您可以通過多種方式來決定新模塊或服務,並且是一個迭代過程。在決定是否在服務中創建一項功能時,請考慮該服務是否具有以下特徵:

可以實現單項業務功能或能力。只需與其他服務進行很少的交互即可執行其功能。獨立於其他服務進行構建、擴縮和部署。使用輕量級通信方法(例如消息總線或 HTTP 端點)與其他服務進行交互。可以使用不同工具、程式語言、數據存儲區等實現。改用微服務或面向服務的架構還會改變整個組織的許多方面。在 Steve Yegge 的平臺吐槽中,他提供了在改用 SOA 過程中學到的一些重要的經驗教訓:

指標和監控變得更加重要,並且上報變得更加困難,因為一項服務中出現的問題可能來自許多服務調用。內部服務可能會產生拒絕服務 (DOS) 類型的問題,因此配額和消息限制在每項服務中都很重要。質量檢查和監控開始結合執行,因為監控必須全面,並且必須運用服務的業務邏輯和數據。如果存在多項服務,則服務發現機制對於系統的高效運行至關重要。如果沒有在可調試環境中運行服務的通用標準,則調試他人服務中的問題會更加困難。案例研究:Datastore

緊密耦合的架構可能會妨礙每個人的工作效率和安全進行更改的能力。相比之下,鬆散耦合的架構通過明確定義的接口來強制規定模塊相互連接的方式,從而提高工作效率和安全性。鬆散耦合的架構可讓小型高效團隊進行可以安全、獨立部署的更改。此外,由於每項服務都還有一個明確定義的 API,因此可以更輕鬆地對服務進行測試,並可以在團隊之間創建合同和服務等級協議 (SLA)。

Randy Shoup 對該架構的描述如下:

「這種類型的架構為 Google 帶來了非常出色的結果,對於 Gmail 這樣的服務,它下面還有 5 個或 6 個其他服務層,每個層均針對一個非常具體的功能。每項服務均由小型團隊提供支持,團隊負責構建服務並運行其功能,每個團隊可能會選擇不同的技術。另一個例子是數據存儲區服務,它是全球最大的 NoSQL 服務之一,但僅由大約 8 人組成的團隊支持,這主要是因為該服務是以多層基於彼此而構建的可靠服務為基礎」。

這種面向服務的架構允許小型團隊打造更小、更簡單的開發單元,每個團隊都可以獨立、快速、安全地進行部署。

衡量架構改進的方法

無論是在大型機上還是在微服務中,促成架構改進所需的做法對於提高軟體交付性能(增加部署頻率,同時縮短變更前準備時間、恢復服務時間,並降低變更失敗率)至關重要。在您的服務和產品的耦合性緊密程度降低時,您的部署頻率應該會增加。在衡量改進時,請考慮使用部署速率而不僅僅是計數,因為部署計數自然隨著服務的增加而增加。最後,您應該能夠看到發現問題並從問題恢復的時間減少,並且更改部署到生產環境的時間減少。

除了採取這些部署和服務措施之外,更獨立運營的團隊還表現在工作滿意度和團隊實驗的改進,並且往往根據需要選擇不同的技術和工具。(轉自DevOps教練)

相關焦點

  • 當技術為組織所累時怎麼辦?將你的組織架構旋轉90度!
    作者近期針對企業數位化和架構轉型思考後陸續寫了三篇文章,這篇是第二篇,主題專注組織架構轉型,前一篇稱為《企業的組織架構是如何影響技術架構的?》,主題是建立背景上下文 (background),最後一篇稱為《大規模生產級微服務的關鍵支撐技術》,主題關於微服務架構和 DevOps 關鍵支撐技術,讀者可以關注 InfoQ 公眾號等待後續更新。
  • 從企業架構到信息化規劃,從現狀調研到架構設計的核心邏輯
    今天準備談下IT規劃諮詢的核心方法論和思考邏輯。在這篇文章我不會詳細的去談當前主流的企業架構方法論理論框架和內容。而是根據多年IT諮詢實踐,將一些關鍵邏輯點和你分析。為什麼要談核心IT規劃和諮詢邏輯?
  • 架構師必須知道的架構設計原則
    編輯|小智 不管你是新手程式設計師、職場老司機,還是資深架構師,這篇文章對你來說應該都有裨益。 寫在前面 如果一個技術已經存在 2 年,比如現在很火的前端技術 react 和 vue 等,那麼我能預估這個技術大致還有 2 年的生命期,再久就不確定了;如果一個架構或設計原則已經存在 15 年,例如單一職責和依賴倒置原則,我可以預期它還有 15 年甚至更久的生命期。原則是比具體技術更抽象,更接近事物本質,也更經得起時間考驗的東西。
  • 智能汽車時代的核心,電子架構系統深度解讀
    通過昨天的分享,我們可以知道整個「智能汽車」的核心就是汽車電子電氣架構的革命性改變,今天就來分享這部分內容。 傳統汽車採用的分布式 E/E 架構因計算能力不足、通訊帶寬不足、不便於軟體升級等瓶頸,不能滿足現階段汽車發展的需求,E/E 架構升級已成為智能網聯汽車發展的關鍵。 二,E/E 架構具體如何升級?有何好處?
  • 高清洗能力的DDoS防護產品源於優秀的架構
    騰訊安全聯合實驗室研製的DDoS高防產品就依託其優秀的架構做到對攻擊的完全檢測和高清洗能力。使用光稜物理分光做1:1流量鏡像,旁路Netflow檢測鏡像流量,不影響客戶正常業務流向,檢測後的鏡像流量被丟棄。檢測原理主要為基於流量建模分析客戶IP的流量中是否存在攻擊流量。
  • 微服務架構技術棧
    基於近年在微服務基礎架構方面的實戰經驗和平時的學習積累,我想總結並提出一些構建微服務 2.0 技術棧的選型思路,供各位在一線實戰的架構師、工程師參考借鑑。對於一些暫時還沒有成熟開源產品的微服務支撐模塊,我也會給出一些定製自研的設計思路。二、選型準則對於技術選型,我個人有很多標準,其中下面三項是最重要的:1.
  • 實例分析:一整套業務系統產品技術架構的方法論
    所以在搭建產品架構的時候則要求產品經理非常懂業務,考驗PM能力的同時,對技術架構也具備很大的挑戰。首先,思考一下好的產品(業務模式)是什麼?三、技術架構的兩個原則(1) 說到系統架構,架構師的組織能力很重要,組織的不只是一個系統的各個功能元素,需要具備組織不同的系統的能力
  • 中臺的進化,從「IT架構」到「數智化能力」
    YonBIP 為何採用一技術平臺+3 中臺的技術架構?對此,CSDN 採訪到用友網絡雲平臺架構部負責人劉昆鵬,他自 2006 年加入用友,親歷了用友 NC、iuap 平臺的成長發展,一路從研發新人走到技術架構師,豐富的行業經驗使他對企業管理軟體的發展、中臺技術具有獨到的見解。
  • 傳祺EMPOW55出道,廣汽GPMA架構是背後核心力量
    全新的品牌口號彰顯了廣汽傳祺對未來發展的信心;全面進化的廣汽GPMA架構是廣汽傳祺未來發展的核心技術支撐;EMPOW55是廣汽傳祺實施新戰略,基於新技術廣汽GPMA架構的"先頭"產品。或許大家都注意到了,三大驚喜的核心點是廣汽GPMA架構,那麼全面進化的廣汽GPMA架構有何亮眼之處,對於廣汽傳祺甚至自主品牌會有哪些深遠的影響呢?不妨就與我們一起探尋一番吧。
  • 深度揭秘騰訊DevOps全鏈路解決方案
    在騰訊開放戰略的背景下,為了幫助企業客戶的網際網路轉型,幫助行業實現效率升級,騰訊亦將組織經驗與產品研發、集成發布和持續運維的效率能力通過產品的形式,開放於行業共享。騰訊織雲,經過騰訊海量業務打磨,維護超20萬臺伺服器,超1萬個服務模塊,承載QQ等海量社交業務,日均發布量近萬次,是集質量、效率、成本、架構為一體的智能運維平臺。
  • 架構設計:業務邏輯和技術分離
    洋蔥圈架構 洋蔥架構與六邊形架構有著相同的思路,它們都通過編寫適配器代碼將應用核心從對基礎設施的關注中解放出來,避免基礎設施代碼滲透到應用核心之中。這樣應用使用的工具和傳達機制都可以輕鬆地替換,可以一定程度地避免技術、工具或者供應商鎖定。
  • 區塊鏈底層技術架構石墨烯介紹
    基於石墨烯材料的靈感,EOS創始人Daniel Larimer帶領Cryptonomex 公司團隊一起研發了石墨烯區塊鏈底層技術架構,並使該架構成為了區塊鏈領域優秀的核心底層架構。 幾乎具備了目前區塊鏈技術領域所有的技術優勢,真可謂集百家之長也。 基於此架構開發的項目包括有EOS、Steem、BTS、GXC、YOYOW等一大批公鏈項目。
  • 與HD7970同核心 Tahiti架構HD7870首測(全文)_迪蘭 HD7870 酷能+...
    而在DIY界,遊戲玩家們同樣期待類似的顯卡出現:沒有高端的定位,甚至沒有華麗的外表,但散熱器下面卻壓著一顆強勁的核心。今天,這樣的產品終於出現在我們面前——採用Tahiti架構設計的Radeon HD7870。
  • 什麼是架構師?有何作用,成為一名架構師需要具備怎樣的能力?
    Express 的技術架構副總裁 Andy Miller 說Express 的技術架構副總裁 Andy Miller 說:「如果你沒有一項強有力的架構策略,人人各行其是,最後以得到六種伺服器和軟體平臺而告終,你的系統變成了大雜燴,而那將使你的費用激增。」
  • AR雲@5G 中的核心技術路徑
    本文為「AR邊緣雲技術」專題系列第4篇,本公眾號將繼續推出「AR邊緣雲技術」專題系列文章,與各位分享相關信息,敬請持續關注! 相關信息 5G作為通訊賦能行業的一項重要技術變革,對於 AR 能力和服務的雲部署,不但帶來了寬裕的上下行流量通道,同時超低的空口延時和安全靈活的數據傳輸幀組織方式,為基於核心接入的移動邊緣計算框架提供了廣闊的可能。
  • 農行謝凱:解析農行開放銀行技術架構
    本文簡述了開放銀行的背景和現狀,介紹了農業銀行開放銀行平臺的技術架構及場景金融生態,分析了金融科技在開放銀行建設方面發揮的支撐作用。例如國內某商業銀行就以「開放金融服務,賦能合作夥伴,構建生態體系」為基本宗旨,通過構建公有雲服務、智慧政務服務等17個平臺,形成較為完整的智慧城市服務方案,全方位滲透到客戶各類生產生活場景中,實現核心金融能力輸出,滿足客戶差異化需求。
  • Gdevops | 福昕助力金融共繪金融行業美好藍圖
    首頁 > 傳媒 > 關鍵詞 > 福昕最新資訊 > 正文 Gdevops | 福昕助力金融共繪金融行業美好藍圖
  • 15 年架構設計經驗:我眼中的那些優秀架構師
    去年底,我曾經面試過一位架構師的候選人。這位候選人是一位大廠高級工程師,因為技術好,在團隊中承擔一些管理工作。從他簡歷上的項目經驗,我能看出他的編程能力和技術深度都屬於優秀行列,在某些項目上,已經承擔了一部分架構設計職責,是個潛力型人選。
  • 為什麼說應用架構需要分類思維?
    模塊(Module)、組件(Component)、包(Package),這些概念對於我們技術同學並不陌生,但並不是所有人都能理解其要義。深入理解之後,我才發現,其背後的深意是分類思維。而這種分類也是應用架構的核心所在,通過不同粒度、不同層次的分類,把複雜的軟體系統實現控制在可以被理解、被維護的程度。
  • 工業大數據應用技術架構有哪些類型
    那麼大數據技術架構類型都有哪些?那麼大數據技術架構類型都有哪些?  1、業務架構  業務架構定義了業務戰略、管理、組織和關鍵業務流程,是企業全面的信息化戰略和信息系統架構的基礎,是數據、應用、技術架構的決定因素。業務架構是把企業的業務戰略轉化為日常運作的渠道,業務戰略決定業務架構。業務架構將高層次的業務戰略和目標轉換成可操作的業務模型。