蒲 偉
(中海油信息科技有限公司,廣東 深圳518068)
目前,海油發展在冊應用系統共106套,集團公司推廣應用系統24套,海油發展建設應用系統82套,覆蓋機關各部門、各所屬單位。但是,由于石油全業務范圍廣、產業鏈長、地域分布廣袤,在開展數字化轉型的初級階段多以滿足局部現實需求為主導思想,在探索建設初期因沒有頂層設計和統一規劃作為信息化建設的指導,致使我們在承擔海油信息化系統建設時呈現了和其他領域信息化建設同樣存在的“局部短時高效、整體長期低效”的問題,具體表現在:(1)信息系統建設了很多,雖然單個系統針對局部業務需求能發揮很好的作用,但由于各信息系統相對封閉,現有系統框架過于復雜,彼此之間很難集成共享。(2)信息系統的技術復用性不高,主要由于同一業務領域范圍內不同地域的具體業務存在個性化差異,不同生產單位建設了滿足涵蓋具體個性化業務使用需要的信息化系統,造成能滿足共性業務使用需要的信息系統出現重復建設的局面;由于各自選擇了不同的技術體系與開發環境,造成各個系統的技術復用性不高,同時也造成了技術的積累不易。(3)現有開發的信息系統由于采用不同的開發技術,造成每建立一套系統,必須保留一支運維隊伍,運維技術復雜、運維成本高,系統的后續優化難、升級難,最終導致建成的系統越來越難用。總而言之,生產信息化建設在探索初期雖然一定程度上帶動和促進了工業化生產的效率,但是隨著信息系統的增多,逐步出現了信息孤島多、信息共享難、運維成本高、整體效率低、技術積累少的現象。
海油信科要想扭轉現有的被動局面,就必須跟上發展趨勢,根據中海油甚至是石油化工行業的行業特征,構建石油化工行業細分的同時,對現有的業務系統以及后續的各個新的業務系統按照“小前臺”的思路進行輕量化設計,以業務為導向,重心轉向系統的使用價值,以及提升用戶的體驗。
隨著信息技術的發展,微服務架構得到蓬勃發展,從國外的亞馬遜、eBay等公司到國內的阿里巴巴、京東、騰訊等互聯網公司從事件中逐步優化完善,將以前傳統SOA架構的龐大單體應用拆分成便于運營的、開發運維一體化的架構模式。這樣的設計理念是將傳統復雜的業務應用功能,以無狀態的、獨立的業務組件形式分散到每個微服務之中,并將其部署在Docker容器中。運用微服務架構,能夠解決孤島式應用,實現資源共享。并且業務微服務架構能夠實現快速發布、快速響應業務需求變化,從而提升運維質量,降低運維成本,提高資源利用率,實現能力共享。
結合目前現有技術的發展現狀以及基于中海油核心業務的需求,研發出一套具有良好系統架構以及可以廣泛應用的企業級微服務開發框架,制定出一套嚴謹完備的微服務框架開發指南,用于規范團隊的開發能力,使開發團隊在統一的開發模式下進行軟件應用開發,結合海油業務需求,研發出石油石化工業應用,最終在海油業務系統中實施落地,助力集團公司“十三五”規劃中的“3個能力+1個中臺”、“穩敏”雙態的技術架構藍圖,最終實現為信科公司搭平臺、練能力、建隊伍的目的。
在石油石化行業中,技術不是阻礙業務實現及發展的主要因素。但是,這不是說業務實現了,就可以不關心技術了。為了能更好地通過數字化轉型實現公司的生產業務、經營管理、運營模式的提升與優化,除了考慮前端敏捷交付,作者認為還應該考慮平臺底層的架構和各層級的調用方式,主要從以下四個方面考慮技術選型,包括:跨平臺性、擴展性與集成性、穩定性開發模式等。
隨著行業內知識產權意識的提高,越來越多的企業開始考慮底層操作系統的性能和安全性。Windows操作系統只適合于微軟技術體系,大多應用是基于.NET架構的業務系統,這與開源的操作系統有所區別。其封閉性也給開源技術體系提供了發展機會和空間,這一發展趨勢也在不斷壯大。另一方面,開源操作系統(例如:LINUX操作系統)在跨平臺性和迭代性方面比Windows Server操作系統要好,減少了對封閉技術的依賴,這能有效解決核心技術“卡脖子”的問題,作為一個軟件開發框架的技術選型來講,跨平臺性是必備的核心要素之一。
所以,在技術選型的評估指標中,跨平臺性應列為核心的必備條件,這樣會讓我們的業務應用在所有底層操作系統上順暢運行,并能與其他異構系統無縫兼容。在石油石化傳統實體行業中,大型的企業級應用都是基于Java體系的開源架構,基本實現了跨平臺的兼容,這也是Java開源技術體系在大型企業級軟件應用中占具非常重要地位的原因。未來的發展趨勢也多半是在開源的技術架構基礎上形成自己特有的業務應用和體系結構。
軟件應用系統現在已經發展成為一個體系,從最開始的單體應用,到2000年以后發展SOA架構,到2015年左右互聯網企業迎來發展巔峰,微服務架構應運而生。Spring Cloud、Dubbo也是目前主流的兩套架構,把業務應用微化,形成敏捷的“小前臺”,穩定的“大后臺”,就目前的技術水平和發展趨勢來講,這是權衡擴展性與集成性的優化方案。
業務比較成熟穩定的單體應用,例如CRM、ERP、OA等大型單體應用,在技術架構和管理模式上都已趨于成熟,從傳統的SOA架構轉變成微服務架構,不僅需要了解技術架構的優化,更需要在生產業務、經營管理、運營模式方面創新發展,突破原有的束縛。每次創新都是原有技術架構的一次革命,甚至顛覆。行業內成熟的開發平臺廠商,對應的都具有一系列成熟產品和成功的應用案例。這也是我們做技術選型的一個可靠的評選標準。
互聯網軟件企業的敏捷交付、快速迭代適應了2C業務的靈活多變,這與傳統的石油石化行業還是有所區別的。在海油內部,技術的先進性是我們考慮的因素之一,我們更多地看中其技術的穩定性,以保證在實際生產過程的可靠、安全,規避因為“時髦”的新技術隱藏的技術風險和漏洞。同時,我們提供的是軟件技術服務,最不能忍受在運維過程中出現意想不到、控制不了的bug和漏洞。在技術選型時,穩定性也作為評估的核心必備因素。
傳統的開發模式,當我們開展具體的業務時,每個項目團隊都需要有技術、產品、市場等方面的基礎支持,而且都有相應的人員配置。隨著業務線條的壯大,許多項目內提升基礎支持的工作可能會有很大程度上的重復,尤其在海油發展內部各業務單位都在重復建設相同或者相似的業務應用,其底層數據不能共享,業務功能不能共用,導致資源浪費,重復投資。傳統系統架構,如圖1所示。
圖1 傳統系統架構
另外,基于傳統開發模式的業務系統,當用戶在使用業務系統遇到故障時,往往只能由負責業務系統研發的公司或運維團隊進行維護,但是現有業務系統眾多,經過現在多層的傳遞反饋,就會帶來信息的失真,大大延長了故障的處理周期,當問題得不到快速響應,可能會直接影響到公司業務的正常運轉。
微服務開發框架的開發模式,可以提煉各個業務系統的共性需求,并將這些打造成標準化的開發框架服務組件,然后以API網關的形式提供給各個業務應用調用。基于微服務平臺的系統架構,如圖2所示。
圖2 基于微服務平臺的系統架構
微服務開發框架將自動找到系統的運維服務團隊進行故障處理,并向用戶反饋相應的修復進度,這可以大幅縮減系統的故障修復時間,提升公司的業務品質。在海油云計算設施基礎上,開發搭建一系列與石油化工行業相關的,且具有高度模塊化、高可復用的服務組件集合,借助此平臺,能快速、高效、低成本地搭建起各種不同類型的業務系統,平臺既服務于海油內部的業務系統,同時也可以為外部業務應用及第三方業務應用提供統一的注冊和接口服務。
微服務開發框架提供了基礎組件使用,最初的目的是代碼重用,功能相對單一或者獨立,在整個系統的代碼層次上位于最底層,被其他代碼所依賴,所以說組件化是縱向分層,根據提供的基礎組件及海油核心業務需求,定制化開發出符合要求的業務組件,并在項目中實現高可復用性。
快速開發主要是為了適應用戶多變的需求,雖然在石油石化行業中,許多業務場景相對固定,那是因為現有技術還未取得突破,或者說沒有替代的產品,如果一旦發生技術革新時,我們的業務應用是否能適配易變的業務場景是急需解決的問題之一。因此,我們通過將固定成熟的業務場景不斷細化、拆分,逐漸淡化其使用狀態,通過敏捷交付的方式分解成每個微小的服務。這樣的顯著效果變化快、實現快、適配快,從而形成一系列的迭代。通過快速迭代開發,提升工作效率,最終實現快速發布,逐步形成海油的開發運維一體化模式。
可視化開發有別于傳統的代碼開發,能實時顯示編碼的結果,便于調試和整改。把通用的前端界面元素封裝成組件,直接供開發者調用。開發人員只需關心核心代碼的實現,把重復的、外圍的工作交由可視化工具實現,減少了大量不必要且重復的勞動,大大提高了開發效率。可視化開發為開發人員提供了豐富的組件庫,功能規范齊全,簡潔易用,節省了大量開發時間,讓開發人員有更多時間專注于高附加值的、核心的、底層的技術上。
基于微服務的開發框架是適合企業數字化發展的技術架構,具有從技術組件化到業務組件化完整的規范及流程,提供完整的基礎技術組件,組件之間采用輕量級通訊機制,進行信息交互,解決孤島式應用,實現資源共享。
微服務開發框架使用主流的前端框架,封裝常用的前端組件,后端開發采用微服務化、可視化的方式,提升軟件開發的工作效率,并且能同時實現APP端和PC端軟件的應用開發。
該框架具有跨平臺性、穩定性、可擴展性及集成性,為開發運維一體化提供了有力的保障,從而降低了軟件升級風險及運維的成本。同時,為開發者提供了快速啟動、開發的工具,該框架在技術選型上具有一定的先進性。
通過對微服務開發框架的研究,為信科在微服務開發技術上進行適用性探索,搭建微服務開發框架,體現信科的創新能力,同時為信科公司在自己的數字化轉型上鋪平道路。
通過建設微服務開發框架,打造一支具有承接項目能力的技術團隊,不但降低信科內項目外委成本,并且可以承接各產業的數字化轉型項目,快速高效地進行軟件開發技術服務工作,降低開發及運維成本,最終實現公司經濟效益目標和產業價值。我們從最初的項目能力,到更為高階的產品能力,爭取做到海油內,甚至行業的標桿,那是所有技術人員的夢想。更重要的是,在國家風起云涌的數字化浪潮下,我們需要更為先進的思想、更為大膽的舉措、更為高效的執行力、更為勇于承擔的魄力,一往直前,在不斷試錯糾錯、優化完善中改革自我,才能在信息技術產業中立于不敗之地。