1、云原生簡介
云原生,英文Cloud Native。字(zi)面直(zhi)譯為原生應用上云。
談起云原生的發展歷程,不(bu)得不(bu)提(ti)起:Pivotal公司和CNCF基(ji)金會。
Pivotal公司,一家(jia)低(di)調的以技術立(li)命、堅持(chi)開(kai)源的硬核公司。其最早于(yu)2013年提出(chu)云原(yuan)生(sheng)概念,并提出(chu)云原(yuan)生(sheng)4要(yao)點:容器(qi)化、微服務、持(chi)續交付(fu)、DevOps,為(wei)業內(nei)廣泛接收(shou)。
CNCF基金會,云(yun)原(yuan)生計算基金會,2015年(nian)成立(li),目的(de)是為了(le)引(yin)導和規(gui)范云(yun)原(yuan)生技術(shu)的(de)發展路線(xian)。其于2018年(nian)提出(chu)了(le)云(yun)原(yuan)生1.0版本定義(yi)。
其中,容器、服(fu)務網格、微服(fu)務、不可變基礎設施、聲明式API是(shi)云原生的代表(biao)技術。

從(cong)個人(ren)理(li)解(jie)來看,更(geng)趨向(xiang)(xiang)于(yu)CNCF對云(yun)原(yuan)生(sheng)的(de)(de)定義。Pivotal公(gong)司對云(yun)原(yuan)生(sheng)的(de)(de)定義有點局限性,可能其定義時(shi)更(geng)偏向(xiang)(xiang)于(yu)公(gong)司的(de)(de)Paas產品。

2、DevOps簡介
參考百(bai)(bai)度百(bai)(bai)科,對DevOps的定(ding)義為:
DevOps(Development和Operations的組合詞)是一組過程、方法與系統的統稱,用于促進開發(應用程序/軟件工程)、技術運營(Operations)和質量保障部門(QA)之間的溝通、協作與整合。它是一種重視軟件“開發人員(Dev)”和“IT運維技術人員(Ops)”之間溝通合作的文化、運動或慣例。通過自動化“軟件交付”和(he)“架構變更”的流程,來使得構建、測試、發布軟件(jian)能夠更加地快捷、頻繁和可(ke)靠(kao)。
這個定(ding)義是(shi)標準(zhun)的(de),籠統的(de),可能讀(du)完后還是(shi)對DevOps沒(mei)有一個直觀的(de)影響,下面(mian)通過(guo)一張圖,來進一步闡述(shu)DevOps的(de)內(nei)容。

首(shou)先(xian),計劃(hua)階段(duan):項目負責人發起(qi)功能開(kai)發計劃(hua);代碼階段(duan):開(kai)發人員開(kai)始按照計劃(hua)進行功能開(kai)發;構(gou)建階段(duan):功能開(kai)發完(wan)成(cheng)后,需要構(gou)建應(ying)用打包;測試階段(duan):對應(ying)應(ying)用包交給測試人員進行測試;
發(fa)布階(jie)(jie)段(duan):測試人員將應(ying)(ying)用(yong)包發(fa)布到對應(ying)(ying)測試環境(jing);部(bu)署階(jie)(jie)段(duan):測試驗證沒問題后,開始線上環境(jing)的應(ying)(ying)用(yong)更新。運營階(jie)(jie)段(duan):根據(ju)應(ying)(ying)用(yong)狀態,作出一些(xie)運維變更,比(bi)如應(ying)(ying)用(yong)突然網絡異常,需緊急(ji)恢復等。
最后(hou)是監控階(jie)段,發(fa)布(bu)后(hou)的(de)應用(yong)須(xu)有(you)日志搜索、鏈路查詢、告警功能等來保障應用(yong)的(de)運行態。
3、DevOps產品能力
從如上DevOps的定(ding)義,我們可(ke)以(yi)看出DevOps的能(neng)力貫穿(chuan)了軟件開發~測試~上線~監控的全流程。
通過(guo)自動化串聯(lian)研發(fa)過(guo)程中(zhong)的(de)各(ge)個活動,能(neng)打(da)通企業(ye)內(nei)部(bu)各(ge)平臺的(de)能(neng)力數據,如測試平臺、安全掃(sao)描(miao)平臺等(deng),最終高(gao)效完成應(ying)用(yong)的(de)研發(fa)交付(fu)。
這里,將DevOps能力按3個維度進(jin)行拆解(jie)來規劃建(jian)設,如(ru)下(xia)圖:

