中國石油西南油氣田西南油氣田通信與信息技術中心 四川 成都 610051
SOA基礎工作管理平臺是以SOA技術架構為核心,通過數據服務總線 (DSB)整合集成所有數據源,形成覆蓋油氣田生產、經營、科研、辦公所有領域的數據全集;再通過企業服務總線 (ESB),開發和集成不同的業務應用,從而滿足各類業務應用。勘探開發夢想云是中石油上游板塊構建的信息化建設藍圖,旨在實現上游全業務鏈資源共享、數據互聯、技術互通、業務協同與智能化發展,構建共建、共享、共贏的信息化新生態。西南油氣田目前已開展基于夢想云的區域數據湖建設,SOA和夢想云的融合勢在必行[1]。
SOA即面向服務的架構(Service Oriented Architecture),它是一個組件模型,它將應用程序的不同功能單元(即服務)進行拆分,并通過服務之間定義的接口和契約聯系起來。SOA是一種粗粒度、松耦合服務架構,服務之間通過簡單、精確定義接口進行通訊,不涉及底層編程接口和通訊模型。SOA可以看作是B/S模型、XML(標準通用標記語言)的子集/Web Service技術之后的自然延伸。
西南油氣田平臺建設以IBM企業信息門戶、數據服務總線、企業服務總線、消息中間件、流程管理工具5個SOA套件為核心,擴展了統一權限管理和服務管控功能,建立了主元數據管理系統,從而有力支撐了公司數字氣田建設的數據整合與應用集成。
夢想云采用微服務架構。微服務架構是最佳幾年剛剛興起并逐漸成熟的一項在云環境中部署應用和服務的新技術。
企業和服務提供商都在尋找更好的方法將應用程序部署在云環境中,微服務被認為是未來的發展方向。通過將應用和服務分解成更小的、松散耦合的組件,使其可以更容易升級和擴展。
不對原有SOA系統的進行改造,只進行部署升級和服務接入,以虛擬機的方式把SOA系統部署到云環境中,并把SOA的ESB上的服務接入夢想云API網管,完成用戶對接。
(1)遷移到微服務架構。SOA應用遷移到微服務架構的過程。夢想云已經定義了一整套基于Spring Cloud的微服務框架,這一步遷移的工作就是如何將微服務框架應用到現有系統上。
(2)確定整體架構。在開始之前,需要確定未來的應用整體架構。
應用層如果是基于Java語言,并使用Spring進行開發的,那么,使用Spring Cloud微服務框架是首選,常用的組件都已經包含。
后端的服務,盡量選用已經在平臺發布的各種組件,或者對云平臺友好的組件。如PostgreSQL,MySQL,Redis,RabbitMQ,ZooKeeper,Kafka,ELK,Pinpoint。
如果是基于.net框架的,暫時未定。
(3)前后端分離。是基本的要求,前端僅負責展示,輸入校驗和頁面的控制,不建議包含業務邏輯功能。后端通過Restful API暴露給前端,依據定好的開發接口規范,前端和后端的變化被隔離。
我們不對前端的框架做限定,只是假設已經使用了比較成熟的組件/框架,有成熟的調用后端restful API的各種API。如果條件不具備,最好將前端也遷移到成熟的框架,目前而言,我們推薦Angular,Vue.js。
前后端分離之后,前端可單獨部署在API網關外,也可部署在API網關內,同時在水平伸縮上也具備了足夠的靈活性。此外,前端的訪問壓力通常都比較小,可以完全不受后端部署架構的影響。
(4)后端組件。后端組件包括持久化,緩存,消息隊列,日志。這些組件在平臺已經有現成的鏡像,可直接部署使用,具體請參考《瑞道平臺使用手冊》。
(5)業務分拆。應用的業務分拆可遵循DDD方法論,通過領域建模的方式確立服務地圖,服務地圖就是最終我們需要建立的業務相關的微服務集合。
為了避免不必要的復雜度,我們推薦逐步分拆,先分拆一個微服務作為嘗試,然后再陸續分拆出其他的微服務。
(6)應用遷移。我們假設應用至少是分層設計,Controller,Service,DAO三層,各司其職。這時,整個應用還是單體風格,應用遷移主要有五個步驟:框架準備、統一認證授權、對外部系統提供接口、微服務間交互和調用API。
SOA架構和夢想云微服務雖然在系統顆粒度、集成方式等方面存在一定的差別,但是通過虛擬化和完全云化的方式,可實現基于SOA開發的系統上夢想云平臺,并且通過對云化步驟的分解以及打分,可以對不同系統的上云難度進行量化評估,對西南油氣田的系統云化工作具有重大的指導意義。