劉月燦,孫建剛,竇祎楠,李偉良,彭嫚,田濤,王小平
(1.國家電網(wǎng)有限公司信息通信分公司,北京100761;2.北京中電普華信息技術(shù)有限公司,北京 102200)
隨著科學(xué)信息技術(shù)的不斷進步,云計算的發(fā)展在各行各業(yè)的應(yīng)用日益普遍。云平臺包括基礎(chǔ)設(shè)施服務(wù)、平臺服務(wù)以及軟件服務(wù)。云平臺為資源利用、成本控制、應(yīng)用程序效能、能源管理等提供了一種新的服務(wù)模式。如何利用好云平臺服務(wù),集成到應(yīng)用系統(tǒng)中,顯著提升研發(fā)人員的工作效率,一直以來都是信息系統(tǒng)研發(fā)設(shè)計的關(guān)注焦點。以容器技術(shù)為基礎(chǔ)結(jié)合微服務(wù)架構(gòu),為應(yīng)用的快速迭代、自動部署和快速交付帶來了全新、高效的體驗。目前亟需探索以云原生應(yīng)用架構(gòu)為基礎(chǔ)的研發(fā)設(shè)計模式,滿足業(yè)務(wù)快速響應(yīng)、業(yè)務(wù)敏捷迭代、進度管理透明及研發(fā)運維便捷等需求,為今后企業(yè)信息系統(tǒng)的建設(shè)指明發(fā)展方向。
云原生技術(shù)的發(fā)展,為信息系統(tǒng)的研發(fā)設(shè)計模式演進帶來了自上而下的創(chuàng)新。信息系統(tǒng)研發(fā)設(shè)計模式的核心架構(gòu)也由單體架構(gòu)演進為微服務(wù)架構(gòu),將進一步繼續(xù)演進到云原生架構(gòu)模式,如圖1所示。
圖1 業(yè)界研發(fā)設(shè)計架構(gòu)的演進
單體架構(gòu)是將所有的業(yè)務(wù)服務(wù)都放在一個單體中的業(yè)務(wù)邏輯耦合的架構(gòu)。DNS返回相應(yīng)域名的IP地址,用戶根據(jù)實際地址訪問相應(yīng)的服務(wù)器,最后服務(wù)器會做出響應(yīng)。
微服務(wù)架構(gòu)核心特點是服務(wù)相對獨立,抽象力度小。微服務(wù)互相之間是獨立的,當(dāng)某個微服務(wù)出問題時,短時間內(nèi)是不會影響其他微服務(wù)。微服務(wù)復(fù)雜度相對可控[1-2]。
云原生架構(gòu)主要以容器化技術(shù)Docker和Ku-bernetes為首的容器編排技術(shù),在微服務(wù)架構(gòu)的基礎(chǔ)上,增加資源隔離、容器網(wǎng)絡(luò)架構(gòu)、資源自動調(diào)度、彈性伸縮等能力。
云原生技術(shù)為信息系統(tǒng)建設(shè)的靈活性提供了支撐。參照國際CNCF的云原生技術(shù)圖譜,梳理信息系統(tǒng)建設(shè)所依賴的云原生組件。信息系統(tǒng)設(shè)計研發(fā)人員可以了解每種云原生技術(shù)功能,選擇符合需求的底層技術(shù)、基礎(chǔ)架構(gòu)、協(xié)同管理、安全系統(tǒng)等。
容器化技術(shù)是一種輕量級的虛擬化技術(shù),本質(zhì)是在同一個操作系統(tǒng)中進程隔離,可同時啟動多個功能單一的任務(wù),有效提升資源利用率。容器和虛擬機雖然都是計算單元,但容器具備秒級啟動、快速創(chuàng)建和刪除、快速分發(fā)和部署、依賴更少的資源、可以彈性伸縮等優(yōu)點。提供動態(tài)調(diào)度容器計算資源,容器交付與部署功能,實現(xiàn)“一次構(gòu)建、到處運行”和“增量更新、快速回退”?;诂F(xiàn)實需要,提供容器多節(jié)點編排、集群聯(lián)邦、隨機端口映射網(wǎng)絡(luò)、負載自發(fā)現(xiàn)等功能,具備應(yīng)用彈性擴容、快速自愈、敏捷部署等能力,大幅提升研發(fā)交付效率[3-4]。
在云平臺建設(shè)過程中,通過深度定制和大規(guī)模自主研發(fā),微服務(wù)架構(gòu)組件包含異構(gòu)多注冊中心、節(jié)點級服務(wù)發(fā)現(xiàn)、全鏈路灰度、同端口雙協(xié)議、Spring Cloud框架、Dubbo框架,實現(xiàn)高內(nèi)聚、松耦合、可復(fù)用、易擴容的微服務(wù)治理功能,具備十萬級服務(wù)的注冊發(fā)現(xiàn)和日均億級的服務(wù)接入能力[5]。
全鏈路監(jiān)控與追蹤的應(yīng)用可以有效減少服務(wù)中斷的次數(shù)、降低解決問題的時間,幫助技術(shù)人員盡快識別和解決故障,減輕故障對信息系統(tǒng)的影響。通過對應(yīng)用程序全方位的監(jiān)控分析,立即發(fā)現(xiàn)并糾正異常情況。包含日志組件、監(jiān)控組件、服務(wù)跟蹤組件、混沌工程組件四部分。其中日志組件實現(xiàn)獲取有關(guān)進程信息的日志記錄;監(jiān)控組件收集指標(biāo)、存儲、監(jiān)控及告警信息;服務(wù)跟蹤組件對全鏈路追蹤服務(wù)依賴關(guān)系以及流量在云平臺中的走向追蹤,包括延遲、錯誤等;混沌工程組件是一種軟件測試工具,在缺陷影響服務(wù)交付之前對其進行識別并加以修復(fù)[6]。
研發(fā)設(shè)計模式的核心作用和特點是使信息系統(tǒng)研發(fā)保持統(tǒng)一性,形成統(tǒng)一的架構(gòu)參考模型和協(xié)作管理模型[6]。本文探索以云原生技術(shù)為依托,形成基于云平臺的云原生研發(fā)模式,將容器化、微服務(wù)架構(gòu)技術(shù)、DevOps相結(jié)合,融合持續(xù)交付的理念,形成業(yè)務(wù)能力標(biāo)準(zhǔn)、服務(wù)開發(fā)規(guī)范、系統(tǒng)運行機制和運營服務(wù)的生態(tài)體系,為業(yè)務(wù)提供快速組合和低成本創(chuàng)新的研發(fā)設(shè)計能力,提高多團隊協(xié)作效率[7-8]。云原生研發(fā)設(shè)計模式把云原生看作一種構(gòu)建和運行應(yīng)用程序的方法,云原生研發(fā)設(shè)計作為一組云計算應(yīng)用程序研發(fā)的平臺模式,包含敏捷交付流水線、容器化、微服務(wù)架構(gòu)、持續(xù)調(diào)試與監(jiān)控、安全掃描等能力,如圖2所示。
圖2 云原生研發(fā)設(shè)計模式的能力模型
云原生研發(fā)設(shè)計模式可以幫助企業(yè)快速、持續(xù)、可靠、規(guī)?;亟桓稑I(yè)務(wù)軟件。采用云原生研發(fā)設(shè)計模式的信息系統(tǒng)研發(fā)在6個方面存在優(yōu)勢:
(1)可以使用云計算、云存儲等云資源。
(2)可以采用統(tǒng)一云原生架構(gòu)以及提供的各種工具、云平臺服務(wù),快速研發(fā)云原生應(yīng)用。
(3)可以組建多個高度靈活的小團隊組合,負責(zé)不同的微服務(wù)研發(fā)。
(4)通過研發(fā)與運維的結(jié)合(DevOps),實現(xiàn)對微服務(wù)有端到端的責(zé)任,提高持續(xù)交付的效率。
(5)通過全方位監(jiān)控,快速定位故障。
(6)通過使用云平臺云原生組件,實現(xiàn)容器基礎(chǔ)設(shè)施安全、容器編排平臺安全、鏡像安全、微服務(wù)安全[9-10]。
容器是一種新的軟件交付方式,將應(yīng)用和其運行環(huán)境以一個標(biāo)準(zhǔn)鏡像格式打包,能保證應(yīng)用及其運行環(huán)境的統(tǒng)一。微服務(wù)是應(yīng)用軟件架構(gòu)設(shè)計模式[3],推崇單一職責(zé)、服務(wù)自治、輕量通信和接口明確等原則。結(jié)合兩者優(yōu)勢,容器可以較好地配合使微服務(wù)易于開發(fā)和維護等[4]。容器化和微服務(wù)架構(gòu)是云原生研發(fā)設(shè)計的關(guān)鍵組成部分,前者相當(dāng)于基石,后者相當(dāng)于合作伙伴。微服務(wù)和容器化結(jié)合,主要有以下兩個優(yōu)勢,首先采用微服務(wù)架構(gòu),使用容器作為基礎(chǔ)設(shè)施,能夠?qū)崿F(xiàn)快速部署,快速迭代[5];其次提供了一種配置中心和注冊中心的標(biāo)準(zhǔn),容器天然地為微服務(wù)架構(gòu)提供了開發(fā)配置中心和注冊中心,而無需再開發(fā)。從開發(fā)工程師的角度,關(guān)注的是微服務(wù)架構(gòu),以微服務(wù)為基礎(chǔ)。從運維工程師的角度,關(guān)注的是容器化,以容器等基礎(chǔ)設(shè)施環(huán)境為基礎(chǔ)[11-12]。
DevOps是開發(fā)運維一體化的方法論。DevOps實現(xiàn)了項目開發(fā)、運維管理、環(huán)境部署的一體化,為軟件的在線開發(fā)創(chuàng)造了更好的環(huán)境。除了支持在線開發(fā)外,還實現(xiàn)鏡像管理、進度調(diào)控等一系列功能。DevOps促進工作思維方式的改變,為業(yè)務(wù)價值快速提升提供支持[6]。DevOps強調(diào)共同目標(biāo),以用戶價值為唯一評價標(biāo)準(zhǔn),有利于技術(shù)開發(fā)、技術(shù)運維、質(zhì)量保障等部門之間的溝通協(xié)作整合,保證產(chǎn)品功能及時實現(xiàn),確保成功部署和穩(wěn)定使用[13]。
云原生研發(fā)設(shè)計模式可以歸納為模塊化、可觀察、可部署、可測試、可替換、可處理這六個特質(zhì)。云原生研發(fā)設(shè)計包括敏捷交付流水線、容器化、微服務(wù)架構(gòu)、服務(wù)調(diào)試與分析、安全掃描等能力,充分利用了云平臺的云原生組件,云原生研發(fā)設(shè)計是以云平臺的平臺服務(wù)作為基礎(chǔ)支撐,敏捷交付流水線利用了CI/CD工具鏈組件,容器化利用了容器基座組件和安全防護組件,微服務(wù)架構(gòu)利用了微服務(wù)架構(gòu)組件,持續(xù)調(diào)試與監(jiān)控利用了監(jiān)控與追蹤組件,安全掃描利用了安全防護組件,如圖3所示。
圖3 云原生研發(fā)設(shè)計模式與云平臺服務(wù)的關(guān)系
科學(xué)技術(shù)的發(fā)展深刻地改變著人們的生活,在未來的發(fā)展道路中,這種變革會更加深入、更加迅速。依托DevOps流水線、容器化基礎(chǔ)架構(gòu)、微服務(wù)架構(gòu),打造支撐敏捷交付、研運一體化的高效研發(fā)能力;信息系統(tǒng)云原生研發(fā)設(shè)計模式在企業(yè)級架構(gòu)建設(shè)中得到充分運用,一大批生于云、長于云的新一代應(yīng)用系統(tǒng)陸續(xù)誕生,為創(chuàng)新發(fā)展提供高水平科技支撐。