面对大量微服务和 API 环境,可视化工作流 StepFlow 如何提高研发效率?

阅读数:8701 2019 年 6 月 12 日

如今的很多应用架构都充斥着大量 API 和微服务,研发人员完成一项功能需要写很多代码才能调用对应 API,如果最初的设计文档不够完整,后续维护又需要花费大量精力和时间,整个开发流程繁琐且冗长。经过长期调研,UCloud 发现很多用户都存在上述问题,因此决定开发 StepFlow,通过可视化的方式编排 API 和微服务。

在传统的开发模式中,研发人员需要了解和学习不同 API 的具体使用方式和含义,开发完成还需要负责编译、打包并申请资源,过程复杂且耗时良久。经过长期调研,UCloud 发现很多企业内部都存在该问题,因此决定推出 StepFlow 服务。

本质上,StepFlow 是一种工作流服务。工作流很好理解,其由一系列步骤组成,一个步骤的输出充当下一个步骤的输入。此前,AWS 曾推出 Step Functions,可让开发者将多个 AWS 服务协调为无服务器工作流,以便快速构建和更新应用程序。据了解,UCloud 本次推出的 StepFlow 在熟练掌握的前提下,可将整个开发过程控制在分钟级别。InfoQ 有幸对 UCloud PaaS 组件平台研发负责人蒙晓净进行了独家采访,了解 StepFlow 的具体信息及 UCloud PaaS 平台的未来规划。

StepFlow:可视化改进研发路径

日常,开发人员会调用 API 进行原子操作,当遇到一些复杂场景,比如多步骤运维处理故障,构建跨业务流程处理等,需要将原子任务进行合理编排以实现场景需求。工作流服务可以根据需求进行流程调整,进而摆脱对流程进行硬编码,让任务编排变得灵活,高效,快捷。

相较于传统开发流程,StepFlow 对企业研发路径进行了重要改进。蒙晓净在采访中表示,研发人员只需要分析业务场景,并了解实现每一项功能的具体流程,即可在 StepFlow 中通过可视化的方式编辑、保存,最终由控制台调试并一键发布。在熟练掌握的前提下,整个过程所需的时间会被压缩在分钟级别。如果具体阐述 StepFlow 的特点,可以概括为如下六点:

  • 一个能够用可视化的流程来编排微服务和应用程序的服务平台;
  • 应用开发可以在不编写业务代码的情况下构建新的服务接口或应用程序;
  • 具备多版本管理的能力,避免流程变更影响现有业务,方便调试、发布与回滚;
  • 流程可用 Restful 的方式直接调用,并且通过 token 的方式进行调用管理;
  • 快速部署,保存后立即可用;
  • 不需要申请资源,也无需关心底层资源使用情况。

据了解,StepFlow 构建在 UCloud 的 PaaS 平台之上,其底层基于 Kubernetes 搭建,可根据负载情况动态扩缩容,借助容器很好地解决了整个产品高可用和可扩展性等基础能力,用户只需要了解自身业务需求即可,不需要操心底层架构。

回顾整个研发过程,蒙晓净表示,如果从大版本的角度来划分,可以看做经历了两次迭代。最初,团队对流程的表述语言进行定义,希望用户可以使用特定语言对工作流进行编辑定义,再由系统自动根据流程定义生成可视化的流程图做展示。然而,这一版本在实际推广中遇到了诸多痛点,单就学习成本就足以让用户望而却步。通过与用户的反复沟通,团队发现若能将编辑流程的过程可视化,可以有效解决这一问题,用户实际操作页面非常简单,所有步骤都可以通过拖拽的方式编辑,再通过与底层容器平台的集成,解决整体的基础能力,这就是目前可用的 StepFlow。

未来,蒙晓净透露,团队将继续降低用户使用门槛,虽然目前的产品页面具备完整使用手册和操作方法,但团队还是希望可以达到立即可用的效果;其次,结合更多用户实际使用场景,通过与用户沟通,了解其在不同场景所遇到的问题,并想办法通过 StepFlow 解决。

UCloud PaaS

用户业务稳定且处于增长状态,这才是云厂商真正带给企业级客户的价值

在云计算的发展历史中,云厂商初期的大部分焦点集中在基础设施建设层面,IaaS 也因此被比作云中的“高速公路”。如今,基础设施建设日趋成熟,业务稳定性成为云厂商的关注重点。采访中,蒙晓净认为,对企业而言,业务稳定性一定是最先看重的要素。对云厂商而言,用户的业务稳定且持续增长,才是云真正带给用户的价值,这同样体现在 UCloud 的公司文化(客户为先)中,UCloud 在云计算层面的很多创新均以稳定性为前提,在此基础上进行功能扩展和特性增加,这种思想同样影响了 UCloud PaaS 平台的研发过程。

PaaS 层的主要受众是研发人员,蒙晓净补充道,PaaS 层提供的服务,比如对象存储、数据库等都是实际业务搭建过程中需要的基础功能,UCloud PaaS 平台的整体设计理念是让研发人员只需要专注业务逻辑和应用程序本身,不需要花费精力关心底层资源和扩展性等问题。

对于目前讨论热度颇高的容器,UCloud 推出了容器云 UK8S 服务,这是一项基于 Kubernetes 的容器管理服务,可以部署、管理、扩展容器化应用,而无需关心 Kubernetes 集群自身的搭建及维护等运维类工作。UK8S 完全兼容原生的 Kubernetes API,以 UCloud 私有网络为基础,并整合了 ULB、UDisk、EIP、VPC 等云产品。

目前,UCloud 在 PaaS 层面提供存储、数据库、视频服务等多项能力,并推出一站式 AI 全服务 PaaS 平台 UAI。未来,团队有计划推出 API 网关等服务,这些功能的有机组合可以满足企业内部数据分析、机器学习、数据处理等诉求。蒙晓净表示,每一项新服务的推出都在 UCloud 内部进行了长时间迭代,以保证可以切实解决用户痛点。

结束语

上云不是最终目的,充分利用云平台的能力才是重点。

采访最后,蒙晓净表示,企业上云不是最终目的,充分利用云平台在扩展性和可用性层面的能力才是重点。通过客户经理、售前解决方案架构师和售后服务经理,UCloud 可以持续跟进企业上云的全部过程,并针对方案落地中的细节问题进行持续修改,以适应用户的应用场景,保证整个上云过程平滑、稳定,保证每个用户可以切实感受到云平台的价值。

采访嘉宾

蒙晓净,UCloud 创始员工,2012 年 3 月加入公司后成为 IaaS 存储产品负责人,先后负责云硬盘、云数据库、云内存存储、对象存储、分布式文件系统等多项存储产品的研发和运营。2017 年起担任 PaaS 线技术总监,负责 PaaS 组件平台相关产品的研发和运营。

收藏

评论

微博

发表评论

注册/登录 InfoQ 发表评论

最新评论

王成飞 2019 年 06 月 12 日 17:53 1 回复
api的定义及维护之所以困难,是因为api文档和api是两份源,那么必然存在数据不一致的情况。 1、通过定义接口的返回模板说明数据详情,根据代码注释生成文档,代码就是文档。 2、接口命名非常清楚,通过api本身自说明,在返回数据中也尽量定义每一个数据,减少list使用,统一使用dict。
感谢分享~ 0 回复
没有更多了