在Dev研(yan)發域,有(you)需(xu)求管理(li)、項目協作(zuo)、版本管理(li)、應用構建(jian)、制(zhi)品管理(li)、測試管理(li);每(mei)個大項下有(you)對應的目標(biao)能力。
在Ops運維域,有持續部(bu)署(shu)、監控告警、自助運維;持續部(bu)署(shu)項嚴格來說,也(ye)可以部(bu)分屬于Dev研(yan)發域。
在Metrics效能度(du)量域,有指標管理,工程師畫像,效能分析與預警等。通過(guo)對(dui)應維度(du)的指標度(du)量,可以為項目(mu)研發過(guo)程中找到(dao)過(guo)程瓶(ping)頸(jing),進而實現(xian)降本增效的目(mu)的。
如(ru)上,是DevOps產(chan)品建設能(neng)力(li)矩陣圖,具體的能(neng)力(li)建設程度(du)(du)可(ke)以參考(kao)企業內部(bu)場景需求度(du)(du)。也可(ke)以參考(kao)中國信(xin)通(tong)院發(fa)布(bu)的《研發(fa)運營一體化(DevOps)能(neng)力(li)成熟度(du)(du)模型》來建設。
4、DevOps平臺應用架構示例
企業從0到(dao)1建設(she)DevOps平臺能力,按最小版本(ben)迭(die)代原(yuan)則一般遵循的路線為:
1、實現最基本(ben)的(de)構建應用、發布應用能力,流水(shui)線引擎一般為(wei)jenkins;即為(wei)1.0階段(duan)
2、實現流(liu)水(shui)線能力,具(ju)備高可用性和擴展性;即為2.0階段
3、擴展流(liu)水線模板能(neng)力(li),增加掃描、測試(shi)、卡點等能(neng)力(li);即為(wei)3.0階段。
4、增加度(du)量統(tong)計,同時(shi)各能力指標對應信通院評級模型來升級建設;即為(wei)4.0階段。
這里,以3.0階段,分享一個具備一定可用性的DevOps平(ping)臺應用架構:

系統說明:
接(jie)入層:有web控制臺和OpenApi流量接(jie)入。
服務(wu)層(ceng):由(you)流水線引(yin)擎(qing)模塊(kuai)、CI模塊(kuai)、CD模塊(kuai)組(zu)成。CI模塊(kuai)主(zhu)要(yao)由(you)一層(ceng)服務(wu),封裝jenkinsApi來實現,底(di)層(ceng)由(you)Jenkins集群執(zhi)行,同時(shi)jenkins插件支(zhi)持。
CD模(mo)塊(kuai)應用發布,如(ru)果是容器,以(yi)k8s-API來觸發;如(ru)果是虛擬機或(huo)(huo)物理機,則以(yi)salt-stack或(huo)(huo)ansible或(huo)(huo)自建命(ming)令通道來觸發。
代(dai)碼(ma)動態掃(sao)描,主流有(you)jacoco等,可進行二次開發jacoco來(lai)擴展覆蓋率(lv)掃(sao)描功能。
存儲層:由對象(xiang)存儲、noSql中間件(jian)等組成。
5、后記
云原生技術的(de)盛(sheng)行推(tui)進了(le)DevOps技術的(de)蓬(peng)勃(bo)發展(zhan),同時也(ye)給DevOps過程提出了(le)越來(lai)越高(gao)的(de)安全、穩定、高(gao)效要求。
在如何構造高性能、高可(ke)用、高安全(quan)DevOps平臺能力方(fang)面,我(wo)們還有(you)很多路(lu)要繼續探索。