<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          微服務(wù)與 DevOps實(shí)踐:技術(shù)架構(gòu)與組織架構(gòu) | IDCF

          共 7610字,需瀏覽 16分鐘

           ·

          2021-04-06 17:30


          一、概述



          首先,我們來看看微服務(wù)的定義:微服務(wù)是一個界限明確、高度封裝、松耦合、可以獨(dú)立部署和獨(dú)立擴(kuò)展的服務(wù)應(yīng)用組件。如圖所示。微服務(wù)架構(gòu)基于 SOA 和領(lǐng)域驅(qū)動設(shè)計(DDD)構(gòu)建,其主要目的包含以下三個方面:開發(fā)的敏捷性、部署的便利性及明確的可擴(kuò)展性。
          其次,微服務(wù)和傳統(tǒng)的 SOA 有什么異同:
          • 從設(shè)計原則上來講,微服務(wù)架構(gòu)遵循 SOA 的設(shè)計原則。
          • 小的、可重用的服務(wù)并不一定是微服務(wù),微服務(wù)架構(gòu)強(qiáng)調(diào)敏捷、獨(dú)立開發(fā)、獨(dú)立部署、獨(dú)立擴(kuò)展,重用在某種程度上會影響敏捷性。
          微服務(wù)架構(gòu)為了實(shí)現(xiàn)其敏捷特性,在 SOA 架構(gòu)約束的基礎(chǔ)之上又添加了新的約束,微服務(wù)之間不能互相依賴,因此要求微服務(wù)能夠獨(dú)立部署、獨(dú)立擴(kuò)展,微服務(wù)之間的依賴越少越好。
          微服務(wù)中的一個服務(wù)只實(shí)現(xiàn)一個獨(dú)立的特性。
          對于微服務(wù)而言,盡量不要為外部應(yīng)用發(fā)布代碼級 API,可以通過服務(wù)調(diào)用或者事件解決依賴問題。
          微服務(wù)中的服務(wù)之間最好通過異步事件交互。
          微服務(wù)中的每個服務(wù)都擁有自己獨(dú)立的數(shù)據(jù)。
          另外,微服務(wù)架構(gòu)的優(yōu)點(diǎn)有很多:
          • 敏捷性:微服務(wù)不僅可以提高開發(fā)的敏捷性,還可以加速持續(xù)部署(CD),從而使開發(fā)團(tuán)隊能夠盡快部署新的功能。
          • 減少風(fēng)險:由于每個微服務(wù)都是比較小巧并且獨(dú)立部署的,因此可以減少每次部署的風(fēng)險。
          • 適合分布式開發(fā):微服務(wù)之間依賴程度低,因此可以更加靈活地獨(dú)立開發(fā)。
          • 技術(shù)靈活性:微服務(wù)之間的耦合程度低,因此技術(shù)團(tuán)隊可以根據(jù)不同的特點(diǎn)選擇最合適的技術(shù)棧,例如利用不同的編程語言解決不同的領(lǐng)域問題。
          • 可擴(kuò)展性:一個應(yīng)用有許多微服務(wù)組成,每個微服務(wù)可以根據(jù)需要獨(dú)立擴(kuò)展,而無須對整個應(yīng)用做整體擴(kuò)展。
          鑒于以上優(yōu)點(diǎn),我們來看一下微服務(wù)的本質(zhì)。微服務(wù)在本質(zhì)上是一種服務(wù)實(shí)現(xiàn)模式,微服務(wù)可以實(shí)現(xiàn)一個應(yīng)用中獨(dú)立的業(yè)務(wù)功能,而不是整個應(yīng)用或者模塊,因此,微服務(wù)其實(shí)是將單體應(yīng)用的復(fù)雜性從程序內(nèi)部轉(zhuǎn)移到了服務(wù)組件之間,這就對微服務(wù)抽象的粒度有一個比較高的權(quán)衡要求。
          對于微服務(wù)的粒度,大家討論的最多,這也是實(shí)踐過程中經(jīng)常遇到的令人糾結(jié)的問題。實(shí)際上,如果抽象粒度太細(xì),就需要大量的服務(wù)編排來滿足業(yè)務(wù)場景,而大量使用服務(wù)編排就可能會導(dǎo)致微服務(wù)退回到 SOA 模式(服務(wù)編排是類似 BPM 或者 ESB 的系統(tǒng));而如果服務(wù)粒度太粗,則不利于開發(fā)的敏捷性和部署的便利性。
          微服務(wù)的主要目的是實(shí)現(xiàn)敏捷,微服務(wù)架構(gòu)的主要構(gòu)建方式是采用領(lǐng)域驅(qū)動設(shè)計,而領(lǐng)域驅(qū)動設(shè)計主要包括如下五個概念:
          • Bounded Context
          • Context Map
          • Event Sourcing
          • CQRS
          • BASE
          微服務(wù)的粒度并沒有一個明確的界限,也就是說“尺寸”是相對的。通常,微服務(wù)的粒度和對敏捷性的要求密切相關(guān),往往粒度越細(xì)其敏捷度也越高,但是并不是所有的應(yīng)用對敏捷的要求都那么高,也就是說在微服務(wù)的設(shè)計和實(shí)現(xiàn)過程中,對于粒度的大小可以做適當(dāng)?shù)恼{(diào)整。對于想要采用微服務(wù)架構(gòu)的團(tuán)隊,首先要考慮如下幾個前提條件:
          • 現(xiàn)有軟件架構(gòu)是否已經(jīng)服務(wù)化或者按照系統(tǒng)功能做了模塊化切分。
          • 團(tuán)隊的敏捷成熟度如何,是否有足夠的 DevOps 經(jīng)驗(yàn)。
          • 開發(fā)團(tuán)隊是否有足夠的架構(gòu)設(shè)計能力來適應(yīng)采用微服務(wù)所帶來的設(shè)計方法、模式以及技術(shù)架構(gòu)上的巨大差異。
          • DBA 團(tuán)隊是否有能力和意愿制定新的數(shù)據(jù)管理模式——將數(shù)據(jù)管理的方式由原來的集中管理轉(zhuǎn)變?yōu)槿ブ行幕芾怼?/span>
          • 運(yùn)維團(tuán)隊是否有足夠的能力為微服務(wù)提供全新的環(huán)境管理工具、部署工具和監(jiān)控工具。
          綜上所述,我們建議微服務(wù)的演進(jìn)線路如圖所示。
          • 從單體應(yīng)用或者傳統(tǒng)分層架構(gòu)的應(yīng)用向服務(wù)化過渡,通過封裝和組合等方式提供對外發(fā)布接口的能力,從而提升應(yīng)用的可訪問性。
          • 通過重構(gòu)將 Domain-Level(領(lǐng)域?qū)用妫┑墓δ苣K轉(zhuǎn)變?yōu)榭梢元?dú)立部署的服務(wù),從而提升整個應(yīng)用的敏捷性。我們將這種可獨(dú)立部署的服務(wù)稱為 MiniService,其粒度比微服務(wù)粗,因而抽象難度比較低,但是也能在一定程度上獲得微服務(wù)所帶來的敏捷性提升的好處,但是對 DevOps 的基礎(chǔ)設(shè)施等要求沒有微服務(wù)高,因此建議沒有微服務(wù)經(jīng)驗(yàn)的團(tuán)隊可以從 MiniService 開始嘗試。
          • 通過 Feature-Level(特性層面)的抽象,根據(jù)單一職責(zé)原則將 MiniService 拆分成微服務(wù),從而獲得更高的擴(kuò)展性和敏捷性。

          二、融數(shù)數(shù)據(jù)微服務(wù)的架構(gòu)選型



          我們在構(gòu)建微服務(wù)體系的過程中,經(jīng)歷了技術(shù)選型、技術(shù)驗(yàn)證、引入開源實(shí)現(xiàn)及完全自研等一系列的過程,其中也走過不少彎路,現(xiàn)在回想起來,感觸良多,在這里跟大家分享一下,希望能夠有所幫助。對于技術(shù)選型,我們不希望重復(fù)發(fā)明輪子,也不希望完全受制于開源的實(shí)現(xiàn),所以在技術(shù)選型時遵循如下原則:
          考察社區(qū)熱度、架構(gòu)成熟度、學(xué)習(xí)曲線、可維護(hù)性,如圖所示。
          盡量照顧現(xiàn)有服務(wù)的開發(fā)方式和框架的使用習(xí)慣,不對目前的研發(fā)團(tuán)隊造成太大的沖擊。能夠給程序員提供何種能力?我們的期望是:
          • 方便開發(fā)
          • 方便遷移
          • 多協(xié)議支持
          • 多語言支持
          • 方便監(jiān)控
          • 方便運(yùn)維
          我們比較了可能用到的一些開源服務(wù)框架,并對它們的功能點(diǎn)進(jìn)行了評估,如圖所示。
          由于之前團(tuán)隊采用 RESTEasy + Spring Boot 的方式實(shí)現(xiàn)服務(wù),不希望對現(xiàn)有的系統(tǒng)和產(chǎn)品產(chǎn)生太大的影響,因此決定服務(wù)框架首先需要支持 REST 服務(wù),又由于 Netflix 提供了比較全面的解決方案,并且 Spring Cloud 在遵循 cloud-native 原則的基礎(chǔ)上對 Netflix 進(jìn)行了比較友好的封裝,因此初步的結(jié)論是可以基于 Spring Cloud 進(jìn)行二次開發(fā),封裝我們自己的微服務(wù)框架。
          經(jīng)過半年的實(shí)踐,我們發(fā)現(xiàn) Netflix 技術(shù)棧的思想不錯,但是很多實(shí)現(xiàn)并不是特別完美,例如:
          • Zuul 提供的 Edge Service 及 API 網(wǎng)關(guān)是完全基于 HTTP 協(xié)議的過濾器實(shí)現(xiàn)的,基于 HTTP 協(xié)議的同步調(diào)用方式會帶來性能的損失,并且缺乏長連接的推送及多路復(fù)用的能力。
          • Zuul 不能滿足 RPC 調(diào)用的需求,而在大規(guī)模團(tuán)隊協(xié)作的過程中,契約優(yōu)先的開發(fā)方式優(yōu)于代碼優(yōu)先的開發(fā)方式,因此對于應(yīng)用內(nèi)部交互來講,RPC 框架從管理和協(xié)作的角度要優(yōu)于 REST 服務(wù)。
          基于 Eureka 的服務(wù)注冊依然是中心化治理的方式,與傳統(tǒng)基于 ZooKeeper 或者 etctd/consul 的治理方式一樣,中心化的治理會給服務(wù)的部署帶來非常大的阻礙,需要對不同的環(huán)境配置不同的中心注冊服務(wù)器,服務(wù)的版本管理及服務(wù)注冊信息的同步也會帶來問題,更加糟糕的是,在某些服務(wù)不正常的情況下,客戶端需要進(jìn)行大量的判斷,防止出現(xiàn)治理風(fēng)暴等問題。
          因此,我們后來果斷轉(zhuǎn)換思路,對之前的微服務(wù)框架進(jìn)行了徹底的改造:
          • 基于對 gRPC 的封裝,構(gòu)建 Service Provider 的全新實(shí)現(xiàn),替代 REST 服務(wù)。
          • 通過 Proxy 方式,實(shí)現(xiàn) gRPC 與 REST 服務(wù)的相互轉(zhuǎn)換,保持系統(tǒng)兼容性。
          • 進(jìn)行去中心化治理,通過 Proxy 來實(shí)現(xiàn)端點(diǎn)治理,將客戶端治理變?yōu)榉?wù)端治理。
          • 通過擴(kuò)展并集成 Zipkin 實(shí)現(xiàn)服務(wù)鏈路監(jiān)控和運(yùn)行時拓?fù)涫占?/span>
          • 構(gòu)建 Endpoint inventory 服務(wù),以 semantic versioning 的方式管理服務(wù)版本。
          • 將 Proxy 作為服務(wù)部署的執(zhí)行端點(diǎn),通過 VIP 綁定,透明化客戶端尋址工作。利用 Proxy 提供輕量級的負(fù)載均衡、流量控制及灰度發(fā)布的功能。

          三、設(shè)計思想



          融數(shù)數(shù)據(jù)微服務(wù)架構(gòu)的整體設(shè)計思想如圖所示。
          該設(shè)計思想的具體說明如下。
          • 面向運(yùn)維的設(shè)計,配合 DevOps 平臺,提供服務(wù)生命周期管理及易于被監(jiān)控的能力。
          • 面向開發(fā)者,合理封裝。開發(fā)者無須了解 gRPC 的具體實(shí)現(xiàn)。
          • 基于 IDL 的契約優(yōu)先的開發(fā)方式。
          • 提供完善的測試框架和 Mock 工具。
          • 提供完善的易于監(jiān)控的能力。

          四、總體架構(gòu)



          融數(shù)數(shù)據(jù)微服務(wù)總體架構(gòu)(Graeae)如圖所示。
          4.1 總體架構(gòu)的特性
          融數(shù)數(shù)據(jù)微服務(wù)總體架構(gòu)有如下特性。
          • Graeae 架構(gòu)與協(xié)議無關(guān)。該架構(gòu)可以基于 Netty4、線程模型及 buffer pool 進(jìn)行調(diào)整,以減少 GC 壓力并通過線程切換提升性能協(xié)議。
          • 遵循 protocol buffer 協(xié)議,可以做到通用性強(qiáng)、序列化性能好、壓縮效率高。
          • 語言中立,目前整個架構(gòu)支持 Java、Python 和 Go 三種語言的開發(fā)。
          • 引入了熔斷器機(jī)制、流量控制、服務(wù)治理。
          • 基于 Proxy 和 PaaS 平臺進(jìn)行分布式治理監(jiān)控。
          • 使用集成 Zipkin 的調(diào)用鏈監(jiān)控,以及基于 Pinpoint 的 APM 監(jiān)控。
          • 對于該架構(gòu)而言,直接調(diào)用的性能好于反射調(diào)用,且使用 Netty4 線程模型優(yōu)化。
          4.2 具體實(shí)現(xiàn)
          服務(wù)提供者 Endpoint 基于責(zé)任鏈模式(如圖所示)對 gRPC 進(jìn)行封裝,對屏蔽了 gRPC 框架的事件驅(qū)動采用同步調(diào)用方式,方便業(yè)務(wù)遷移。
          Endpoint 封裝了腳手架工具,提供基于 ProtoBuf 的 IDL 接口定義語言,使用契約優(yōu)先的方式定義服務(wù),并可以自動生產(chǎn)服務(wù)端和客戶端的代碼框架。
          代碼優(yōu)先意味著實(shí)現(xiàn)簡單,能夠快速執(zhí)行。問題也很明顯,可能和某個具體語言綁定,面對多語言環(huán)境,其打通成本較高。
          契約優(yōu)先的中立性提供了一個中間橋梁,讓面向多語言成為了可能,基于契約的元信息為后續(xù)治理和演進(jìn)提供了入口點(diǎn)。缺點(diǎn)是需要引入契約語言的學(xué)習(xí),并與多語言進(jìn)行適配。
          Endpoint 采用生命周期自管理的方式,提供容器化的生命周期管理 API 和相應(yīng)的 SPI,方便擴(kuò)展及與 DevOps 工具結(jié)合。
          外部管理(如 Tomcat)讓用戶不用關(guān)注自身的起始、消亡,但帶來的不足是對生命周期的管理相對減弱、部署的依賴管理擴(kuò)散。
          進(jìn)程自治可以加強(qiáng)其對自身生命周期的管理,高內(nèi)聚,不將依賴擴(kuò)散。在一定程度上能夠帶來部署的便利及不同部署環(huán)境的適應(yīng)性(如云環(huán)境)。為優(yōu)雅關(guān)閉提供切入點(diǎn),進(jìn)一步增強(qiáng)對系統(tǒng)的可控性。
          從對環(huán)境適應(yīng)性和對生命周期的管理能力考慮,進(jìn)程自治有著不可忽略的優(yōu)勢。
          Endpoint 將配置與代碼分離,提供多種方式的配置覆蓋能力,使得改變配置無須重新部署。
          配置和代碼一起進(jìn)行的優(yōu)點(diǎn)是使開發(fā)變得簡單,但不足也很明顯,即面對不同的環(huán)境需要部署多套代碼,復(fù)雜度增加。
          配置和代碼分離后的優(yōu)點(diǎn)是真正做到了只部署一套代碼。配置信息按環(huán)境獨(dú)立配置,不受環(huán)境制約,可隨時調(diào)整。
          集成 Spring Boot,提供自定義注解方式,能夠快速啟動服務(wù),方便開發(fā)。

          //服務(wù)提供方
          public class SmsTemplateApplication {
          public static void main(String[] args) {
          new SpringApplicationBuilder().sources(SmsTemplateApplication.class)
          .web(false).showBanner(false).run(args);
          }
          }
          //服務(wù)實(shí)現(xiàn)
          public class SmsTempletServiceImpl implements SmsTemplateService { @Autowired
          private SmsTempletDao smsTempletDao;
          @Transactional
          public DeleteReply deleteById(IdRequest req) { return SmsTemplateReply.newBuilder().build(); }
          }

          利用 Proxy 部署和設(shè)置服務(wù)治理端點(diǎn),進(jìn)行分層治理,如圖所示。
          用 Proxy 配合部署方式來兼容 semantic versioning 的版本管理,版本格式有主版本號、次版本號、修訂號、版本號遞增同時需要備注,規(guī)則如下:
          • 主版本號:當(dāng)做了不兼容的 API 修改時,需要遞增主版本號。
          • 次版本號:當(dāng)做了向下兼容的功能性新增時,需要遞增次版本號。修訂號:當(dāng)做了向下兼容的問題修正時,需要遞增修訂號。
          先行版本號及版本編譯信息可以加到“主版本號.次版本號.修訂號”的后面,作為延伸。

          五、對微服務(wù)的支撐



          融數(shù)數(shù)據(jù) DevOps 體系主要解決的問題是有效地識別和管理元數(shù)據(jù),以便高效、自動化、高質(zhì)量地將系統(tǒng)動態(tài)組裝并運(yùn)行起來,該體系架構(gòu)如圖所示。
          下面結(jié)合圖對 DevOps 體系做幾點(diǎn)說明。
          • 抽象了部署的最小單元——包。
          • 每個微服務(wù)都是由包及其配置組成的,前面提到,服務(wù)框架做了代碼和配置分離,因此這里可以將包和包的配置分離,提供運(yùn)維便利性。
          • 邏輯環(huán)境包括了微服務(wù)、微服務(wù)配置及運(yùn)行微服務(wù)所依賴的 Host 或者 Host Group。
          • 版本化邏輯環(huán)境,方便回滾。
          該體系中的服務(wù)組件=(可運(yùn)行代碼 + 配置)&(依賴 + 配置)&(基礎(chǔ)設(shè)施 + 配置),如圖所示。
          從部署的角度講,無論包還是包的集合(往往是組成一個獨(dú)立業(yè)務(wù)域的獨(dú)立功能)都需要依靠版本才能進(jìn)行整體部署,可以部署在不同的邏輯環(huán)境上,也可以部署在同一個邏輯環(huán)境上,如圖所示。

          六、DevOps 平臺總體架構(gòu)



          DevOps 平臺通過構(gòu)建平臺將代碼編譯成物理二進(jìn)制包,再使用元數(shù)據(jù)對這個二進(jìn)制物理包進(jìn)行描述,形成邏輯包,且將部署、依賴和二進(jìn)制包本身的元數(shù)據(jù)統(tǒng)一存儲到元數(shù)據(jù)服務(wù)中,最終通過統(tǒng)一環(huán)境管理平臺讀取元數(shù)據(jù),按需拉取相應(yīng)的邏輯包對應(yīng)的物理包,放置到目標(biāo)環(huán)境的相應(yīng)目錄下。之后通過進(jìn)程管理調(diào)用相應(yīng)的服務(wù)啟動相關(guān)微服務(wù),在部署的過程中,由邏輯環(huán)境管理綁定 VIP 到微服務(wù)的 Proxy 上,將信息注冊到 service inventory 服務(wù)上,這樣 Proxy 和服務(wù) Endpoint 等的運(yùn)行時信息(例如 IP、端口、版本等)就可以被收集到 service inventory 服務(wù)上。
          在真正調(diào)用服務(wù)時通過內(nèi)建的 Zipkin 可以收集服務(wù)調(diào)用鏈的情況,并同 inventory 服務(wù)的元數(shù)據(jù)信息進(jìn)行匹配,便可以準(zhǔn)確地知道服務(wù)調(diào)用的關(guān)系,從而達(dá)到真正的分布式治理;而客戶端調(diào)用只需要知道服務(wù)所在的邏輯環(huán)境信息就可以自動完成服務(wù)尋址,這個服務(wù)地址就是 Proxy 綁定的 VIP 地址,從而簡化客戶端調(diào)用。DevOps平臺要做的就是保證 Proxy 的健壯性,由于 Proxy 只是簡單的反向代理,不存儲服務(wù)狀態(tài),因此只需要做故障漂移就可以了,如圖所示。

          七、融數(shù)數(shù)據(jù)面向微服務(wù)的研發(fā)團(tuán)隊介紹



          想成功地實(shí)施微服務(wù)架構(gòu),僅僅有服務(wù)框架、開發(fā)平臺及 DevOps 平臺是不夠的,組織和文化也需要適應(yīng)微服務(wù)的需求。根據(jù)康威定律,架構(gòu)由組織決定,因此需要對團(tuán)隊的文化及組織劃分結(jié)構(gòu)進(jìn)行調(diào)整。
          融數(shù)根據(jù) two-pizza team 的原則,按照業(yè)務(wù)來劃分研發(fā)團(tuán)隊,建立全棧小團(tuán)隊,從而提高溝通效率、降低溝通成本,具體的團(tuán)隊策略如圖所示。
          將團(tuán)隊切分后,我們按照業(yè)務(wù)線對組織進(jìn)行架構(gòu)規(guī)劃,以便技術(shù)團(tuán)隊能夠?qū)W⒂诮鉀Q對應(yīng)業(yè)務(wù)問題(業(yè)務(wù)驅(qū)動,或者說業(yè)務(wù)優(yōu)先)。這時,團(tuán)隊內(nèi)部的設(shè)計決策將在團(tuán)隊內(nèi)部消化,因?yàn)閳F(tuán)隊的規(guī)模已經(jīng)是 7+/-2 人的量級,因此一般情況下不會對于團(tuán)隊內(nèi)成員來說過于復(fù)雜的工作。但團(tuán)隊增多后,團(tuán)隊的協(xié)調(diào)將是一個問題,因此微服務(wù)從技術(shù)上幫助團(tuán)隊將負(fù)責(zé)的系統(tǒng)解耦,而計劃流程會幫助團(tuán)隊在工作安排上找到合理的步驟。
          那么,雖然當(dāng)一個大的業(yè)務(wù)被分解到各個小團(tuán)隊時,還是會有跨團(tuán)隊的設(shè)計工作,但是以上兩點(diǎn)是要嚴(yán)格執(zhí)行的。技術(shù)團(tuán)隊和業(yè)務(wù)團(tuán)隊的合作并非經(jīng)由上層協(xié)調(diào),雙方的主要溝通都是團(tuán)隊之間直接進(jìn)行水平溝通,也就是說,在底層的團(tuán)隊之間,需求、問題和日常交流都直接由業(yè)務(wù)團(tuán)隊反饋給技術(shù)團(tuán)隊的經(jīng)理,而解決問題時容許業(yè)務(wù)團(tuán)隊直接接觸開發(fā)人員,如圖所示。
          我們在團(tuán)隊中強(qiáng)調(diào)以結(jié)果為導(dǎo)向的工作方式,如圖所示。
          團(tuán)隊成員要有主人翁意識。團(tuán)隊的利益就是個人的利益,團(tuán)隊的成功才是個人的成功,團(tuán)隊成員之間要相互幫助和補(bǔ)位,不允許存在“事不關(guān)己,高高掛起”的情況出現(xiàn)。
          在團(tuán)隊中,成員可以發(fā)表意見,也可以抱怨,但是不能只停留在語言層面,大家需要行動起來,找到解決問題的方法;我們希望每個開發(fā)人員都參與架構(gòu)設(shè)計,而不是僅由架構(gòu)師決定;我們還強(qiáng)調(diào)不要過度設(shè)計,鼓勵通過抽象和簡化解決問題,當(dāng)然也鼓勵引入新技術(shù),但前提是能夠有足夠的掌控力而且不影響系統(tǒng)穩(wěn)定。
          軟件工程師負(fù)責(zé)需求調(diào)研、設(shè)計、開發(fā)、測試、部署、維護(hù)、監(jiān)控、功能升級等一系列的工作,也就是說軟件工程師負(fù)責(zé)應(yīng)用或者服務(wù)的全生命周期的所有工作。運(yùn)維是團(tuán)隊成員的第一要務(wù)。在強(qiáng)大的自動化運(yùn)維工具的支撐下,軟件工程師必須負(fù)責(zé)服務(wù)或者應(yīng)用的 SLA。
          在團(tuán)隊中引入 oncall 機(jī)制,強(qiáng)調(diào)保障處理及時性,并引入卓越運(yùn)維的思想,用數(shù)據(jù)統(tǒng)計每個團(tuán)隊的線上故障、解決及時性,并逐步要求故障數(shù)量遞減,通過強(qiáng)大的數(shù)據(jù)支持保證團(tuán)隊解決問題的 SLA,并逐步改善軟件質(zhì)量。

          八、總結(jié)



          DevOps 的推行是按業(yè)務(wù)來組織團(tuán)隊,團(tuán)隊包含設(shè)計、開發(fā)、測試、運(yùn)維等人員,這樣一方面可以有效減少服務(wù)內(nèi)部修改所產(chǎn)生的內(nèi)耗;另一方面,團(tuán)隊邊界可以變得更為清晰。DevOps 實(shí)際是一種文化上的變遷,打破了傳統(tǒng)開發(fā)與運(yùn)維之間的壁壘,幫助組織形成從開發(fā)、測試到部署、運(yùn)維這樣一個全功能化的高效能團(tuán)隊。

          來源:技術(shù)瑣話,內(nèi)容選自《架構(gòu)寶典》
          作者:王東
          王東,曾任融數(shù)數(shù)據(jù)北京研發(fā)中心 CTO,負(fù)責(zé)微服務(wù)、DevOps 以及大數(shù)據(jù)平臺的研發(fā)和管理工作。曾供職于 IBM、普元、Amazon、OneAPM 等國內(nèi)外知名公司。擁有 15 年以上的 JavaEE 編程和架構(gòu)設(shè)計經(jīng)驗(yàn),精通 DevOps 和微服務(wù),曾領(lǐng)導(dǎo)設(shè)計和開發(fā)普元 ESB 產(chǎn)品。熟悉支付相關(guān)的業(yè)務(wù)流程以及各個銀行和支付機(jī)構(gòu)的業(yè)務(wù)處理模式,熟悉應(yīng)用與支付領(lǐng)域的大規(guī)模分布式系統(tǒng)設(shè)計和開發(fā)方法,熟悉電子商務(wù)行業(yè)的業(yè)務(wù)模型。專注于客戶行為分析、營銷、產(chǎn)品和服務(wù)、客戶關(guān)系、線上銷售、物流配送、渠道整合、供應(yīng)鏈集成、售后服務(wù)、預(yù)測和推薦等各個電子商務(wù)主要環(huán)節(jié)的分析和設(shè)計,以及 IT 系統(tǒng)的規(guī)劃和實(shí)施。精通 DDD、Scrum 等軟方開發(fā)和設(shè)計方法論。


          【2021 IDCF 公開課招生ing】
          2021年《IDCF DevOps黑客馬拉松》北京、深圳、上海站開啟,還有《端到端DevOps持續(xù)交付(5P)工作坊》、《基于Boat House的DevOps實(shí)踐》、《“創(chuàng)新設(shè)計思維/Design Thinking”工作坊》、《敏捷項目管理實(shí)戰(zhàn)沙盤演練》等眾多公開課可以參加,快快報名吧~

          瀏覽 69
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲无码AV在线亚洲有码AV在线精品 | 男人天堂社区 | 看尻屄视频 | 日韩产的人妻AV在线网 | 人人妻日日摸狠狠躁视频 |