DevOps驅動的人保微服務平臺建設之路

轉載本文需註明出處:EAWorld,違者必究。

引言:

2018年,咱們在人保壽險進行了微服務平臺建設。針對保險行業,微服務建設有哪些需求,咱們又是如何應用DevOps理念的,本文我就和你們分享一下咱們在人保壽險的微服務建設之路。但願經過本文,你們可以撥雲見日,真正的使DevOps成爲企業生產力增加的助推器。

目錄:

1、項目建設背景
2、平臺技術棧及架構解析
3、經過DevOps對微服務應用進行CI/CD
4、總結

項目建設背景

根據保險行業發展趨勢,目前保險交易已經呈現高頻化、碎片化、場景化等特色,對系統的處理能力、容量、業務連續性、需求相應速度、運維響應速度提出了更高的要求。爲了提升項目建設的效率、質量、安全性、技術水平,縮短項目建設週期,下降項目建設成本,進而更好的支持業務與技術的發展與創新,人保壽險急需建設應用和服務的技術標準和分佈式的應用平臺。

前端


那麼建設分佈式的應用平臺有什麼好處呢?

1.分佈式應用架構解決了服務器性能的問題。單臺服務器的性能畢竟有限,綜合利用多個節點的處理能力,才能提升總體的服務能力。

2.將不一樣的業務模塊部署在不一樣的服務器上,或者同一個業務模塊分拆多個子業務,再部署在不一樣的服務器上,以此來解決高併發的問題。這樣一來,模塊的內聚性更高,更多的關注自身業務,模塊與模塊間耦合度更低,減小了業務複雜度。

3.分佈式應用平臺對分佈式應用有結構化的管理,相比傳統的管理模式,大大減輕了運維人員的負擔,應用配置的修改發佈能夠經過友好的可視化頁面輕鬆完成。

4.分佈式應用平臺同時解決了分佈式應用的監控告警問題,對每個應用服務進行實時的監控,出現問題可以馬上進行告警通知、第一時間響應。

平臺技術棧及架構解析

通過項目初期的調研與考察,在人保壽險肯定的平臺架構技術以下:

分佈式平臺主要以Spring Cloud組件爲技術支撐,主要用到Eureka做爲註冊中心、Feign用來作服務調用客戶端、Ribbon來進行客戶端的負載均衡,Hystrix用來做熔斷、限流和降級。搭配配置中心Apollo、斷路器監控中心Hystrix-dashboard 和Turbine,造成一套完整的分佈式微服務架構。

git

(人保壽險DevOps項目平臺技術棧)github


在日誌的採集和處理方面,咱們採用了常見的ElasticSearch+Logstash+Kibana的架構,利用ELK一站式解決方案的便利性,爲整個平臺提供監控。至於開發測試階段的持續集成、持續部署,咱們經過DevOps+Maven+Git/SVN來完成。

docker

(人保壽險DevOps項目分佈式平臺技術架構)npm

 

分佈式應用邏輯架構總共由如下這幾部分組成:

(1)服務網關API Gateway,在微服務架構中,全部的服務都變成了一個個細小的API,API Gateway做爲總體架構的重要組件,它負責對應用的API進行統一的管理

(2)微服務平臺,微服務平臺負責應用服務的註冊發現、負載均衡、應用配置的管理、服務調用鏈的監控和告警

(3)PaaS平臺,PaaS做爲業務基礎平臺,負責提供公共的各種中間件服務

(4)管理門戶,提供友好的可視化界面對應用服務進行登記、配置管理、受權以及日誌監控

(5)DevOps,高效自動化地完成微服務應用的持續構建和持續部署。

(6)SDK,爲了在應用系統技術架構上造成統一的技術標準規範和統一的規劃,彌補應用開發和運行缺少的技術平臺短板,咱們向人保提供了SDK腳手架以及開發手冊,下降了開發分佈式應用的門檻,有效縮短了項目的進度

(7)流程和規範的制訂,讓項目的全生命週期獲得管控,項目在持續構建的過程當中不斷精益提高,在持續發佈的過程當中始終能夠提供可用的穩定的介質版本

安全

(人保壽險微服務平臺部署架構)服務器


在人保壽險微服務平臺中,咱們明確了用域-系統-應用架構來進行微服務管理的部署模式。

針對人保壽險不一樣業務領域,例如壽險域、車險域分爲不一樣域進行業務隔離;

每一個域下根據公司的業務板塊建立業務系統,業務系統這個定義在不一樣的客戶處有不一樣的定義,有的叫項目、有的叫系統羣,實質上都是由一組微服務應用構成的;

業務系統下部署微服務器應用,每一個應用部署多個應用實例造成高可用,共同來支撐業務。

經過DevOps對微服務應用進行CI/CD

微信

(DevOps對微服務應用進行CI/CD)架構


經過DevOps進行分佈式應用的構建,能夠很方便地進行項目構建、發佈流水線的編排,可讓開發人員將更多的工做重心放在代碼業務邏輯上,大大提升了生產效率和質量,解放了開發運維人員的生產力,減小了手工的重複勞動,避免了由於操做不當帶來的損失。

對於人保壽險微服務應用進行持續集成和發佈,咱們很好地利用了DevOps的特色,本期項目DevOps的目標是經過CI\CD,對微服務類應用進行自動構建、自動發佈、自動部署,減輕開發人員運維人員的負擔,提升項目的效率和質量。

持續集成

持續集成模塊的功能主要有代碼庫管理、構建定義管理以及構建實例管理等。在構建定義管理模塊中,DevOps平臺將構建任務分紅了四種類型:

編譯類任務:Maven、Ant、Gradle、純前端構建等
測試類任務:Sonarqube、Jmeter、Selenium等
打包類任務:Npm、Archive、Docker等
其餘工具類任務:Copyfile、Shell、介質提交到Nexus倉庫、介質上傳二方庫等。

在每一個構建定義上能夠選擇若干個須要的構建任務,經過原子步驟編排,組裝成一個完整構建流程。代碼提交時觸發構建(支持gitlab、github、svn等經常使用代碼庫版本管理工具)、日構建等不一樣的構建觸發策略等,支撐了持續集成的完整鏈路打通。

自動化部署

針對人保壽險的微服務應用,DevOps定製化了一套持續集成的構建定義。

(1)首先從代碼庫拉取代碼,支持從Git,SVN拉取
(2)接着是構建,可使用maven、ant、gradle構建,前端支持npm構建
(3)而後經過SonarQube進行代碼的質量檢測,生成質量報告
(4)最後進行編譯介質的發佈,在部署機遠程執行腳本進行介質的發佈

總結

截止到如今,人保壽險的一體化項目、微信項目、大數據項目都已經使用DevOps進行項目的持續集成、持續部署了,天天進行近百次構建,大大提高了工做效率,獲得了客戶的一致好評。隨着DevOps的推廣,未來會有更多的項目對DevOps進行使用。 那麼,怎麼才能更好的編排構建流水線?怎麼才能讓DevOps更貼近咱們的業務,更好地與分佈式平臺整合?自動化運維的路還很長,而作好DevOps,就是向自動化運維邁進的第一步。

關於做者:李燕鵬,普元研發工程師,曾參與萬達DevOps、國開PaaS容器雲、人保壽險微服務等項目,對雲計算相關技術有濃厚的興趣,熟悉Spring boot, k8s,docker等技術。

 併發

 

 

關於EAWorld:微服務,DevOps,數據治理,移動架構原創技術分享
 

 

 

相關文章
相關標籤/搜索