1. 程式人生 > >DevOps驅動的人保微服務平臺建設之路

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

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

引言:

2018年,我們在人保壽險進行了微服務平臺建設。針對保險行業,微服務建設有哪些需求,我們又是如何應用DevOps理念的,本文我就和大家分享一下我們在人保壽險的微服務建設之路。希望通過本文,大家能夠撥雲見日,真正的使DevOps成為企業生產力增長的助推器。

目錄:

一、專案建設背景
二、平臺技術棧及架構解析
三、通過DevOps對微服務應用進行CI/CD
四、總結

專案建設背景

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


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

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

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

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

4.分散式應用平臺同時解決了分散式應用的監控告警問題,對每一個應用服務進行實時的監控,出現問題能夠立刻進行告警通知、第一時間響應。

平臺技術棧及架構解析



經過專案初期的調研與考察,在人保壽險確定的平臺架構技術如下:

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

(人保壽險DevOps專案平臺技術棧)


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



(人保壽險DevOps專案分散式平臺技術架構)

 

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

(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,資料治理,移動架構原創技術分享