浅析流程编排的发展及应用
验“金”室
在日常的IT开发与运维过程中,经常会接触到“流程编排”这一概念,它不仅包括对业务进行功能编排,还包括对技术服务能力的编排,且随着信息技术的快速发展,流程编排的概念也被不断地延伸。针对这一趋势,本文重点研究了流程编排的工具、引擎与系统,并简单介绍其在银行系统中可能的应用场景和方式。
一、什么是流程编排
从字面上理解,“流程编排”就是把各种提供子功能的服务、组件以某种方式编排起来,并按照设定的流程依次完成其功能,从而实现某个整体的、复杂的目标,因此其常常也被称为“业务编排”“服务编排”或“工作流”等。但笔者认为,流程编排其实可以看作一个比较大的概念,除了业务上的流程编排之外,也包括流程编排工具、流程编排系统等在技术上对各项服务进行能力编排,还可以推广到支持定义流程的持续集成/部署工具。
简而言之,流程编排的出现主要是为了解决复杂场景问题,同时尽可能复用已有功能,减少重复开发,最终起到减小开发压力、提升业务效率、扩展功能场景的效果。需要注意的是,流程编排主要是为了集成多项功能来解决复杂问题的,但对于解决简单问题往往却并不适用,强行套用反而有可能增加问题的复杂度。
二、传统的业务流程编排
传统的业务流程编排也可理解为解决业务流程管理(Business Process Management,BPM)的问题,当前的典型代表是jBPM(java BPM)和Activiti。
其中,jBPM是指覆盖了业务流程管理、工作流、服务协作等领域的,一个开源的、灵活的、易扩展的可执行流程语言java框架,其在企业业务系统中有较多应用,属于非常成熟的产品。具体来说,jBPM中提供了嵌入式的工作流引擎,并制定了规范化的流程语言,因此在引入之后可以简化业务流程的开发和设计。从发展过程来看,该产品从jBPM5版本开始就完全放弃了jBPM4的基础代码,而是以Drools Flow作为核心流程引擎重新,目前已经更新到jBPM7版本。
与之相比,Activiti则是基于jBPM4构建的新的开源工作流系统,同样具有jBPM的多个优良特性,可以解决企业业务系统中的流程编排问题,并常被用来与jBPM进行对比选择。近年来,伴随信息技术的不断进步,jBPM和Activiti都开始逐步拥抱云服务环境,因此这两者也不失为云计算场景下的可选方案。
三、微服务流程编排框架
抛开传统的业务流程编排,还有一类流程编排框架是基于微服务的。微服务架构简单来说就是将大的应用服务分解为多个更小颗粒度的服务,且各个服务可以独立开发、测试和部署。但是,在实现某些具体的目标时,往往也需要对多个微服务进行编排和集成,因此可以说微服务的流程编排也是不可或缺的一项功能,其中的典型代表有Netflix的Conductor和Uber的Cadence。
一般来说,Netflix的Conductor可以用于协调基于微服务的流程,并提供了一个完整的、可定制化的编排框架,能够构建分布式的复杂流程,且执行过程可跟踪。同时,它还拥有非常丰富的流程交互能力,处理工作流可以扩展到百万个并发运行的流程,可以说性能十分强大。
Cadence则是Uber开发的一个分布式、可扩展、持久化且高度可用的编排引擎,能够以可扩展和弹性的方式执行异步长期运行的业务逻辑。但与Conductor不同的是,Cadence作为一个流程编排引擎,其核心的编排能力高度抽象,通常是将流程编排的具体工作交由开发者自行用Java或Go等语言编写编排代码实现,从而拥有更高的定制化能力,适用的业务场景也更多,不过因其对开发者的能力有一定要求,所以也在一定程度上增加了学习使用成本。
四、基于云原生的流程编排
随着云计算概念的持续火热,尤其是进入云原生时代后,各类流程编排工具、引擎、系统等也是层出不穷,这其中除了不断更新优化的老牌流程编排工具,比如前文提到的jBPM和Activiti,还有Jenkins X、Terraform、Open Service Broker API、Tekton、Drone等均如雨后春笋般出现,从而带来了更多的可能性。从功能上讲,这些工具除了具有基本的流程编排能力,还分别面向不同的云原生场景进行了适配,因此也更大地发挥了云原生的优势。
除此之外,各大云服务厂商也纷纷推出了基于其自身云服务能力的流程编排产品,比如
阿里云的资源编排服务(Resource Orchestration Service)、运维编排服务(Operation Orchestration Service)
蚂蚁金融科技的流程编排(STEPSERVICES)
腾讯云的应用与服务编排工作流(Application Services Workflow)
Amazon的简单工作流服务(Simple Workflow Service)等
可以看出,当前流程编排已经作为一项基本的云计算产品推出,并在降低云服务的使用成本、拓展业务场景上发挥了较大作用。
五、搭建自己的流程编排系统
前文简要介绍了各类流程编排产品,有核心的引擎、轻量的工具、成熟的框架,还有完整的系统,但是在实际的IT开发中,可能还是有必要打造一个供自身使用的流程编排系统,此外,往往有以下几个选择:
一是根据业务目标对已有的开源产品进行选型,引入成熟的框架、系统,并进行局部功能定制化,从而实现业务目标。这种方式上手比较简单,可直接利用成熟框架来少走弯路,但缺点是选型不一定能完全适用于业务目标。
二是基于开源的引擎与工具,自行搭建完整的流程编排系统,比如基于Terraform搭建基础设施层资源编排系统,基于Jenkins搭建内部持续集成、调度、部署的编排系统。这种方式相比上一种方式具有更高的灵活性和适用度,而且可定制的程度比较高。
三是自行设计核心的流程编排引擎搭建框架,完全服务于内部系统或业务系统,这不仅具有最佳的实用性和体验,且便于整合内部资源。例如,前文所述的一些云服务厂商的产品就是基于自研且并未开源,同时又与自身的云服务紧密结合,从而使其具有相当的竞争力,但要完全从零开始搭建编排引擎,对技术能力有着非常高的要求。
六、在银行系统中可以有哪些应用
在各大银行普遍拥抱云计算技术的当下,流程编排在银行系统中也可以发挥更多作用,除了银行业务系统经常使用的BPM等传统工具,结合新型的编排工具将可以实现更多可能性,例如:
一是对于互相有关联的银行类业务,结合流程编排将可实现更加有效的整合,或通过一个步骤完成之前多个步骤的内容,从而有效提升银行业务效率。
二是通过将银行服务抽取、拆分、模块化,可结合微服务架构开发业务流程集成平台,进而将各类子服务有效整合,低成本实现银行业务创新。
三是目前很多银行都在搭建中台,而将流程编排与中台建设进行有效结合,可充分利用中台的技术和业务优势,发挥出更大价值。
四是基于内部流程编排系统,可制定相关标准将内部系统的各类云上、云下服务规范化,进而打造内部自动化系统、巡检系统等,提升开发、测试、运维等的效率。
往期推荐
FCC30+
长按左边二维码
关注我们不迷路