要不要换种方式开发软件?
前 言
作为程序员,经常苦于项目交付,疲于应对各种需求,一路狂奔,很难有时间停下来思考与抽象,聊起来都是“累”;作为产品经理,最痛苦的莫过于梦醒之后无路可走,心里的苦只有自己知道;作为团队管理者,绞尽脑汁就想干两件事,降低成本,提高效率。现实与理想总是背道而驰,而我们却很希望做点什么去改变现状,摆脱困境,逆流而上,挖条护城河。总结过往实践,萃取优秀经验,抽象技术框架,构建全新方式。
这篇文章和大家聊聊,我们灵犀开发平台的实践探索。
01 背景
我们先简单说下灵犀平台的建设背景。
灵犀是一个面向“软件开发者”的开发平台,通过标准化能力+技术开放体系+可视化开发工具快速构建软件应用。
“软件开发者”是泛化的表述,可以是完全不懂编程的业务人员、有一定编程知识的从业人员、专业编程的开发人员,如业务咨询师、售前人员、产品经理、项目经理、测试人员、运维人员、开发人员等。随着云计算平台不断成熟完善,有了丰富和强大的软件开发工具,程序员能够更加专注于自己的业务逻辑编写,开发模式实现了升级。然而科技创新催生更多的智能化场景,促使用户个性化的需求增多,产品需求迭代的加速,传统软件开发模式在面对激增的需求已显得力不从心,暴露出很多短板。为了更好的解决这个问题,相信每个研发团队都在探索各个角度的解决方案,也一定积累了非常多经验和方法,沉淀出各式各样的通用框架和平台工具,但受限于开发模式的本质并没有变化,软件开发成本高、效率低、周期长等难题依然存在。总结起来,面临的主要挑战有:技术壁垒高、需求变化快、沟通环节多、缺乏快速开发工具、开发人员紧缺、联调成本大等。
云开发、Serverless、FaaS 等技术无疑都是这几年在开发领域最火爆的话题,“低代码\无代码”也无疑是当下备受关注的技术。它们能带来的弹性伸缩、低成本、快速开发、图形化、可视化、无运维、云端一体化、在线协同等极致开发体验,深深地吸引了众多敢于实践者。未来当所有的技术走在一起,就一定会擦出激情的火花。听过不如见过,见过不如做过。结合我们自身研发现状、产品特性和对开发技术的研究分析,我们希望通过对技术和基础能力进行全面地抽象、提炼、沉淀和标准化,形成可极速构建完整软件应用的一站式生产体系,在此之上,通过全新方式可以更加灵活、犀利地开发应用,灵犀开发平台应运而生。
02 平台定义
聊完背景,再说一下我们对灵犀平台的定义。
灵犀平台主要面向的是软件开发者,平台的终极目的是帮助开发者通过一种新的体验能够就地取材,随时随地快速开发产品,实现产品开发的多、快、好、省、准:
多 (提高产品占有率)
快 (提高产品开发效率,缩短产品开发时间,加快上市效率)
好 (提高产品质量,提高客户满意度,减少产品后期出现的问题)
省 (更低的产品研发成本,减少产品重复开发浪费)
准 (创新,满足细分市场客户需求,提高产品命中率)
赋予业务和客户面对新需求、新场景、新渠道构建新体系的极速响应力,提高新业务收益,以及组织级的研发能力。通过开箱即用的标准化能力高效赋能,通过通用版的快速移植复制能力服务业务新场景,通过技术开放共建体系灵活定制需求,再结合灵犀体系各能力可编排可拖拽可自由组合能力,极速响应各种业务、各种场景的开发需求。
灵犀平台搭建的根本愿景是利用数字技术手段对最佳实践进行萃取,将可用于复制与传承的经验、知识与技能提炼出来,形成平台化能力和标准化规范,实现技术和业务能力的最大化重用,采用人机协同方式,自动化、智能化快速构建软件系统。通过能力的高复用,再结合强大的技术开放共建体系,赋能开发者高效满足业务的个性化需求,从而加速新业务、新系统的搭建。以往新产品开发都是从零开始,开发前需要申请资源、环境配置、组件安装、脚手架下载等,开发过程中需要架构及功能设计、微服务开发、各端前端程序开发,同时还需要应对并发量、数据量、程序性能、扩展性、安全等非功能性需求,系统上线后需要兼顾系统的运行稳定、运维监控等问题,硬件和人力资源投入巨大,研发效率低,交付周期长。
借助灵犀平台高复用性的标准化能力及规范性要求,可以让业务开发者从大量重复性和相似性的工作中解脱出来,通过平台提供的技术扩展及开放能力,从而高效的开发业务个性化的需求。开发者从以往什么都要开发和维护,到只需要专注于个性化业务需求的定制开发,会大大减轻业务开发者的负担,极大提升业务新需求的响应速度。
那到底灵犀要做什么呢?回答这个问题,我们来说一下平台建设的四个核心内涵:
第一,底座建设
统一运行底座,实现统一运营、集中管控和柔性执行的闭环管理,支撑软件应用快速研发和交付的生产体系。提供配置机制、动态引擎机制、开放可扩展编程机制、二次开发及升级机制,从底层机制上保障软件应用系统架构的稳定和持续扩展能力。
第二,能力建设
脱离业务又被业务所验证过的通用能力,听起来有些抽象,其实是软件开发所需的一切能力的总称,前后端能力的总和,包括软件生命周期管理、领域系统架构、领域模型及数据源管理、微服务开发、系统集成、SDK 服务、组件管理、质量管控、前端模版、素材管理服务等一系列解决方案。
第三,工具建设
“工欲善其事,必先利其器”,基于底座和能力之上,需要建设配套的利器,它是载体也是工具链,提供或集成软件研发生产各环节上的工具,贯穿从设计、开发、测试、部署到运营整个研发流程,包括建模设计、开发协作、三码开发(高码、低码、零码)、精准测试、效能分析、智慧运维等工具。
第四,标准建设
专注于通用规范和开发规范的实现,构建统一的设计、开发规约,推动技术和业务能力标准化、规范化、最大化复用。通过标准体系整合、集成及连接业务和技术能力,搭建开放性和包容性技术体系,不断设计和开发出可共享、开箱即用的能力,释放技术价值。
总之,与传统技术平台相比,“灵犀”内涵更加丰富,涵盖范围更广,更能体现数字化开发平台特征。灵犀开发平台是一个基于云原生架构体系打造的开放式生态系统,是一个软件产品组合,提供一系列的技术能力和工具集,解决复杂软件研发和交付问题,让企业能够拥有更高效生产力,变革研发模式,提高研发效率。
03 关键技术
对于建设整个开发平台来说,我们需要几个关键的技术:
· 基于模型的正向研发
模型是平台的核心,是实现的基础,如果没有模型做支撑,开发软件就变成空谈。模型的定义是对系统、实体、规则或流程的抽象或表达,这种抽象或表达的目的能让人们表达想法或概念时更清晰,无歧义,增强沟通能力。从软件工程大的类别来分,模型类型可分为需求模型、领域模型、系统模型、数据模型、分析模型。我们开发平台要求模型一定是正式模型,是可以用数学形式来表达的模型,而不是图文类非正式抽象描述模型,集成模型、逻辑模型、决策模型、几何图形模型是平台用的较多的几种正式模型。建立正式模型的设计、开发、使用规范;建立软件应用跨生命周期阶段模型和数据的追溯关系,能够基于这些模型传递数据,实现需求驱动的正向设计和研发;建立模型发生变更时的追溯、问题分析机制;建立以互相关联的模型为中心,让关联的人员能够基于模型进行协同开发。
· 全栈全码研发工具
工具是第一生产力,工具能够提高开发效率,同样能改变我们的生产方式。打造工具成为平台建设中的重中之重,其中全栈全码可视化研发工具最为关键。依据自身实践经验,我们将代码开发分为高代码、低代码和零代码三种类型。从分层架构分,具备全栈开发能力,前后端一体化,具备前端代码、函数、服务端代码在线开发;从角色划分,面向专业开发人员提供高代码工具,面向有一定编程知识的人员提供低代码工具,面向没有编程知识的人员提供零代码工具;从阶段划分,高代码和低代码工具偏向在软件开发态使用,能够完成从 0 到 1 的建设过程,零代码工具侧重运行态使用,完成定制需求开发和维护;从支撑复杂度划分,高代码工具具备纯代码编写能力能够支撑非常复杂的逻辑编写,低代码工具具备拖拽可视化能力能够支撑中等复杂场景开发,零代码工具采用图形化编程,所见即所得更适合简单场景。
全栈全码工具采用统一架构、统一语言、统一技术实现,各工具形似神不似,彼此之间并不是割裂孤立存在,它们穿插在整个软件应用功能开发过程,一个应用或一个场景可由一个工具或多个工具串接起来完成。好比盖一幢写字大楼,建筑设计师、建筑工负责把楼的主体结构盖起来,再由装修工完成大楼的高阶装修,最后使用大楼的客户根据自己喜好风格对各自空间进行场景化装饰。这样就完成一幢大楼从盖到用的过程,不同的人在不同的阶段使用不同的工具方法,对同一个物体进行构造设计、加工处理,最终可完整交付使用。软件开发过程也是类似,只是相对会更加复杂,为保障高效高质的交付,开发过程需要利器工具。
· 全自动测试与运维
为了满足自动化测试和运维要求,我们为平台自身以及平台开发出的软件都带上了“体检中心”,面对系统复杂的连接和运行,提供了统一的、高兼容性的管理控制平台,通过通用自动化数据收集器,能够自动、标准地采集到数据,实现更高层次的追踪、追溯和控制,与自动化测试工具或运维工具无缝集成,以更快速、精确的方式进行数据传递与整合。在自动化测试方面,传统自动化测试模式是需要自己写脚本,明确数据流和业务流之后,把多个测试脚本串起来。再用一个运行平台进行测试输出报告。平台内置构建引擎提供自动化测试用例脚本自动生成、自动变更,执行测试用例可完全自动化,包括测试结果的采集与实时查看。在自动化运维方面,打造了一套独有的业务链路追踪组件,同样采用数据收集器,可自动地将业务链路上所有请求调用记录抓取下来,实时感知用户操作行为、服务请求调用链路、数据变更轨迹,以度量来驱动运维,将日常的运维工作全部自动化。
· 全链路全景可观测性
在平台上构建完一个系统后,需要对其全生命周期的操作历史包括操作历史记录、构建和维护配置状态、系统运行数据、系统版本以及更多提供服务和维护功能的完整图像。为此,我们建立了一个可观测的数字化模型,可以用综合性的、多维度的数字表示。观测贯穿于整个软件系统生命周期,从需求分析、设计、开发、测试到部署上线运行,全栈都可以观测。譬如在开发度量领域,低代码实现编码过程的自动化,结合代码数据化开发理念,传统开发代码脚本方式转换成了可以任意存储且可追溯的数据,将开发的产物作为数据看待,这些开发的数据成为了最重要的观测数据来源,每个产物都具有可被观测的属性,产物之间也具有可被量化的关系。这些产物、属性、关系就组成了特定领域的观测模型。我们利用图计算功能,能够形成更完整更清晰的图像,可以对日常开发工作做一些智能的度量,看看时间都花费在哪里,可以评估我们的研发效率、健康状况、产能和质量等。
· 跨团队跨链协同
无论是业务中台能力中心的开发,还是上层应用的构建,通常都需要多角色、跨团队、跨地域共同配合来完成。需求通常可以分为共性需求和定制需求。同一个应用的支撑团队又分总部+省份或产品线+办事处。每个团队会包含多种角色人员,如项目经理、业务咨询师、架构设计师、前端开发、后端开发、运维人员等。更复杂的场景,同个应用会在多个地方开发、安装和部署。哪些需求由哪个团队哪个角色来开发?诸如此类的疑问会伴随整个应用迭代开发过程。我们的平台需要整体拉通,让所有角色人员协同,在统一平台上进行协同开发,辅以多租户基于策略访问控制方法、资源安全隔离、多级授权模型、数据加密配置模型、代码动态生成及执行技术、应用架构扩展点机制、分布式 ID 生成算法等技术手段,允许跨团队成员协同并行完成任务,从而提高团队成员的协作效率。
· 知识固化和资产沉淀
将业务目标抽象为计算机可以理解和识别的关系和结构,便于编程知识的积累与固化,不断设计和开发出来越来越多的页面、服务、组件、数据、模版等沉淀到资产共享体系,可以最大化复用,不断为开发者赋能,注入活力。通过能力聚合服务技术,实现多样化的能力接入、编排、加工和个性化逻辑定制,以集成外部业务服务和业务能力,不断为平台输送各种可复用的业务能力。平台提供资产集市,提供各种各样的资产服务,面向各生态提供互联互通的标准化能力。由于平台其低代码或零代码特性提供了快速开发的环境,可让更多的人便捷的在云端完成应用程序的搭建、部署、使用、更新和管理。
· 系统集成互通连接器
在微服务架构中,服务之间势必需要集成,而这种集成关系远比简单的 API 调用要复杂。在应对复杂的系统集成对接,一方面需要抽象出一套标准的接口,实现外部系统的统一对接,以减少对平台或应用的功能代码的改动;另一方面需要有完善的容错和重试机制,保障系统的连续性。为了保证平台的独立性、降低对外部系统的依赖、提高集成的效率和系统的容错性,我们设计了一个服务连接器,来统一实行和管控与第三方系统的对接。连接器一端连接标准接口,另一端根据所集成系统的对接方式进行适配对接。连接器就可以起到防腐的作用,同时也屏蔽了因对接系统的不同而带来的差异。连接器提供了低代码集成引擎。应对企业间、系统间复杂的对接业务,我们的平台为集成开发者提供了以集成流为核心的集成工具,可以在线进行协议转换适配、数据结构创建、逻辑编排、数据映射等,使得业务的对接工作以低代码、可视化的形式完成。同时可将开发的服务沉淀到资产库,以快速获取复用,最大程度降低二次开发成本。
04 能力图谱
灵犀开发平台整个体系覆盖在线建模设计平台、全栈全码可视化开发工具、全自动化测试与运维工具、应用全生命周期管理平台、多团队多成员协作管理、跨系统跨应用集成管理、组件资产管理、平台扩展及业务二次开发管理八大核心功能板块。
平台功能
· 模型设计平台
提供数据模型、业务模型、集成模型的在线设计工具,基于模型可以快速定义业务对象、业务场景、业务流程、业务规则、业务事件等。
· 三码融合开发工具
提供云上纯代码、低代码和零代码三码融合开发模式,具备可视化、图形化、组件化的编排工具,以“拖、拉、拽”的方式来快速构建应用。
· 组件资产管理平台
能够将平台上不断设计和开发出来的页面、服务、组件、数据、模版等产物沉淀到资产共享平台,并以地图形式呈现给开发人员,实现能力资产的最大化复用,不断为开发者赋能。
· 自动化测试与运维
通过通用自动化数据收集器,能够自动、标准地采集到数据,实现更高层次的追踪、追溯和控制,与自动化测试工具或运维工具无缝集成,以更快速、精确的方式进行数据传递与整合。
· 运营管理服务
提供多租户、多环境、多版本运营管理能力,开发人员在平台可以拥有独立的环境资源,数据相互隔离,保障应用开发的稳定。
· 多人协作开发
基于多级授权控制模型,允许在租户下创建子账号,支持同一租户下多成员多角色在线协作开发。
· 全链路调测
提供调试跟踪工具,能够实时感知用户操作行为、服务请求调用链路、数据变更轨迹。
· 系统集成与连接
支持门户、API、数据等多种集成方式,提供集成工具,可以在线进行协议转换适配、数据结构创建、逻辑编排、数据映射等,与业务系统的对接工作可以采用低代码、可视化的形式完成。
05 实践案例
灵犀平台已经在浩鲸内部的多个项目中使用,下图是在线投诉诊断应用的案例,应用业务场景简单来说,在客服管理领域,借助投诉处理经验沉淀,实现了一键查询、一键诊断即可输出投诉处理报告。节省了客户投诉处理过程中分析定位问题的时间,极大提升了处理效率。从上线以来,平均每周处理 50 多笔投诉单,每个单原先平均耗时 20 分钟,上线后平均耗时 10 秒,效率提升 120 倍,从业务角度收效明显。
案例业务场景
整个过程我们投入 2 人大概用了半个月的时间从需求分析到上线,共梳理了 6 个核心场景,2 个业务流程,1 个界面 31 个子页面,21 个业务服务。全过程都是通过平台提供的工具完成开发,包括应用界面、逻辑、流程。从效率角度看,直观效果就是极大地缩短了开发周期,提升开发效率,实现了可复用的组件,整个运维工具也得到了复用,减少了需要重复劳动的研发场景。
06 经验分享
随着平台的不断迭代,在研发过程中会遇到一些非常有挑战性的问题,关于平台建设方面,我们总结几个在设计上需要关注的点做参考。
第一,关注操作体验
平台因覆盖面较大,涉及技术较多,要降低使用门槛,设计上需要考虑极简。平台是否好用、是否便捷、是否操作简单,即易用性是非常重要的设计原则之一。除了兼顾可视化界面,友好、直观、形象地展现,还需要通俗易懂的导航步骤,操作不卡顿,站在不同角色使用者的角度考虑体验要求。
第二,关注架构设计
架构是基础,越基础的东西越影响全局,为了避免牵一发而动全身,平台搭建起初要尽量轻量级,快速试错,快速开发,不过多关注所谓的高并发、高可用、高性能等,这个阶段系统稳定性最重要,出现优化重构的时候就能发挥出更高的效率。此外,相关技术最好是开源主流技术和业界同步,这样方便开发者上手。
第三,关注组件扩展
在实际的开发过程中,平台自带组件无法满足所有的业务场景,需要允许用户自定义业务组件。组件扩展会涉及框架改动,而框架的改动不是开发人员轻易就能实现,需要很长时间。因此,平台开发前需要定义好组件设计规范,提前了解清楚开发限制等,少走弯路。
第四,关注系统兼容
作为平台的使用者,在使用之前都会提出一个类似问题,低代码平台或产生的应用能否与原系统融合,程序是否可以相互访问,例如开发语言和界面样式的一致,新旧界面和服务能够集成。所以需要一套完备的二次开发对接体系,可以兼容各种技术各种不同的系统。
第五,关注服务运维
低代码优点很多,但缺点也非常明显。通过解释执行和生成源码方式开发,无论是静态代码生成,不允许修改,还是动态反射技术实现,支持可逆计算,都不能回避一个问题,程序如何调试,如何维护?因此需要对平台产生的应用中每个页面,每个服务,每条数据的执行情况需要有监控和报警体系,在出现了问题后确保能够被主动发现。
第六,关注安装升级
平台在私有云部署过程中,因不同云平台对接会有不同的对接要求,所以平台安装部署脚本的标准化,一键化尤为关键,安装完成后还需要提供向导,引导开发者做一些初始化设置。平台上线推广后,会不断构建很多应用出来,那么平台的升级过程就必须考虑向下兼容,程序数据不割接等疑难问题。
07 未来规划
灵犀平台整体上还处于刚刚起步阶段,也是我们开发实践的初步尝试,目前已经完成了几个版本迭代,正式投入实际生产使用。从“效率”、“成本”、“体验” 三要素来规划建设方向,围绕“提高效率、降低成本、缩短周期、提升质量”目标来开展实践。接下来会在复用最大化、高度自动化、体验智能化、协同在线化等技术方面继续探索演进。
以上仅展示产品阶段性成果,设计思考、设计理念等,最难的阶段不是现在,升级打怪之路也没有结束,以价值为驱动,我们还需要花更多时间去认真地深刻地研究它、理解它、感知它。期待再会!
版权声明: 本文为 InfoQ 作者【鲸品堂】的原创文章。
原文链接:【http://xie.infoq.cn/article/4aaff57944df35abfa95a2177】。文章转载请联系作者。
评论