中国石油西南油气田西南油气田通信与信息技术中心 四川 成都 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开发的系统上梦想云平台,并且通过对云化步骤的分解以及打分,可以对不同系统的上云难度进行量化评估,对西南油气田的系统云化工作具有重大的指导意义。